R语言回归诊断

> states<- as.data.frame(state.x77[,c("Murder", "Population","Illiteracy","Income","Frost")])

> fit <- lm(Murder ~ Population + Illiteracy + Income + Frost, data=states)

> confint(fit)

                    2.5 %      97.5 %

(Intercept) -6.552191e+00 9.0213182149

Population  4.136397e-05 0.0004059867

Illiteracy  2.381799e+00 5.9038743192

Income      -1.312611e-03 0.0014414600

Frost      -1.966781e-02 0.0208304170

> #结果表明,文盲率改变1%时,谋杀率就在95%的置信区间[2.38,5.90]中变化。另外,因为Frost的置信区间包含0,所以可以得出结论:当其他变量不变时,温度的改变与谋杀率无关。

标准方法

>fit <- lm(weight~ height, data=women)

> par(mfrow=c(2,2))

> plot(fit) #结果如下图

体重对身高回归的诊断图


正态性 当预测变量值固定时,因变量成正态分布,则残差值也应该是一个均值为0的正态分布。正态“Q-Q,右上”是正态分布对应的值下,标准化残差的概率图。拖满足正态分布,那么图上的点应该落在呈45°的直线上;否则,就违反了正态性的假设;

线性  若因变量和自变量线性相关,模型应该包含数据中所有的系统方差。在“残差图与拟合图,左上”中可以清楚地看到一个曲线关系,暗示着可能需要对回归模型加上一个二次项。

同方差性  若满足不变方差假设,那么“位置尺度图,左下”中,水平线周围的点应该随机分布。

残差与杠杆图(右下),提供了可能关注的单个观测点的信息,从图形中可以鉴别出离群点,高杆杠点和强影响点。

第二次修正

> fit2 <- lm(weight ~ height + I(height^2), data=women)

Warning message:

显示串列没有完全被刷新

> par(mfrow=c(2,2))

> plot(fit2)

二次修正

> #这儿的显示基本还算理想,但是观测点13和观测点15对整个回归的影响还是比较大,删除之后再看结果

> newfit<- lm(weight ~ height +I(height^2),data=women[-c(13,15),])

> par(mfrow=c(2,2))

Warning message:

显示串列没有完全被刷新

> plot(newfit)

体重对身高平方的回归诊断图

继续来看运用函数进行修正

car包提供了大量函数,大大增强了拟合和评价回归模型的能力

qqPlot()                     分位数比较图

durbinWatsonTest()  对误差自相关性做durbin-Watson检验

ncvTest()                     对非恒定的误差方法做的分检验

speardLevelPlot()       分散水平检验

outlierTest()                  bonferronni离群点检验

avluencePlot()              回归影响图

scatterplot()                  增强的散点图

scatterplotMatrix()        增强的散点图矩阵

vif()                                 方差膨胀因子

举例来说

> states <- as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])

> fit <- lm(Murder ~ Population + Illiteracy + Income + Frost, data=states)

> par(mfrow=c(2,2))

> plot(fit)

谋杀率对州各因素的回归诊断图

很明显,结果中“Nevada”是对结果的影响就比较大,属于噪点

可视化误差:

> states["Nevada",]

      Murder Population Illiteracy Income Frost

Nevada  11.5        590        0.5  5149  188

> fitted(fit)["Nevada"] #显示拟合值

  Nevada

3.878958

> residuals(fit)["Nevada"] #残差拟合值

  Nevada

7.621042

> rstudent(fit)["Nevada"]

  Nevada

3.542929

> #可见,Nevada有一个很大的正残差值(真实值-预测值),表明该模型低估了该州的谋杀率。Nevada的谋杀率是11.5%,而模型预测的谋杀率是3.9%。

绘制学生化残差图函数

> residplot<- function(fit, nbreaks=10){

+ z<- rstudent(fit)

+ hist(z, breaks=nbreaks,fre=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, Ity=2)

+ legend("topright", legend=c("Normal Curve","Kernel Density Curve"), Ity=1:2, col=c("blue","red"), cex=.7)

+ }

> residplot(fit)

结果如下:

绘制学生化残差图

线性模型假设的综合验证

gvlma( )函数由pena和slate编写,能对线性模型假设进行综合验证,同时还能做偏斜度、峰度和差异方差性的评价。

> library(gvlma)

> gvmodel<- gvlma(fit)

> summary(gvmodel)

Call:

lm(formula = Murder ~ Population + Illiteracy + Income + Frost,

    data = states)

Residuals:

    Min      1Q  Median      3Q    Max

-4.7960 -1.6495 -0.0811  1.4815  7.6210

Coefficients:

            Estimate Std. Error t value Pr(>|t|)   

(Intercept) 1.235e+00  3.866e+00  0.319  0.7510   

Population  2.237e-04  9.052e-05  2.471  0.0173 * 

Illiteracy  4.143e+00  8.744e-01  4.738 2.19e-05 ***

Income      6.442e-05  6.837e-04  0.094  0.9253   

Frost      5.813e-04  1.005e-02  0.058  0.9541   

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.535 on 45 degrees of freedom

Multiple R-squared:  0.567,    Adjusted R-squared:  0.5285

F-statistic: 14.73 on 4 and 45 DF,  p-value: 9.133e-08

ASSESSMENT OF THE LINEAR MODEL ASSUMPTIONS

USING THE GLOBAL TEST ON 4 DEGREES-OF-FREEDOM:

Level of Significance =  0.05

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.

> #该结果中的P=0.597,高于显著性水平,因此接受原假设。


R语言回归诊断的基本知识到这就结束了,咱们下期再见!O(∩_∩)O哈哈~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容