我在R中用分类预测器和二元响应构建一个glm。我的数据是这样的(但更大,有多个预测因子):
y <- c(1,1,1,0,0) #response
x <- c(0,0,0,1,2) #predictor
由于这些数据是分类的(但它用数字表示),我这样做了:
y <- as.factor(y)
x <- as.factor(x)
然后我建立了我的模型:
g1 <- glm(y~x, family=binomial(link="logit"))
但该模型的细节如下:
g1
Call: glm(formula = y ~ x, family = binomial(link = "logit"))
Coefficients:
(Intercept) x1 x2
24.57 -49.13 -49.13
Degrees of Freedom: 4 Total (i.e. Null); 2 Residual
Null Deviance: 6.73
Residual Deviance: 2.143e-10 AIC: 6
摘要是:
summary(g1)
Call:
glm(formula = y ~ x, family = binomial(link = "logit"))
Deviance Residuals:
1 2 3 4 5
6.547e-06 6.547e-06 6.547e-06 -6.547e-06 -6.547e-06
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 24.57 75639.11 0 1
x1 -49.13 151278.15 0 1
x2 -49.13 151278.15 0 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 6.7301e+00 on 4 degrees of freedom
Residual deviance: 2.1434e-10 on 2 degrees of freedom
AIC: 6
Number of Fisher Scoring iterations: 23
我不明白为什么R在x1和x2中复制了x预测变量? x1和x2是什么意思?
我还需要用估计来明确写下模型,形式有:y~B0 + B1 * x所以我现在被卡住了,因为x被分为两部分而且没有名为x1和x2的初始变量...
感谢您的帮助!
答案 0 :(得分:1)
这是因为您已将x
作为一个因素。该因子有三个级别(0,1和2)。当您将分类变量放入回归模型时,编码它的一种方法是使用参考类别。在这种情况下,R选择将0级作为参考类别。那么x1和x2的系数分别是0和1以及0和2之间的水平差异。
这在回归中非常标准,所以你不应该发现它太令人惊讶。也许你只是对R如何命名系数感到困惑。