R用glm和分类变量复制预测变量

时间:2014-05-18 02:39:42

标签: r glm

我在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的初始变量...

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这是因为您已将x作为一个因素。该因子有三个级别(0,1和2)。当您将分类变量放入回归模型时,编码它的一种方法是使用参考类别。在这种情况下,R选择将0级作为参考类别。那么x1和x2的系数分别是0和1以及0和2之间的水平差异。

这在回归中非常标准,所以你不应该发现它太令人惊讶。也许你只是对R如何命名系数感到困惑。