回归应该算得上统计分析中最常用的建模手段,要判断最终得到的模型是否准确,还需要进行关键的一步——回归诊断。用过 R 语言进行回归分析的小伙伴应该知道,base 包里的 plot()
函数可以直接绘制诊断结果,今天小编介绍一个更方便的工具:Lindia包[1],使用这个包可以获得更详细的回归诊断结果,语法也非常简单,下面跟着小编一起学习吧~
Lindia 是 ggplot2 的扩展,提供更详细的线性模型诊断结果的可视化功能。Lindia 中的所有函数输入都必须为 lm 对象(包括 lm()
和 glm()
),并以 ggplot 对象的形式返回线性诊断图。
这里以 Cars93 数据集为例,建立一个线性回归模型。
library(MASS)
data(Cars93)
cars_lm <- lm(Price ~ Passengers + Length + RPM, data = Cars93)
首先,介绍一下使用 base 包中的 plot()
函数进行回归诊断
par(mfrow = c(2,2))
plot(cars_lm)
【🌟🌟🌟】这四幅图的含义为[2]: (1) Residuals vs Fitted:残差和拟合值。 如果红线能很好地拟合大部分散点且是近乎水平的,则说明自变量和因变量是线性相关的。若呈较明显的曲线,则应考虑可能存在非线性关系。 (2) Normal Q-Q:QQ图,用来检验正态性。 若满足正态假设,那么图上的点应该落在呈45度角的直线上;若不是如此,那么就违反了正态性的假设。 (3) Scale - Location:检验方差齐性。 若满足假设,则散点会均匀地分布在水平线上。 (4) Residuals - Leverage:判断是否有极端值。 判断依据是 cook's distance(库克距离),在红色等高线外的点可以考虑将其删除。
下面正式介绍今天的主角:Lindia
包,该包来源于 github ,使用其中的gg_diagnose()
函数实现诊断结果全输出:
# 安装包
devtools::install_github("yeukyul/lindia")
library(lindia)
#绘图
gg_diagnose(cars_lm)
【🌟结果解读】:输出结果不仅包含了
plot()
函数输出的四幅图,还多了 5 幅图。 (1) Histogram of Residuals:残差直方图[3]。 使用残差的直方图可确定数据是偏斜还是包含异常值。图中可看出存在异常值,残差分布有轻微右偏。因为直方图的外观取决于用来进行数据分组的区间数,所以请勿使用直方图评估残差的正态性。 (2) Residuals vs 变量名:残差与变量[4]。 如果在残差中看到非随机图形,则表明变量会系统性地影响响应。请考虑在分析中包含该变量 (5)-(8):这四幅图参照引言中的解释。 (9) Cook's distance Plot:库克距离。 这幅图的含义和引言中提到的杠杆图类似,相比之下含义更清晰一些,红线之上的点即为异常值。
lindia 还包含许多实用的函数,可以根据分析需要单独输出某一张诊断图。
gg_reshist()
: 残差直方图gg_resfitted()
: 残差与拟合值gg_resX()
: 残差与预测值gg_qqplot()
: QQ图gg_boxcox()
: box-cox图gg_scalelocation()
: 检验方差齐性gg_resleverage()
: Residual by leverage plotgg_cooksd()
: 库克距离图[1]lindia
包: https://github.com/yeukyul/lindia
[2]这四幅图的含义为: https://data.library.virginia.edu/diagnostic-plots/
[3]残差直方图: https://support.minitab.com/zh-cn/minitab/18/help-and-how-to/modeling-statistics/doe/how-to/factorial/analyze-factorial-design/interpret-the-results/all-statistics-and-graphs/residual-plots/#histogram-of-residuals
[4]残差与变量: https://support.minitab.com/zh-cn/minitab/18/help-and-how-to/modeling-statistics/doe/how-to/factorial/analyze-factorial-design/interpret-the-results/all-statistics-and-graphs/residual-plots/#histogram-of-residuals