使用多因子预测变量从GLM中删除截距

时间:2016-06-03 09:52:03

标签: r glm intercept binomial-coefficients

我正在使用R中的logit link函数运行二项Logistic回归。我的响应是阶乘[0/1]我有两个多级因子预测器 - 让我们称它们为a和b,其中a有4因子等级(a1,a2,a3,a4)和b具有9个因子等级(b1,b2 ...... b9)。因此:

mod <- glm(y~a+b, family=binomial(logit),data=pretend) summary(mod)

模型输出将显示有关模型和系数的所有信息。

摘要输出中缺少a和b(a1和b1)的因子级别。据我所知,它是在&#34;拦截&#34;该模型。我已经读过,如果我想删除截距项并查看这些因子水平的估计值,我可以在模型公式中加上-1或+0,即:

mod2 <- glm(y~a+b-1, family=binomial(logit),data=pretend) 

... ... OR     mod2&lt; - glm(y~a + b + 0,family =二项式(logit),data = pretend)     摘要(MOD2)

在新模型(mod2)中,截距项随后消失,并且在系数列表中给出变量a的因子水平a1。但是,变量b的因子水平b1仍然缺失,并且假设不存在截距项,那么我如何解释该因子水平的优势比呢?

有人可以向我解释如何获得b1的系数以及为什么会发生这种情况?

谢谢。

3 个答案:

答案 0 :(得分:0)

有趣的是a1被给出了。人们会期望一个因子水平作为“参考”,因此在输出中没有任何OR(因为它是1.0)。

我认为b1是你的参考,因此是隐藏的,因此是1.0。

答案 1 :(得分:0)

您可以尝试调整对比度。我最喜欢的是

options(contrasts = c('contr.sum','contr.poly'))

这里的假设是a_i的总和= 0和b_i的总和= 0(虽然我刚刚发现这可能不是GLM的情况)对于那些对比,它通常会留下最后一个a和b因为它们可以通过分别取另一个a或b的相反值来恢复(因为它们总和为0)。

检查此问题或更多参考。 https://stats.stackexchange.com/questions/162381/how-to-fit-a-glm-with-sum-to-zero-constraints-in-r-no-reference-level

答案 2 :(得分:0)

为什么要删除截距项并获取a1的系数?

具有因子变量的逻辑回归模型拟合第一因子水平作为参考。此因子级别的对数赔率(系数)设置为1.0。

当比较因子(或组)之间的对数几率时,所得因子水平的所有对数赔率都是指基数。因此,您可以计算不同组之间的比值比,并预测事件是否更可能发生(与基本因子水平相比)。

如果a中没有参考级别,我不知道什么作为a级别的参考。如果a的引用为b1,那么您如何理解这一点?有没有提到删除拦截有意义? (真的很好奇,还没有听说过这种方法)

顺便说一下,你不需要截距来计算因子水平之间的比值比。以下是计算随机二项式glm的优势比的小例子:

library(oddsratio)
fit.glm <- glm(admit ~ gre + gpa + rank, data = data.glm, family = "binomial") # fit model

# Calculate OR for specific increment step of continuous variable
calc.oddsratio.glm(data = data.glm, model = fit.glm, incr = list(gre = 380, gpa = 5))

predictor oddsratio CI.low (2.5 %) CI.high (97.5 %)          increment
1     gre     2.364          1.054            5.396                380
2     gpa    55.712          2.229         1511.282                  5
3   rank2     0.509          0.272            0.945 Indicator variable
4   rank3     0.262          0.132            0.512 Indicator variable
5   rank4     0.212          0.091            0.471 Indicator variable