在R中逻辑回归模型中交互作用的比率和95%置信区间

3

我正在运行一个逻辑回归模型,其中包含一个二元和一个连续变量的交互作用:

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

我想要做的是计算不同年龄段(例如20、30和40岁)使用抗逆转录病毒药物的OR和95%CI。我想输出协方差并手动计算,但似乎应该有自动计算的方法。

SAS中的相应代码如下:

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

1
请查看 emmeans 包。 - Ben Bolker
1个回答

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 差异的比值比,需将系数乘以该数量。例如,要获取 AGE 变化为10个单位时的比值比:

# 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]))

谢谢 - 我应该补充一下,更大的问题是获得置信区间。 - Agnes Flack
在这种情况下,请告诉我们是否需要emmeans(如@BenBollker上面建议的)来完成您的需求。 - eipi10
如果我在emmeans上胡闹得够多,我就可以获得beta系数和相关的SE,但我还没有能够让它直接输出那种分析的赔率比。 (我相信有一种方法;我不是一个熟练的R用户。)如果有人能发布代码,我会很感激。 - Agnes Flack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接