R glm summary 列出自变量的每个值

R glm summary lists every value of independent variable

我正在 运行在具有 2 个值的数据帧上使用 r 中的 glm。

str(INV)
'data.frame':   5614 obs. of  2 variables:
 $ MSACode: Factor w/ 70 levels "40","80","440",..: 37 64 58 56 66 14 38 37 66 14 ...
 $ NotPaid: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...

我用来运行的代码:

GlmModel <- glm(NotPaid ~ MSACode,family=binomial(link="logit"),data=training)
print(summary(GlmModel))

汇总结果显示的是单个值,而不是字段的一个值。

> print(summary(GlmModel))

Call:
glm(formula = NotPaid ~ MSACode, family = binomial(link = "logit"), 
    data = training)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.9728  -0.8352  -0.6501   0.9346   2.8245  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.657e+01  1.697e+03  -0.010    0.992
MSACode80    1.462e+01  1.697e+03   0.009    0.993
MSACode440  -7.494e-07  1.924e+03   0.000    1.000
MSACode520   1.547e+01  1.697e+03   0.009    0.993
MSACode640   1.587e+01  1.697e+03   0.009    0.993
MSACode720   1.477e+01  1.697e+03   0.009    0.993
MSACode870   1.657e+01  1.697e+03   0.010    0.992
MSACode1080  1.455e+01  1.697e+03   0.009    0.993

我不明白这些结果 - 为什么要分别显示每个 MSACode 值?谢谢

我确定这是重复的,但找不到它。

问题是,因为 MSACode 是一个因子(可能是因为输入文件的那一列中的值不能解释为数字),R 假设你想处理它作为分类变量而不是连续预测变量——因此,它为您提供 n-1 参数(其中 n 是级别数)而不是 1 来描述其效果。您可以通过以下方式将其转换回数字:

INV <- transform(INV, 
    MSACode = as.numeric(as.character(MSACode)))

然后重新运行您的模型。 (This post 解释了为什么我们需要 as.numeric(as.character(.)) 而不是 as.numeric(),并解释了 as.numeric(levels(f))[f] 效率更高——尽管我很少担心这种效率水平……)