回归诊断

回归诊断


1.样本是否符合正态分布假设?

2.是否存在离群值导致模型发生较大误差?

3.线性模型是否合理?

4.误差是否满足独立性、等方差、正态分布等假设条件?

5.是否存在多重共线性


正态分布检验:函数shapiro.test()

P>0.05,正态分布

例题1

Anscomber数据

数据 1-3 1 2 3 4 4
X Y Y Y X Y
1 10.0 8.04 9.14 7.46 8.0 6.58
2 8.0 6.95 8.14 6.77 8.0 5.76
3 13.0 7.58 8.74 12.74 8.0 7.71
4 9.0 8.81 8.77 7.11 8.0 7.04
5 11.0 8.33 9.26 7.81 8.0 8.47
6 14.0 9.96 8.10 8.84 8.0 7.04
7 6.0 7.24 6.13 6.08 8.0 5.25
8 4.0 4.26 3.10 5.39 19.0 12.50
9 12.0 10.84 9.13 8.15 8.0 5.56
10 7.0 4.82 7.26 6.44 8.0 7.91
11 5.0 5.68 4.74 5.73 8.0 6.89

表给出的四组人造数据,每组数据集由11对点(xi,yi)组成,拟合于简单线性模型



试分析四组数据是否通过回归方程的检验,并用图形分析每组数据的基本情况。

解:输入数据,作回归分析(程序名:exam0611.R)

> Anscombe<-data.frame(
+ X=c(10.0, 8.0, 13.0, 9.0, 11.0, 14.0, 6.0, 4.0, 12.0, 7.0, 5.0),
+ Y1=c(8.04,6.95, 7.58,8.81,8.33,9.96,7.24,4.26,10.84,4.82,5.68),
+ Y2=c(9.14,8.14, 8.74,8.77,9.26,8.10,6.13,3.10, 9.13,7.26,4.74),
+ Y3=c(7.46,6.77,12.74,7.11,7.81,8.84,6.08,5.39, 8.15,6.44,5.73),
+ X4=c(rep(8,7), 19, rep(8,3)),
+ Y4=c(6.58,5.76,7.71,8.84,8.47,7.04,5.25,12.50, 5.56,7.91,6.89)
+ )
> summary(lm(Y1~X, data=Anscombe))

Call:
lm(formula = Y1 ~ X, data = Anscombe)

Residuals:
Min 1Q Median 3Q Max
-1.92127 -0.45577 -0.04136 0.70941 1.83882

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.0001 1.1247 2.667 0.02573 *
X 0.5001 0.1179 4.241 0.00217 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.237 on 9 degrees of freedom
Multiple R-squared: 0.6665, Adjusted R-squared: 0.6295
F-statistic: 17.99 on 1 and 9 DF, p-value: 0.00217

> summary(lm(Y2~X, data=Anscombe))

Call:
lm(formula = Y2 ~ X, data = Anscombe)

Residuals:
Min 1Q Median 3Q Max
-1.9009 -0.7609 0.1291 0.9491 1.2691

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.001 1.125 2.667 0.02576 *
X 0.500 0.118 4.239 0.00218 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.237 on 9 degrees of freedom
Multiple R-squared: 0.6662, Adjusted R-squared: 0.6292
F-statistic: 17.97 on 1 and 9 DF, p-value: 0.002179

> summary(lm(Y3~X, data=Anscombe))

Call:
lm(formula = Y3 ~ X, data = Anscombe)

Residuals:
Min 1Q Median 3Q Max
-1.1586 -0.6159 -0.2325 0.1510 3.2407

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.0075 1.1244 2.675 0.02542 *
X 0.4994 0.1179 4.237 0.00218 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.236 on 9 degrees of freedom
Multiple R-squared: 0.666, Adjusted R-squared: 0.6289
F-statistic: 17.95 on 1 and 9 DF, p-value: 0.002185

> summary(lm(Y4~X4, data=Anscombe))

