(R,线性回归)R语⾔⾥的模型诊断图
(ResidualsvsFitted,NormalQQ。。。
线性回归,是概率统计学⾥最重要的统计⽅法,也是机器学习中⼀类⾮常重要的算法。线性模型简单理解⾮常容易,但是内涵是⾮常深奥的。尤其是线性回归模型中的Diagnostics plot的阅读与理解⼀直被认为是线性回归中的⼀个难点。
在任何线性模型中,能够直接“lm”(模型有意义),既要考虑各个参数的t-test所得出的p-value,也要考虑总体模型F-检验得出的p-value。在这之后,还要清楚⼀个线性模型是建⽴在以下五个假设的基础上的。如果不满⾜以下五个假设,那么模型即使通过了t-test和F-test,其预测效果也⼤打折扣。同时,也可以通过对这五个指标的研究,进⼀步优化模型(⽐如使⽤其他⾮参数统计⽅法,Box-Cox等变换⽅法,基于AIC,BIC,Adjusted-R^2,Cpd等⽅法的特征选择,Lasso,Ridge-regression,Elastic Net等等)。
· Normal i.i.d. errors新生儿肺炎症状
· Constant error variance
· Abnce of influential cas
· Linear relationship between predictors and outcome variable
· Collinearity
⽽针对这五个假设进⾏验证,最直观和简单的⽅法就是⽤R语⾔⾃带的模型诊断图。但如前⾯所说,这些模型诊断图的阅读和理解,⼀直是⼀个难点。本⼈在这⾥详细的介绍这种⽅法。
我本⼈是习惯⽤python的。我其实⾮常不喜欢R复杂的包依赖关系以及在使⽤中繁琐的⼿动包安装过程。但是精细处理线性回归的问题,使⽤R⽐使⽤Python有更多的好处。
Python其实也有⼀个性能不错的统计学包,StatsModel:
我就是欢迎各位读者朋友尝试使⽤这⼀⼯具完成我们这篇⽂章中所讲的内容。在这⾥我们使⽤RStudio以及最新版本(当前时间是2019年3⽉8⽇)来进⾏项⽬分析。其实这也是我个⼈认为⾮常罕见的R的功能竟然⽐Python还要强⼤的地⽅。
我们⾸先使⽤lm()⽅法,也就是R语⾔中求线性回归的命令对任意⼀个线性模型进⾏线性回归。但是为了⽅便起见,我们可以把这个“线性回归"命名为fit。
fit=lm(因变量~⾃变量)
之后我们就可以⽤R语⾔绘制Diagnostics plot了。同样的,在R语⾔⾥,这⾥也只有⼀⾏代码。狗狗冠状是什么症状
plot(fit)
如果您的代码确实可以执⾏,在RStudio中应该显⽰出四张图⽚。 分别是:
1. Residuals vs Fitted
2. Normal QQ
3. Scale-Location
4. Residuals vs Leverage
如图所⽰。就是⼀个这样的图:
但是这些图,画出来了,怎么去理解?在这⾥我们引⽤美国弗吉尼亚⼤学的⼀篇参考资料来给⼤家进⾏讲解。
原⽂地址是:
合同书1. Residuals vs Fitted
Resiuals即为残差的意思(估计值与真实值之差)。这就是残差与真实值之间的关系画图。在理想线性模型中有五⼤假设。其中之⼀便是残差应该是⼀个正态分布,与估计值⽆关。如果残差还和估计值有关,那就说明模型仍然有值得去改进的地⽅,当然,这样的模型准确程度也就⼤打折扣。
显然,左边的图残差和估计值基本是⽆关的。但是右边的图,残差和估计值⼏乎成⼀个⼆次关系。那么这样的模型就需要进⾏修正了。
如果您觉得单纯⽤图来看还不放⼼,在统计学⾥有四种检测⽅法可以进⼀步去测试残差和估计值是否是⽆关的。那便是:
Shapiro-Wilk
Kolmogorov-Smirnov
Anderson-Darling
Correlation test
你可以使⽤R,对你的模型分别进⾏以上四⼤检验。相关的资料可以参考Julian Faraway的Linear Model with R等著名统计学书籍。这些检验理论上都⽐较复杂,所以我们可能会在后⾯展开讨论。但是实际操作是⾮常简单的。⾄于哪⼀种检测⽅法最好?Bad on a 2011 paper by Razali and Wah, Shapiro-Wilk is the best test, while Anderson-Darling performs almost the same. 其实在实际操作中都是差不多的,您挑⼏个看着顺眼的试⼀下就okay。
2. Normal QQ
Normal QQ-plot⽤来检测其残差是否是正态分布的。左边是⼀个残差基本正态分布的图。右边则是⼀个⽤Normal QQ-plot进⾏分析显⽰出问题的图。1和2其实⽤来⼲的事情是差不多的。
九年级下册古诗注意⼀条:R语⾔可以显⽰出偏差⽐较⼤的数据组。⽐如左边图中的38,98,36等等。这些点从改进模型的⾓度可以把它删除。但是有时候这些不正常的点或许暗含着⼀些特殊的规律。机器学习专家应该在这⾥和领域专家进⾏沟通。或者从业务的⾓度上来说,机器学习专家或者统计学家应该⽴即对出现偏差的点进⾏汇报。看是这些点本⾝有误差,还是暗含着不⼀样的物理或者统计规律。
qq实名注册3. Scale-Location
关于节日的成语
这个图是⽤来检查等⽅差假设的。在⼀开始我们的五⼤假设第⼆条便是,我们假设预测的模型⾥⽅差是⼀个定值。如果⽅差不是⼀个定值那么这个模型的可靠性也是⼤打折扣的。
左边的图是⼀个⽅差基本确定的情况。这种情况就是可以通过测试的。⽅差基本是⼀个常数。但是右边就不对了。⼤家发现⽅差是在不断增长的。如果出现这种情况,那么就需要进⼀步对模型进⾏分析。
在实际操作中,还会出现类似“微笑曲线”或者“倒微笑曲线”的情况。也是⽆法通过⽅差恒定测试的。如果您在这个地⽅依然还不相信其结果,那么可以使⽤Berush-Pegan test进⾏分析。
4. Residuals vs Leverage
供货服务方案Leverage就是杠杆的意思。这种图的意义在于检查数据分析项⽬中是否有特别极端的点。
在这⾥我们引⼊了⼀个⾮常重要的指标:Cook距离。我们在线性模型⾥⽤Cook距离分析⼀个点是否⾮常“influential。”⼀般来说距离⼤于0.5的点就需要引起注意了。在这⾥我们借⽤了物理学电磁场理论中的等电势理念。那个1,和0.5分别就是Cook距离为1和0.5的等⾼线。
需注意,即使R将这些特殊的点标记了出来,也不等于他们⼀定需要被删除。还是要参考Cook距离的绝对⼤⼩。
线性回归的模型诊断的确是⼀个难点。⼤家也可以参考Julian Farway等⼀批国内外的优秀著作进⾏学习。