1写在前面

上期介绍了一元线性回归,现在我们增加预测变量个数,稍微扩展一下我们的一元线性模型,就是多元线性回归了。😘多元线性回归分析法的数学方程:


β β ϵ

2用到的包

rm(list = ls())
library(tidyverse)
library(ggsci)
library(rms)

3示例数据

还是使用的上期介绍的mtcars,为1974年《Motor Trend US》杂志上记录的,包括32种汽车的mpg(燃料消耗)、hp(马力)等方面的数据。

dat <- mtcars %>% 
  rownames_to_column(.,"ID")



多元线性回归画图怎么花 多元线性回归可视化_后端

4数据处理

我们先看一下有没有NA值,用一下tidyverse的函数吧。

这里并没有NA值的存在,所以就不过滤了。

dat %>%
  summarise_all(
    ~ sum(is.na(.))
  )



多元线性回归画图怎么花 多元线性回归可视化_后端_02

5简单建模

5.1 两个变量

这里我们看一下vs(引擎类型)和wt(重量)对mpg(燃料消耗)的影响。

我们将vs的赋值定义为,0 = V-shaped, 1 = straight

mod2 <- lm(mpg ~ wt + vs, data = dat)
mod2



多元线性回归画图怎么花 多元线性回归可视化_建模_03

结果解释

weight = -4.443, ➡️ 当vs1保持不变时,wt变化引起的mpg变化。vs1 = 16874.158, ➡️ 当wt保持不变时,vs变化(0变为1)引起的mpg变化。


5.2 可视化

我们用散点图可视化一下

p1 <- dat %>%
  ggplot(aes(x = wt, y = mpg, color = vs)) +
  geom_point(alpha = 0.1) +
  geom_line(aes(y = predict(mod2))) +
  theme_bw()+
  scale_color_aaas()
p1



多元线性回归画图怎么花 多元线性回归可视化_多元线性回归画图怎么花_04


6交互项的处理

6.1 建模

在这里需要特殊说明一下,由于变量之间存在交互,大家在建模的时候可能会使用不同的符号,如: +, *,:等。这里我们看一下vs (0 = V-shaped, 1 = straight) 和 wt (Weight) 以及二者交互项对mpg的影响。

dat$vs <- factor(dat$vs)
mod3 <- lm(mpg ~  wt + vs + wt:vs, data = dat)
coef(mod3)



多元线性回归画图怎么花 多元线性回归可视化_建模_05

解释结果:

对于V-shaped引擎,Weight增长1个单位,mpg下降3.501310。对于straight引起,Weight增长1个单位,mpg下降3.501310 + 2.909707


6.2 可视化

p2 <- dat %>%
  ggplot(aes(x = wt, y = mpg, color = vs)) +
  geom_point(alpha = 0.1) +
  geom_line(aes(y = predict(mod3)))+
  theme_bw()+
  scale_color_aaas()
p2



多元线性回归画图怎么花 多元线性回归可视化_多元线性回归画图怎么花_06

7有无交互项的区别

注意一下有误交互项的区别, 我们在这里用散点图可视化一下二者的区别

library(patchwork)

combined <- p1 + p2 & theme(legend.position = "bottom")
combined + plot_layout(guides = "collect")



多元线性回归画图怎么花 多元线性回归可视化_d3_07

所以!在这里我们建立的带交互项的模型公式为:


β β β ϵ

8纳入跟多变量

8.1 建模

我们试着纳入更多的变量。 由于样本量比较小,我们这里就增加到3个变量吧。

mod4 <- lm(mpg ~ wt + vs + drat,data = dat)
print(mod4)



多元线性回归画图怎么花 多元线性回归可视化_多元线性回归_08


8.2 查看详细信息

上面的结果可能并不容易查看,这里我们使用tidyverse将结果输出为data.frame

result <- dat %>%
  group_by(vs) %>%
  group_modify(
    ~ broom::tidy(mod4)
  ) 
result



多元线性回归画图怎么花 多元线性回归可视化_d3_09

8.3 结果可视化

本期我们使用ggstatsplot包的ggcoefstats函数,以森林图的方式展示结果。

library(ggstatsplot)
ggcoefstats(mod4)



多元线性回归画图怎么花 多元线性回归可视化_多元线性回归画图怎么花_10


多元线性回归画图怎么花 多元线性回归可视化_后端_11