Call:
lm(formula = Y4 ~ X4, data = Anscombe)

Residuals:
Min 1Q Median 3Q Max
-1.751 -0.831 0.000 0.809 1.839

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.0017 1.1239 2.671 0.02559 *
X4 0.4999 0.1178 4.243 0.00216 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.236 on 9 degrees of freedom
Multiple R-squared: 0.6667, Adjusted R-squared: 0.6297
F-statistic: 18 on 1 and 9 DF, p-value: 0.002165
系数 估计值 标准差 t-值 P-值
3.0 1.125 2.67 0.026
0.5 0.118 4.24 0.0022
方程 =1.24 =0.667 F=17.99 P=0.002

这四组数据的计算结果由上表所示(最多有0.01的误差)。从表所列结果,说明这四组数据全部能通过模型检验和方程的系数检验。由于每个数据集得到的各种统计量的值是相同的,因此,可能会认为每个数据集合对于线性模型会同等的适用,但事实并非如此。

我们画出四组数据的散点图和相应的回归直线。

> attach(Anscombe)
> par(mfrow=c(2,2))
> plot(Y1~X);abline(lm(Y1~X))
> plot(Y2~X);abline(lm(Y2~X))
> plot(Y3~X);abline(lm(Y3~X))
> plot(Y4~X4);abline(lm(Y4~X4))

第一个数据集合,如果简单线性回归模型合适的话,这就是我们所期望看到的数据集合。第二个数据集合,它给出一个不同的结论,即基于简单线性回归分析是不正确的,而一条光滑曲线,可能是二次多项式,可以以较小的剩余变异拟合数据。

> lm2.sol<-lm(Y2~X+I(X^2));summary(lm2.sol)

Call:
lm(formula = Y2 ~ X + I(X^2))

Residuals:
Min 1Q Median 3Q Max
-0.0013287 -0.0011888 -0.0006294 0.0008741 0.0023776

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -5.9957343 0.0043299 -1385 <2e-16 ***
X 2.7808392 0.0010401 2674 <2e-16 ***
I(X^2) -0.1267133 0.0000571 -2219 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.001672 on 8 degrees of freedom
Multiple R-squared: 1, Adjusted R-squared: 1
F-statistic: 7.378e+06 on 2 and 8 DF, p-value: < 2.2e-16

因此,回归方程为



更合理(见下图)

> x<-seq(min(X),max(X),len=200)
> y<-predict(lm2.sol,data.frame(X=x))
> plot(Y2~X);lines(x,y)

第三个数据集合表示,简单回归的描述对于大部分数据是正确的,但一个样本距离拟合回归直线太远,这称为异常值问题。很可能需要从数据集合中删除那个与其他数据不匹配的数据样本,回归需要根据剩下的10个样本重新拟合。

> i<-1:11;Y31<-Y3[i!=3];X3<-X[i!=3]
> lm3.sol<-lm(Y31~X3);summary(lm3.sol)

Call:
lm(formula = Y31 ~ X3)

Residuals:
Min 1Q Median 3Q Max
-0.0060173 -0.0012121 -0.0010173 -0.0008225 0.0140693

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.0106277 0.0057115 702.2 <2e-16 ***
X3 0.3450433 0.0006262 551.0 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.006019 on 8 degrees of freedom
Multiple R-squared: 1, Adjusted R-squared: 1
F-statistic: 3.036e+05 on 1 and 8 DF, p-value: < 2.2e-16

得到的线性回归方程为



下图绘出修正后的直线方程

> plot(Y3~X);abline(lm3.sol)

最后一个数据集合与上述三个不同,没有足够的信息来对拟合模型作出判断。斜率参数的估计值很大程度上由的值来决定。如果第8号样本被删除,则不能估计。因此,我们无法相信这个一个综合分析,它对单个样本如此依赖。

例题2

Forbes数据

