我正在学习准分离如何影响R二项式GLM。我开始认为在某些情况下无关紧要。
在我的理解中,我们说数据具有准分离的时候 因子水平的某些线性组合可以完全识别故障/非故障。
所以我创建了一个在R中具有准分离的人工数据集:
fail <- c(100,100,100,100)
nofail <- c(100,100,0,100)
x1 <- c(1,0,1,0)
x2 <- c(0,0,1,1)
data <- data.frame(fail,nofail,x1,x2)
rownames(data) <- paste("obs",1:4)
然后当x1 = 1且x2 = 1(obs 3)时,数据始终不会失败。 在这个数据中,我的协变量矩阵有三列:截距,x1和x2。
在我的理解中,准分离导致无穷大的估计。所以glm fit应该失败。但是,以下glm适合不会失败:
summary(glm(cbind(fail,nofail)~x1+x2,data=data,family=binomial))
结果是:
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.4342 0.1318 -3.294 0.000986 ***
x1 0.8684 0.1660 5.231 1.69e-07 ***
x2 0.8684 0.1660 5.231 1.69e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
标准。即使准分离,错误似乎也很合理。 谁能告诉我为什么准分离不影响glm拟合结果?
答案 0 :(得分:3)
您构建了一个有趣的示例,但您没有测试实际检查您描述为准分离的情况的模型。当你说:“当x1 = 1且x2 = 1(obs 3)时,数据总是失败。”,你暗示在模型中需要一个交互项。请注意,这会产生“更有趣”的结果:
> summary(glm(cbind(fail,nofail)~x1*x2,data=data,family=binomial))
Call:
glm(formula = cbind(fail, nofail) ~ x1 * x2, family = binomial,
data = data)
Deviance Residuals:
[1] 0 0 0 0
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.367e-17 1.414e-01 0.000 1
x1 2.675e-17 2.000e-01 0.000 1
x2 2.965e-17 2.000e-01 0.000 1
x1:x2 2.731e+01 5.169e+04 0.001 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 1.2429e+02 on 3 degrees of freedom
Residual deviance: 2.7538e-10 on 0 degrees of freedom
AIC: 25.257
Number of Fisher Scoring iterations: 22
人们通常需要非常怀疑β系数为2.731e + 01:隐式比值比i:
> exp(2.731e+01)
[1] 725407933166
在这种工作环境中,Inf和725,407,933,166之间确实没有实质性区别。