我正在使用一个网站的数据集来检查逻辑回归。R返回变量 "年龄 "的三个系数 以下是数据集。年龄变量有四个层次:<25,25-29,30-39,40-49。
数据集有三个预测变量(即年龄、教育、wantsMore)。第四列和第五列是响应变量,对应 "否"(第四列)和 "是"(第五列)。
当我使用这个数据集进行逻辑回归时,我得到了更多的年龄变量的系数。
cuse = read.table("https://data.princeton.edu/wws509/datasets/cuse.dat", header = TRUE)
cuse$age=factor(cuse$age)
lrfit = glm( cbind(using, notUsing) ~ age + education + wantsMore,
data = cuse, family = binomial)
lrfit$coefficients
这些系数如下图所示。R对年龄变量产生了三个系数。我如何解决这个问题?
> lrfit$coefficients
(Intercept) age25-29 age30-39 age40-49 educationlow wantsMoreyes
-0.8082200 0.3893816 0.9086135 1.1892389 -0.3249947 -0.8329548
正如 @Dason 在评论中提到的,你将得到 k-1
为您提供的系数 k
你的分类变量中的等级数。age
.
这是因为在内部,R创建了 虚变量 以便处理分类变量。在回归模型中,用 "年龄小于25岁 "这个 "类别 "来乘以一个数字系数值是没有意义的。
所以,哑变量被用来编码的方式,这样你就可以进行这种系数乘法。请看 此处 的更多讨论。
在您的模型中,年龄的最后一个 "缺失 "变量是所有其他年龄段的基线变量,即 age
的 <25
. 因此,根据你的模型,一个人与一个 age
的 25-29
与基线 <25
,改变你的响应变量的对数几率(notUsing
和 using
)以 0.3893816
.
见 此处 的深度教程,其中有一个类别变量(他们的是 rank
)以及如何解释它。