在十九世纪四、五十年代,苏格兰物理学家James D.Forbes,试图通过水的沸点来估计海拔高度。他知道通过气压计测得的大气压可用于得到海拔高度,高度越高,气压越低。在这里讨论的实验中,他研究了气压和沸点之间的关系,由于在当时,运输精密的气压计相当困难,这引起了他研究此问题的兴趣,测量沸点将给旅行者提供一个快速估计高度的方法。

Forbes在阿尔卑斯山及苏格兰收集数据,选定地点后,他装起仪器,测量气压及沸点,气压单位采用水银柱高度,并根据测量时周围气温与标准气温之间的差异校准气压,沸点用华氏温度来表示。我们从他1857年的论文中选取了个地方的数据,见下表。

在阿尔卑斯山及苏格兰的17个地方沸点(℉)及大气压(英寸汞柱)的Forbes数据

案例号 沸点(℉) 气压(英寸汞柱) log(气压) 100×log(气压)
1 194.5 20.79 1.3179 131.79
2 194.3 20.79 1.379 131.79
3 197.9 22.40 1.3502 135.02
4 198.4 22.67 1.3555 135.55
5 199.4 23.15 1.3646 136.46
6 199.9 23.35 1.3683 136.83
7 200.9 23.89 1.3782 137.82
8 201.1 23.00 1.3800 138.00
9 201.4 24.02 1.3806 138.06
10 201.3 24.01 1.3805 138.05
11 203.6 25.14 1.4004 140.04
12 204.6 26.57 1.4244 142.44
13 209.5 28.49 1.4547 145.47
14 208.6 27.76 1.4434 144.34
15 210.7 29.04 1.4630 146.30
16 211.9 29.88 1.4754 147.54
17 212.2 30.06 1.4780 147.80

分析过程:

Forbes的理论认为,在观测值范围内,沸点和气压值的对数成一直线。由此,取10作为对数的底数。事实上,统计分析与对数的底是没有关系的。由于气压对数据值变化不大,最小值为1.318,而最大的为1.478,因此将所有气压的对数值乘以100,如表中第5列。这将不改变分析的主要性质的同时,避免研究非常小的数字。

求解过程:

输入数据,画出散点图(程序名:exam0804.R)

> X <- matrix(c(
+ 194.5, 20.79, 1.3179, 131.79,
+ 194.3, 20.79, 1.3179, 131.79,
+ 197.9, 22.40, 1.3502, 135.02,
+ 198.4, 22.67, 1.3555, 135.55,
+ 199.4, 23.15, 1.3646, 136.46,
+ 199.9, 23.35, 1.3683, 136.83,
+ 200.9, 23.89, 1.3782, 137.82,
+ 201.1, 23.99, 1.3800, 138.00,
+ 201.4, 24.02, 1.3806, 138.06,
+ 201.3, 24.01, 1.3805, 138.05,
+ 203.6, 25.14, 1.4004, 140.04,
+ 204.6, 26.57, 1.4244, 142.44,
+ 209.5, 28.49, 1.4547, 145.47,
+ 208.6, 27.76, 1.4434, 144.34,
+ 210.7, 29.04, 1.4630, 146.30,
+ 211.9, 29.88, 1.4754, 147.54,
+ 212.2, 30.06, 1.4780, 147.80),
+ ncol=4, byrow=T,
+ dimnames = list(1:17, c("F", "h", "log", "log100")))
> forbes<-as.data.frame(X)
> plot(forbes$F,forbes$log100)

Forbes数据的散点图的总的印象是,这些点基本上,但并不精确地,落在一条直线上,作回归分析

> lm.sol<-lm(log100~F,data=forbes)
> summary(lm.sol)

Call:
lm(formula = log100 ~ F, data = forbes)

Residuals:
Min 1Q Median 3Q Max
-0.32261 -0.14530 -0.06750 0.02111 1.35924

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -42.13087 3.33895 -12.62 2.17e-09 ***
F 0.89546 0.01645 54.45 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3789 on 15 degrees of freedom
Multiple R-squared: 0.995, Adjusted R-squared: 0.9946
F-statistic: 2965 on 1 and 15 DF, p-value: < 2.2e-16

