残差学习【转载】

转自:https://baike.baidu.com/item/%E6%AE%8B%E5%B7%AE/5162512#1

https://blog.csdn.net/mengjizhiyou/article/details/82216278

1.定义

在回归模型y=eta _{0}+eta _{1}x+varepsilon 中,假定varepsilon 的期望值为0,方差相等且服从正态分布的一个随机变量。但是,若关于varepsilon的假定不成立,此时所做的检验以及估计和预测也许站不住脚。

确定有关varepsilon的假定是否成立的方法之一是进行残差分析(residual analysis).

 //期望值为0,不是均值为0。方差相等,若以自变量为横轴,那么就是残差不会随着自变量的增大而变化。

2.残差 

普通残差就是使用预测值与真实值的差值。

 

减去残差的均值,比上残差的标准差。百科上是这么说的:

//这里计算方差,需要用到矩阵的性质吧,我还不太明白。

性质

3.残差图

 

分析:

(a)对所有x值,varepsilon的方差都相同,且描述变量x和y之间的回归模型是合理的,残差图中的所有点落在一条水平带中间。

(b)对所有的值,varepsilon的方差是不同的,对于较大的x值,相应的残差也较大,违背了varepsilon的方差相等的假设

(c)表明所选的回归模型不合理,应考虑曲线回归或多元回归模型。

 标准化残差图

如果误差项 varepsilon 服从正态分布的这一假定成立,则标准化残差的分布也服从正态分布。大约有95%的标准化残差在 -2~2 之间。

从图中可以看出,除了箭头所标识的点外,所有的标准化残差都在 -2~2 之间,所以误差项服从正态分布的假定成立。

3.R中计算残差

普通残差

转自:http://baijiahao.baidu.com/s?id=1581878577084855837&wfr=spider&for=pc

> x=c(274, 180, 375, 205, 86, 265, 98, 330, 195, 53, 430, 372, 236, 157, 370)
> y=c(162, 120, 223, 131, 67, 169, 81, 192, 116, 55,252, 234, 144, 103, 212)
> lm.reg<-lm(y~x)
> lm.reg

Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)            x  
    22.5959       0.5301  

> plot(x,y)
> plot(x,x*0.5301+22.5959)
> residuals(lm.reg)
         1          2          3          4          5          6          7          8 
-5.8371655  1.9901142  1.6250126 -0.2618219 -1.1826061  5.9335315  6.4564646 -5.5215024 
         9         10         11         12         13         14         15 
-9.9610475  4.3099496  1.4707532 14.2152450 -3.6942227 -2.8181046 -6.7246001 
> length(x)
[1] 15
> y-predict(lm.reg)
         1          2          3          4          5          6          7          8 
-5.8371655  1.9901142  1.6250126 -0.2618219 -1.1826061  5.9335315  6.4564646 -5.5215024 
         9         10         11         12         13         14         15 
-9.9610475  4.3099496  1.4707532 14.2152450 -3.6942227 -2.8181046 -6.7246001 
> predict(lm.reg)
        1         2         3         4         5         6         7         8         9 
167.83717 118.00989 221.37499 131.26182  68.18261 163.06647  74.54354 197.52150 125.96105 
       10        11        12        13        14        15 
 50.69005 250.52925 219.78476 147.69422 105.81810 218.72460 

其中,x和y的散点图:

标准化误差

> rstandard(lm.reg)#使用R的函数计算
         1          2          3          4          5          6          7          8 
-0.9416479  0.3235814  0.2754541 -0.0422737 -0.2046419  0.9558474  1.1044435 -0.9081795 
         9         10         11         12         13         14         15 
-1.6121139  0.7749377  0.2642816  2.4037012 -0.5942624 -0.4626949 -1.1352669 
> ?lm
> h=hatvalues(lm.reg)#调用帽子矩阵的对角线元素
> h
         1          2          3          4          5          6          7          8 
0.07211511 0.08661028 0.15960771 0.07372797 0.19358595 0.06949958 0.17478005 0.10743828 
         9         10         11         12         13         14         15 
0.07809592 0.25307344 0.25215275 0.15547037 0.06683869 0.10423942 0.15276447 
> mse=sum((residuals(lm.reg)-mean(residuals(lm.reg)))^2)/13#这里为什么要减去两个样本..不明白
> mse
[1] 41.41263
> standard_error= residuals(lm.reg)/(sqrt(mse*(1-h)))#用公式计算标准化残差
> standard_error
         1          2          3          4          5          6          7          8 
-0.9416479  0.3235814  0.2754541 -0.0422737 -0.2046419  0.9558474  1.1044435 -0.9081795 
         9         10         11         12         13         14         15 
-1.6121139  0.7749377  0.2642816  2.4037012 -0.5942624 -0.4626949 -1.1352669 

通过 标准化残差公式 计算得到的结果。

原文地址:https://www.cnblogs.com/BlueBlueSea/p/10291359.html