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]
效率更高——尽管我很少担心这种效率水平……)
我正在 运行在具有 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]
效率更高——尽管我很少担心这种效率水平……)