R returns 逻辑回归中比预期更多的系数

R returns more coefficients than expected in logistic regression

我正在使用来自网站的数据集来检查逻辑回归。 Rreturns变量的三个系数"age" 下面是数据集。年龄变量有四个级别:<25、25-29、30-39、40-49。

data

数据集具有三个预测变量(即年龄、教育程度、想要更多)。第四列和第五列是响应变量,对应"No"(第四列)和"Yes"(第五列)。

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

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 创建了 dummy variables 以处理分类变量。在回归模型中,将数值系数值与 "age less than 25" 的 "category" 相乘没有意义。

因此使用虚拟变量以某种方式对它们进行编码,以便您可以执行此系数乘法。有关更多讨论,请参阅 here

对于您的模型,年龄的最后一个 "missing" 变量是与所有其他年龄进行比较的基线变量,即 <25age。因此,根据您的模型,age25-29 的个体相对于 <25 的基线,会改变您的响应变量(notUsingusing) 通过 0.3893816.

有关具有类别变量(他们的是 rank)以及如何解释它的深入教程,请参阅 here