【问题标题】:R returns more coefficients than expected in logistic regressionR 在逻辑回归中返回的系数比预期的要多
【发布时间】:2020-08-23 02:43:19
【问题描述】:

我正在使用来自网站的数据集来检查逻辑回归。 R为变量“age”返回三个系数下面是数据集。年龄变量有四个级别:

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 

【问题讨论】:

  • 这就是我希望看到的。您是否希望只看​​到一个参数?您的数据不连续。
  • 年龄变量有四个级别。我使用 factor() 将年龄转换为分类变量。所以应该只有一个系数。
  • ...我想你很困惑。分类变量将获得 (k-1) 个系数,其中 k 是变量中的级别数。
  • 感谢您的解释。如果我使用 (1, 2, 3, 4) 对年龄的四个级别进行编码,我如何才能获得年龄变量的一个系数。
  • 我同意@Dason 所说的。如果您有这样的分类数据并且您使用数值 1、2、3、4 来表示它们,那么您假设无论类别 1 的影响是什么(您的数据中

标签: r logistic-regression


【解决方案1】:

正如 @Dason 在 cmets 中提到的,您将获得 k-1 系数 k 分类变量中的等级数 age

这是因为 R 在内部创建 dummy variables 以处理分类变量。在回归模型中,将数值系数值与“年龄小于 25 岁”的“类别”相乘是没有意义的。

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

对于您的模型,年龄的最后一个“缺失”变量是与所有其他年龄进行比较的基线变量,即 age<25。因此,根据您的建模,具有25-29age 的个体与<25 的基线相比,将您的响应变量(notUsingusing)的对数几率更改为0.3893816

请参阅 here 了解包含类别变量(他们的变量是 rank)以及如何解释它的深入教程。

【讨论】:

    猜你喜欢
    • 2014-06-26
    • 2021-05-02
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    相关资源
    最近更新 更多