用broom畫殘差圖(residual plot)

在作迴歸分析時,常常會用殘差圖(residual plot)來當作模型是否有改進空間的依據。最近在教學時發現David Robinson作的broom套件相當好用,也可以拿來畫殘差圖。broom內的函數大多是拿來計算和model相關的數據,而它和R內建函數的不同之處是所輸出的物件通通都是data frame,所以能和Hadley Wickham的dplyrggplot2無縫接軌。

例子

這裡我先對MASS套件內的Boston資料檔作線性迴歸。

library(dplyr)
library(ggplot2)
library(broom)
data(Boston, package = "MASS")
bos.fit <- lm(medv ~ lstat, data = Boston)

之後把建好的模型bos.fit丟進broom裡的augment(),再用計算出的殘差值畫出殘差圖。

b.res.plot <- bos.fit %>% augment %>%
  ggplot(aes(x = .fitted, y = .resid)) + geom_point()
b.res.plot

plot of chunk unnamed-chunk-2

從得到的圖可以看出殘差本身有些規律,這時再用ggplot加上一條擬合線

b.res.plot + geom_smooth(se = FALSE)

plot of chunk unnamed-chunk-3

就不難看出這個線性迴歸模型還有改進空間。

其他函數

broom內還有很多方便的函數,像是tidy()glance(),以及可以和dplyr一起拿來作拔靴法的bootstrep等等。另外David Robinson本身有寫部落格,他的文章也是相當高水準,值得一讀。

Written on November 2, 2016