准分离在 R 二项式 GLM 中重要吗?
Does Quasi Separation matter in R binomial GLM?
我正在学习准分离如何影响 R 二项式 GLM。我开始认为在某些情况下没有关系。
在我的理解中,我们说数据有准分离,当
一些因子水平的线性组合可以完全识别 failure/non-failure.
所以我在 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 拟合结果?
您构建了一个有趣的示例,但您没有测试一个模型,该模型实际检查您描述为准分离的情况。当您说:"when x1=1 and x2=1 (obs 3) the data always fails." 时,您是在暗示模型中需要一个交互项。请注意,这会产生 "more interesting" 结果:
> 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 的 beta 系数:隐式优势比 i:
> exp(2.731e+01)
[1] 725407933166
在这个工作环境下,Inf 和 725,407,933,166 确实没有 material 区别。
我正在学习准分离如何影响 R 二项式 GLM。我开始认为在某些情况下没有关系。
在我的理解中,我们说数据有准分离,当 一些因子水平的线性组合可以完全识别 failure/non-failure.
所以我在 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 拟合结果?
您构建了一个有趣的示例,但您没有测试一个模型,该模型实际检查您描述为准分离的情况。当您说:"when x1=1 and x2=1 (obs 3) the data always fails." 时,您是在暗示模型中需要一个交互项。请注意,这会产生 "more interesting" 结果:
> 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 的 beta 系数:隐式优势比 i:
> exp(2.731e+01)
[1] 725407933166
在这个工作环境下,Inf 和 725,407,933,166 确实没有 material 区别。