【问题标题】:Multiple Linear Regression using lm() in r output with categorical variable is incomplete?在具有分类变量的 r 输出中使用 lm() 的多元线性回归不完整?
【发布时间】:2020-11-07 17:21:25
【问题描述】:

我正在使用这个数据集 https://archive.ics.uci.edu/ml/datasets/automobile 。有一个名为“num.of.doors”的分类变量可以是(二,四),这给我带来了麻烦。

当我运行lm(formula = price ~ horsepower + num.of.doors, data = train.sample) 来预测价格时,输出是:

调用:lm(公式 = 价格 ~ 马力 + 门数,数据 = 训练样本)

系数: (拦截)马力 num.of.doors两个
-4006.5 174.1 -1856.2

但我想看看四扇门的 num.of.doors 的系数。我该怎么做?

【问题讨论】:

  • lm 给你边际系数;即在相同马力的情况下,两门汽车的成本比四门汽车低 1856.2。对于分类变量,您通常会降低一个级别(因为系数将线性相关)

标签: r regression lm


【解决方案1】:

我认为您的问题是因为当您使用分类变量调整线性回归时,其中一个类别将用作“参考”,其值将在“截距”中表示(成为一部分)。

因此,要查看“四门”的系数,您应该更改变量的基本参考。你可以这样做:

train_sample$num.of.doors = relevel(train_sample$num.of.doors, ref=2)

请记住,通过此更改,“两扇门”现在将成为基本参考。

【讨论】:

    【解决方案2】:

    如果 num.of.doors 只有两个值(“two”和“four”),则此模型中“four”的系数为 0。

    您的公式是价格 = -4006.6 + 174.1(马力)-1856.2(门数 = 两个)

    因此,如果汽车有四个门,您的价格很简单: 价格 = -4006.6 + 174.1*马力

    发生这种情况是因为变量是分类的。可以理解为“如果汽车是两门而不是四门,我的模型估计价格会比四门汽车低 1856.20。”

    【讨论】:

      【解决方案3】:

      有几个选项:

      1 - 将 num.of.doors 转换为一个因子,并重新编码以使两扇门成为基本级别。运行 lm 命令后,它将显示线性回归中四个门的系数。这可以通过以下方式实现:

      library(tidyverse)
      new_train_sample <- train.sample %>%
                        mutate(num.of.doors = factor(num.of.doors, levels = c("two", "four")))
      
      lm_1 <- lm(formula = price ~ horsepower + num.of.doors, data = new_train_sample)
      summary(lm_1)
      

      2 - 通过原点执行回归。这将使两个系数都可用于相同的 lm 命令,但截距的解释会略有变化。这不会影响预测或系数的大小。

      lm_origin <- lm(formula = price ~ 0 + horsepower + num.of.doors, data = train.sample)
      summary(lm_origin)
      

      【讨论】:

        猜你喜欢
        • 2018-07-13
        • 2019-06-03
        • 2015-06-21
        • 1970-01-01
        • 1970-01-01
        • 2020-05-20
        • 1970-01-01
        • 2019-04-07
        • 1970-01-01
        相关资源
        最近更新 更多