由计算结果得到:



对应于两个系数的P-值均,是非常显著的。

关于方程的检验,残差标准差,。相关系数的平方,,关于F-分布的P-值,也是非常显著的。

该模型能过t检验和F检验,因此,回归方程为



我们将得到的直线方程画在散点图上

> abline(lm.sol)



得到散点图和相应的回归直线,如图所示

下面分析残差,称



为回归方程的残差

在R中,函数residuals()计算回归方程残差。计算残差,并画出关于残差的散点图

> y.res<-residuals(lm.sol);plot(y.res)
> text(12,y.res[12],labels=12,adj=1.2)



其中text(12,y.res[12],labels=12,adj=1.2)是将第12号残差点标出。

从图中可以看到,第12个样本点可能会有问题,它比其他的样本点的残差大得多,因为其他点的残差的绝对值都小于0.35,而此点残差的绝对值均为1.3,因此,这个点可能不正确,或者模型的差假设不正确,或者是不是常数,等等。总之,需要对这个问题进行分析。

这里作简单处理,在,数据汇总,去掉第12号样本点

> i<-1:17;forbes12<-as.data.frame(X[i!=12,])
> lm12<-lm(log100~F, data=forbes12)
> summary(lm12)

Call:
lm(formula = log100 ~ F, data = forbes12)

Residuals:
Min 1Q Median 3Q Max
-0.21175 -0.06194 0.01590 0.09077 0.13042

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -41.30180 1.00038 -41.29 5.01e-16 ***
F 0.89096 0.00493 180.73 < 2e-16 ***

在去掉第12号样本点后,回归方程的系数没有太大变化,但系数标准差和残差的标准差有很大的变化,减少了约3倍左右,相关系数也有提高。

在计算完回归模型后,计算其残差,并用shapiro.test()函数作残差的正态性检验

> y.res<-residuals(lm.sol)
> shapiro.test(y.res)

Shapiro-Wilk normality test

data: y.res
W = 0.54654, p-value = 3.302e-06

因此,残差不满足正态性假设。

在去掉第12号样本之后,再对所得到的回归模型的残差进行正态性检验

> y12.res<-residuals(lm12)
> shapiro.test(y12.res)

Shapiro-Wilk normality test

data: y12.res
W = 0.92215, p-value = 0.1827

能通过正态性检验,因此,去掉12号样本点是合理的。

