Отношение шансов и 95% ДИ для взаимодействия в логистической модели в R

#r #sas #logistic-regression

#r #sas #логистическая регрессия

Вопрос:

Я запускаю логистическую модель с взаимодействием между дихотомической и непрерывной переменной:

 aidslogit<-glm(cd4~ AGE ANTIRET AGE*ANTIRET, data = aidsdata, family = "binomial")
summary(aidslogit, digits=3)

Deviance Residuals: 
   Min      1Q  Median      3Q     Max  
-1.870  -1.190   0.771   1.056   1.586  

Coefficients:
                Estimate Std. Error z value Pr(>|z|)    
(Intercept)    -0.599565   0.313241  -1.914   0.0556 .  
AGE            -0.008340   0.008849  -0.942   0.3459    
ANTIRET         1.308591   0.198031   6.608  3.9e-11 ***
AGE:ANTIRET    -0.013547   0.005507  -2.460   0.0139 *  
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 9832.8  on 7264  degrees of freedom
Residual deviance: 9434.9  on 7261  degrees of freedom
  (654 observations deleted due to missingness)
AIC: 9442.9

Number of Fisher Scoring iterations: 4
  

Что я хотел бы сделать, так это рассчитать OR и 95% CI для использования антиретровирусных препаратов в разном возрасте, то есть в возрасте 20, 30 и 40 лет. Я думаю, я мог бы вывести ковариации и сделать это вручную, но, похоже, должен быть способ сделать это автоматически.

Для сравнения:

В SAS это выглядело бы так:

 proc logistic data=aidsdata descending;
model cd4=antiret age antiret*age;
oddsratio antiret /at (age=20 30 40);
run;
  

Комментарии:

1. проверьте emmeans пакет.

Ответ №1:

Для регрессии без взаимодействий отношение шансов для каждого коэффициента равно exp(coef(aidslogit)) . Это отношения шансов для изменения на единицу в данной переменной.

Но при взаимодействии необходимо учитывать как основной эффект, так и взаимодействие. В этом случае AGE является вторым коэффициентом и AGE:ANTIRET является четвертым коэффициентом, поэтому:

 # Odds ratio for a one-unit change in AGE when ANTIRET=0
OR = exp(coef(aidslogit)[2])

# Odds ratio for a one-unit change in AGE when ANTIRET=1
OR = exp(coef(aidslogit)[2]   coef(aidslogit)[4])
  

Чтобы рассчитать отношение шансов для других AGE различий, умножьте коэффициенты на эту сумму. Например, чтобы получить отношение шансов для изменения на 10 единиц в AGE :

 # Odds ratio for a 10-unit change in AGE when ANTIRET=0
OR = exp(10 * coef(aidslogit)[2])

# Odds ratio for a 10-unit change in AGE when ANTIRET=1
OR = exp(10 * (coef(aidslogit)[2]   coef(aidslogit)[4]))
  

Комментарии:

1. Спасибо — я должен был добавить, что большая проблема заключается в получении доверительного интервала.

2. В таком случае дайте нам знать, emmeans (как предложено выше @BenBollker) делает ли то, что вам нужно.

3. Если я достаточно поработаю с emmeans, я смогу получить бета-коэффициенты и связанный SE, но я не смог заставить его напрямую выводить коэффициенты шансов для такого анализа. (Я уверен, что есть способ; я не опытный пользователь R.) Если кто-то может опубликовать код, я был бы признателен.