设为首页 加入收藏

TOP

【R】多元线性回归(二)
2017-10-10 12:09:59 】 浏览:10128
Tags:多元 线性 回归
前提。
 
用lm()构造一个线性模型fit后,plot(fit)即可返回4张图(可以par(mfrow=c(2,2))一次展现),这4张图可作初步检验:
 
线性回归模型4张诊断图
 
左上图用来检验假设1,如果散点看不出什么规律,则表示线性关系良好,若有明显关系,则说明非线性关系明显。右上图用来检验假设2,若散点大致都集中在QQ图中的直线上,则说明残差正态性良好。左下图用来检验假设3,若点在曲线周围随机分布,则可认为假设3成立;若散点呈明显规律,比如方差随均值而增大,则越往右的散点上下间距会越大,方差差异就越明显。假设4的独立性无法通过这几张图来检验,只能通过数据本身的来源的意义去判断。
 
右下图是用来检验异常值。异常值与三个概念有关:
  • 离群点:y远离散点主体区域的点
  • 杠杆点:x远离散点主体区域的点,一般不影响回归直线的斜率
  • 强影响点:影响回归直线的斜率,一般是高杠杆点。
对于多元线性回归,高杠杆点不一定就是极端点,有可能是各个变量的取值都正常,但仍然偏离散点主体。
 
对于异常值,可以谨慎地删除,看新的模型是否效果更好。
 
《R语言实战》里推荐了更好的诊断方法,总结如下。
 
1、多元线性回归假设验证:
gvlma包的gvlma()函数可对拟合模型的假设作综合验证,并对峰度、偏度进行验证。
 
states <- as.data.frame(state.x77[, c("Murder", "Population",
                                      "Illiteracy", "Income", "Frost")])
fit <- lm(Murder ~ Population + Illiteracy + Income +
            Frost, data = states)
library(gvlma)
gvmodel <- gvlma(fit)
summary(gvmodel)
 
Call:
 gvlma(x = fit)
 
                    Value p-value                Decision
Global Stat        2.7728  0.5965 Assumptions acceptable.
Skewness           1.5374  0.2150 Assumptions acceptable.
Kurtosis           0.6376  0.4246 Assumptions acceptable.
Link Function      0.1154  0.7341 Assumptions acceptable.
Heteroscedasticity 0.4824  0.4873 Assumptions acceptable.
 
最后的Global Stat是对4个假设条件进行综合验证,通过了即表示4个假设验证都通过了。最后的Heterosceasticity是进行异方差检测。注意这里假设检验的原假设都是假设成立,所以当p>0.05时,假设才能能过验证。
 
如果综合验证不通过,也有其他方法对4个假设条件分别验证:
 
  • 线性假设
 
library(car)
crPlots(fit)
 
返回的图是各个自变量与残差(因变量)的线性关系图,若存着明显的非线性关系,则需要对自变量作非线性转化。书中说这张图表明线性关系良好。
 
  •   正态性
 library(car)
qqPlot(fit,labels = row.names(states),id.method = "identify",simulate = TRUE,main = "Q-Q Plot")
 
qqPlot()可以生成交互式的qq图,选中异常点,就返回该点的名称。该图中除了Nevad点,其他点都在直线附近,可见正态性良好。
 
  • 同方差性
 
library(car)
ncvTest(fit)
 
Non-constant Variance Score Test
Variance formula: ~ fitted.values
Chisquare = 1.746514    Df = 1     p = 0.1863156
 
p值大于0.05,可认为满足方差相同的假设。
 
  • 独立性
 
library(car)
durbinWatsonTest(fit)
 
 lag Autocorrelation D-W Statistic p-value
   1      -0.2006929      2.317691   0.258
 Alternative hypothesis: rho != 0
 
p值大于0.05,可认为误差之间相互独立。
 
除了以上4点基本假设,还有其他方面需要进行诊断——
 
2、多重共线性
 
理想中的线性模型各个自变量应该是线性无关的,若自变量间存在共线性,则会降低回归系数的准确性。一般用方差膨胀因子VIF(Variance Inflation Factor)来衡量共线性,《统计学习》中认为VIF超过5或10就存在共线性,《R语言实战》中认为VIF大于4则存在共线性。理想中的线性模型VIF=1,表完全不存在共线性。
 
library(car)
vif(fit)
 
Population Illiteracy     Income    &n
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 2/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇“ML_for_Hackers”[1] 下一篇用贝叶斯判别分析再次预测股票涨..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目