回归诊断的改进方法

  • car中的函数

相比于R基础提供的评价模型拟合情况,car包中提供了大量函数,大大增强了拟合和评价回归模型的能力

函数    目的
qqplot()    分位数比较图
durbinWatsonTest()对误差自相关性做Durbin-Watson检验
crPlots()    成分与残差图    
ncvTest()    对非恒定的误差方差做得分检验
spreadLevelPlot()        分散水平检验
outlierTest()        Bonferroni离群点检验
avPlots()    添加的变量图形
inluencePlot()    回归影响图
scatterplot()    增强的散点图    
scatterplotMatrix()    增强的散点图矩阵
vif()    方差膨胀因子

 

  • 正态性 qqPlot()

与基础包中的plot()函数相比,qqPlot()函数提供了更为精确的正态假设检验方法,它画出了在n-p-1个自由度的 t 分布下的 学生化残差(studentized residual,也称学生化删除残差或折叠化残差)图形。其中 n  是样本大小,p 是回归参数的数目(包括截距项)

> library(car)
> states <- as.data.frame(state.x77[,c("Murder", "Population",
+                                      "Illiteracy", "Income", "Frost")])
> fit <- lm(Murder ~ Population + Illiteracy + Income + Frost, data=states)
> qqPlot(fit, labels=row.names(states), id.method="identify",
+        simulate=TRUE, main="Q-Q Plot")

id.method = "identify"选项能够交互式绘图--待图形绘制后,用鼠标单击图形内的点,将会标注函数中labels选项的设定值,敲击 Esc键,从那个图形下拉菜单中选择Stop,或者在图形上右击,都将关门闭这种交互模式。

simulate = TRUE 时,95%的置信区间将会用参数自助法

07075519_5Zty.png

 

  •  residplot()

residplot()函数生成学生化残差柱状图(即直方图),并添加 正态曲线、核密度曲线和轴须图

通过这种方法来实现可视化,观察残差的正态性

residplot <- function(fit, nbreaks=10) {
  z <- rstudent(fit)
  hist(z, breaks=nbreaks, freq=FALSE,
       xlab="Studentized Residual",
       main="Distribution of Errors")
  rug(jitter(z), col="brown")
  curve(dnorm(x, mean=mean(z), sd=sd(z)),
        add=TRUE, col="blue", lwd=2)
  lines(density(z)$x, density(z)$y,
        col="red", lwd=2, lty=2)
  legend("topright",
         legend = c( "Normal Curve", "Kernel Density Curve"),
         lty=1:2, col=c("blue","red"), cex=.7)
}

residplot(fit)

07075519_xpHA.png

 

  • 线性

通过 成分残差图(compoet plus residual plot),也称 偏残差图(partial residual plot),查看出自变量与因变量之间是否呈非线性关系,也可以看看是否有不同于已设定线性模型的系统偏差,图形可以用car包中crplot()函数绘制

07075521_j9Ap.png

#如下图
library(car)
crPlots(fit)

若图形存在非线性,则说明对预测变量的函数形式建模不够充分,那么就需要添加一些曲线成分,比如多项式、或对一个或多个变量进行变换(如log(x)代替 x),或用其他回归变体形式而是不线性回归

07075522_CMmh.png

  • 同方差性ncvtest()

car包提供了两个有用的函数,可以判断误差方差是否恒定。 ncvtest()函数生成一个计分检验,零假设(原假设)误差方差不变,备择假设为误差方差随着拟合值水平的变化而变化,若检验显著,则说明存在异方差性(误差方差不恒定)

  spreadLevelPlot()函数创建一个添加了最佳拟合曲线的散点图,展示标准化残差绝对值与拟合值的关系,代码如下

#检验同方差性
#如下图
#H0为方差恒定  不显著
> library(car)
> ncvTest(fit)
Non-constant Variance Score Test 
Variance formula: ~ fitted.values 
Chisquare = 1.746514    Df = 1     p = 0.1863156   #显著水平为 α = 0.05,p > 0.05表示 α错误(H0)为真,但是我们却拒绝了)发生的概率大于5%,所以接受H0,计分检验不显著 
> spreadLevelPlot(fit)

Suggested power transformation:  1.209626 

可以得到计分检验不显著(p = 0.19),说明满足方差不变假设。

也可以可以通过分布水平图看到这一点,其中点在水平的最佳拟合曲线周围呈水平随机分布。若违反了该假设,你将会看到一个非水平曲线

代码结果建议幂次变换(suggested power transformation)的含义是,经过 07075522_i4LU.png 次幂( 07075522_p6SY.png)变换,非恒定的误差方差将会平稳。例如,若图形显示了非水平趋势,建议幂次转换为0.5,在回归等式中用  07075522_TjDq.png 代替 Y,可能会使模型那个满足同方差性,若建议幂次为0,则使用对数变换,对于当前例子,异方差习惯很不明显,因此建议幂次接近1(不需要进行变换)

07075522_6D69.png

转载于:https://my.oschina.net/u/1785519/blog/1563516

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值