在带有分类变量的r输出中使用lm()的多元线性回归是不完整的



我正在处理这个数据集https://archive.ics.uci.edu/ml/datasets/automobile。有一个分类变量叫做"门的数目",它可以是(2,4(,这给我带来了麻烦。

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

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

系数:(拦截(门的马力数两个
-4006.5 174.1-1856.2

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

有几个选项:

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)

我认为你的问题是因为当你用分类变量调整线性回归时,其中一个类别将被用作"参考";并且其值将表示(为部分(在";截距";。

因此,要查看";四个门";您应该更改变量的基引用。你可以用

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

请记住,随着这种变化;两个门";现在将作为基本参考。

如果num.of.doors只有两个值("两个"one_answers"四个"(;四";在此模型中为0。

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

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

之所以会发生这种情况,是因为变量是分类的。它可以被解释为";如果这辆车有两个门而不是四个门,我的模型估计价格将比四个门的车低1856.20">

最新更新