我在带有2个值的dataframe上运行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值?谢谢。
发布于 2021-11-25 10:24:28
我肯定这是个复制品,但找不到。
问题是,因为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]
更高效--尽管我很少担心效率的水平.)
https://stackoverflow.com/questions/70114926
复制相似问题