考虑对这些数据进行逻辑回归:
X1 X2 Y
1 0 0
1 0 1
0 1 0
0 1 0
0 1 0
0 1 1
1 1 1
R 接受三种不同的数据表示:每个表条目一行,以及两种压缩表示(一种带有权重,一种带有成功和失败)。在我看来,这三个规范在数学上应该都是相同的:数据是相同的 7 个观察值,它们以不同的格式呈现给 R。
data1 <- data.frame(x1=c(1,1,0,0,0,0,1), x2=c(0,0,1,1,1,1,1), y=c(0,1,0,0,0,1,1))
data2 <- data.frame(x1=c(0,1,0,1), x2=c(0,0,1,1), y=c(0,0.5,0.25,1), w=c(0,2,4,1))
data3x <- data.frame(x1=c(0,1,0,1), x2=c(0,0,1,1))
data3y <- cbind(c(0,1,1,1), c(0,1,3,0))
model1 <- glm(y~x1+x2, data=data1, family="binomial")
model2 <- glm(y~x1+x2, data=data2, family="binomial", weight=w)
model3 <- glm(data3y~data3x$x1+data3x$x2, family="binomial")
模型 2 和模型 3 是相同的,这是有道理的。但是模型 1 与模型 2 和 3 不同,我无法解释为什么相同的数据应该返回与其他数据不同的模型统计数据(系数、空值和残差)。模型 2 和 3 只是使用相同数据的不同表示。
这可能是一个红鲱鱼,但与模型 2 相比,模型 1 的系数移动了 4 个单位,这正是两者之间(填充)行数/剩余自由度的差异。
> model1
Call: glm(formula = y ~ x1 + x2, family = "binomial", data = data1)
Coefficients:
(Intercept) x1 x2
-19.66 19.66 18.57
Degrees of Freedom: 6 Total (i.e. Null); 4 Residual
Null Deviance: 9.561
Residual Deviance: 7.271 AIC: 13.27
> model2
Call: glm(formula = y ~ x1 + x2, family = "binomial", data = data2,
weights = w)
Coefficients:
(Intercept) x1 x2
-23.66 23.66 22.57
Degrees of Freedom: 2 Total (i.e. Null); 0 Residual
Null Deviance: 2.289
Residual Deviance: 3.167e-10 AIC: 9.112