在逻辑回归中,R返回的系数比预期的要多。

问题描述 投票:0回答:1

我正在使用一个网站的数据集来检查逻辑回归。R返回变量 "年龄 "的三个系数 以下是数据集。年龄变量有四个层次:<25,25-29,30-39,40-49。

数据

数据集有三个预测变量(即年龄、教育、wantsMore)。第四列和第五列是响应变量,对应 "否"(第四列)和 "是"(第五列)。

data

当我使用这个数据集进行逻辑回归时,我得到了更多的年龄变量的系数。

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 
r logistic-regression
1个回答
4
投票

正如 @Dason 在评论中提到的,你将得到 k-1 为您提供的系数 k 你的分类变量中的等级数。age.

这是因为在内部,R创建了 虚变量 以便处理分类变量。在回归模型中,用 "年龄小于25岁 "这个 "类别 "来乘以一个数字系数值是没有意义的。

所以,哑变量被用来编码的方式,这样你就可以进行这种系数乘法。请看 此处 的更多讨论。

在您的模型中,年龄的最后一个 "缺失 "变量是所有其他年龄段的基线变量,即 age<25. 因此,根据你的模型,一个人与一个 age25-29与基线 <25,改变你的响应变量的对数几率(notUsingusing)以 0.3893816.

此处 的深度教程,其中有一个类别变量(他们的是 rank)以及如何解释它。

© www.soinside.com 2019 - 2024. All rights reserved.