R与数据分析旧笔记(⑦)回归诊断的更多相关文章

  1. R与数据分析旧笔记(五)数学分析基本

    R语言的各种分布函数 rnorm(n,mean=0,sd=1)#高斯(正态) rexp(n,rate=1)#指数 rgamma(n,shape,scale=1)#γ分布 rpois(n,lambda) ...

  2. R与数据分析旧笔记(三)不知道取什么题目

    连线图 > a=c(2,3,4,5,6) > b=c(4,7,8,9,12) > plot(a,b,type="l") 多条曲线效果 plot(rain$Toky ...

  3. R与数据分析旧笔记(一)基本数学函数的使用

    创建向量矩阵 > x1=c(2,3,6,8) > x2=c(1,2,3,4) > a1=(1:100) > length(a1) [1] 100 > length(x1) ...

  4. R与数据分析旧笔记(十八完结) 因子分析

    因子分析 因子分析 降维的一种方法,是主成分分析的推广和发展 是用于分析隐藏在表面现象背后的因子作用的统计模型.试图用最少的个数的不可测的公共因子的线性函数与特殊因子之和来描述原来观测的每一分量 因子 ...

  5. R与数据分析旧笔记(十七) 主成分分析

    主成分分析 主成分分析 Pearson于1901年提出的,再由Hotelling(1933)加以发展的一种多变量统计方法 通过析取主成分显出最大的个别差异,也用来削减回归分析和聚类分析中变量的数目 可 ...

  6. R与数据分析旧笔记(十六) 基于密度的方法:DBSCAN

    基于密度的方法:DBSCAN 基于密度的方法:DBSCAN DBSCAN=Density-Based Spatial Clustering of Applications with Noise 本算法 ...

  7. R与数据分析旧笔记(十五) 基于有代表性的点的技术:K中心聚类法

    基于有代表性的点的技术:K中心聚类法 基于有代表性的点的技术:K中心聚类法 算法步骤 随机选择k个点作为"中心点" 计算剩余的点到这个k中心点的距离,每个点被分配到最近的中心点组成 ...

  8. R与数据分析旧笔记(十三) 聚类初步

    聚类 聚类 关键度量指标:距离 常用距离 绝对值距离 绝对值距离也称为"棋盘距离"或"城市街区距离". 欧氏(Euclide)距离 闵可夫斯基(Minkowsk ...

  9. R与数据分析旧笔记(十一)数据挖掘初步

    PART 1 PART 1 传统回归模型的困难 1.为什么一定是线性的?或某种非线性模型? 2.过分依赖于分析者的经验 3.对于非连续的离散数据难以处理 网格方法 <Science>上的文 ...

随机推荐

  1. POJ2063 Investment 【全然背包】

    Investment Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 8019   Accepted: 2747 Descri ...

  2. jQuery+PHP实现的砸金蛋中奖程序

    准备 我们需要准备道具(素材),即相关图片,包括金蛋图片.蛋砸碎后的图片.砸碎后的碎花图片.以及锤子图片. HTML 我们页面上要展现的是一个砸金蛋的台子,台上放了编号为1,2,3的三个金蛋,以及一把 ...

  3. OC中两个关键字的作用:@property和@synthesize

    两个关键字的使用:@property和@synthesize 一.@property关键字这个关键字是OC中能够快速的定义一个属性的方式,而且他可以设置一些值,就可以达到一定的效果,比如引用计数的问题 ...

  4. zendStudio常用快捷键整理

    在来一发zendstudio的常用快捷键整理,今天心情不错哈哈 Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ct ...

  5. C++ 数据结构学习二(单链表)

    模板类 //LinkList.h 单链表#ifndef LINK_LIST_HXX#define LINK_LIST_HXX#include <iostream>using namespa ...

  6. 《UNIX环境高级编程》笔记--线程的标识、创建和终止

    1.线程标识 就像每个进程都有一个进程ID一样,每个线程都有一个线程ID.进程ID在整个系统中是唯一的,但线程ID只在它所属的 进程环境中有效. 线程ID使用pthread_t数据类型来表示,实现的时 ...

  7. 关于webapp中的文字单位的一些捣腾

    前言 文字是网页内容的一枚大将,我们无时无刻都在看着它,只要是你盯屏幕上的任何一个地方都会有文字.地铁上无时无刻都在盯着屏幕上的人对于文字更为敏感,太大不行,太小TN又看不清上面到底在说什么,有时候车 ...

  8. [MUD]MUDLIB详解/MUDOS运行流程/最小MUDLIB/mud文件结构

    现在大部分中文MUD都是在东方故事(esII)基础上发展起来的,其目录结构基本一样, 也有个别MUD为了标新立异对个别目录换了个名字以示不同,但其实质没有什么变化. 这个做的最可恶的是xkx,把一个好 ...

  9. 5 Logistic回归(二)

    5.2.4 训练算法:随机梯度上升 梯度上升算法:在每次更新回归系数时都需要遍历整个数据集,在数十亿样本上该算法复杂度太高. 改进方法:随机梯度上升算法:一次仅用一个样本点更新回归系数. 由于可以在新 ...

  10. CSS自学笔记(6):CSS的模型

    CSS 框模型 (Box Model) 规定了元素框处理元素内容.内边距.边框和外边距的方式. 图片来源:w3school.com.cn 元素(element)是一个html文档的实际内容区域,依次由 ...