前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R多元线性回归容易忽视的几个问题(4)异方差性的克服

R多元线性回归容易忽视的几个问题(4)异方差性的克服

作者头像
统计学家
发布2019-04-10 10:03:47
2.5K0
发布2019-04-10 10:03:47
举报
文章被收录于专栏:机器学习与统计学

(1)广义最小二乘法

设模型为

Y = + ε

其中E(ε) = 0,Var(ε) = E(εε′) =σ 2Ω≠σ 2I,假设Ω已知,且ΩI ,违反了线性回归模型的经典假定条件,所以应该对模型进行适当修正。因为Ω是一个n 阶正定矩阵,根据线性代数的知识,必存在一个非退化n×n 阶矩阵M使下式成立。MΩM= I n×n 可得:MM= Ω-1 用M左乘式回归模型两侧得MY =MXβ +Mε.Y*=MY, X*=MX, ε*= Mε , Y* = X*β + ε*则ε*的协差阵为Var(ε* ) = E(ε*ε*′ ) = E(MεεM′) = σ 2MΩM′=σ 2 I .

变换后模型的Var(ε* )是一个纯量对角矩阵。对变换后模型进行OLS 估计,得到的是β 的最佳线性无偏估计量。这种估计方法称作广义最小二乘法。β 的广义最小二乘估计量(generalized least squares estimator)为

可以证明广义最小二乘估计量 * ˆβ 为参数β 的最优线性无偏估计量.

续上例:

我们利用Glejser 方法进行检验,发现残差绝对值与Xi 存在| εi ˆ | =0.2576 (X i)1/2。把每个变量都除以0.2576 (X i)1/2,对变换后的数据做散点图

> agricul<-read.csv(file="11-2.csv") > y=agricul[,2] > x=agricul[,1] > ys<-y/(0.2576*sqrt(x)) > xs<-x/(0.2576*sqrt(x)) > plot(xs,ys)

可以看出已经不像变换前的散点图那样呈喇叭状。然后,我们对变换后的数据回归,做残差图

代码语言:javascript
复制
> lm.sa<-lm(ys~xs)
代码语言:javascript
复制
> summary(lm.sa)
代码语言:javascript
复制
Call:
代码语言:javascript
复制
lm(formula = ys ~ xs)
代码语言:javascript
复制
代码语言:javascript
复制
Residuals:
代码语言:javascript
复制
    Min      1Q  Median      3Q     Max 
代码语言:javascript
复制
-1.8039 -0.8791 -0.0481  0.6898  2.1778 
代码语言:javascript
复制
代码语言:javascript
复制
Coefficients:
代码语言:javascript
复制
             Estimate Std. Error t value Pr(>|t|)    
代码语言:javascript
复制
(Intercept) -0.099212   0.539252  -0.184    0.855    
代码语言:javascript
复制
xs           0.011824   0.001608   7.351 6.59e-08 ***
代码语言:javascript
复制
---
代码语言:javascript
复制
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
代码语言:javascript
复制
Residual standard error: 1.097 on 27 degrees of freedom
代码语言:javascript
复制
Multiple R-squared:  0.6668,       Adjusted R-squared:  0.6545 
代码语言:javascript
复制
F-statistic: 54.04 on 1 and 27 DF,  p-value: 6.592e-08
代码语言:javascript
复制
> plot(xs,resid(lm.sa)) #残差图

发现残差图也不呈喇叭型分布,说明基本消除了异方差。

(2)取对数

在实际中,很多情况,通过对模型的变量取对数降低异方差性的影响。比如

代码语言:javascript
复制

这是因为经过对数变换后的线性模型,其残差e *表示相对误差,而相对误差往往比绝对误差有较小的差异。变量都取对数,然后画散点图

代码语言:javascript
复制
> lny<-log(y)
代码语言:javascript
复制
> lnx<-log(x)
代码语言:javascript
复制
> plot(lnx,lny)
代码语言:javascript
复制

其散点图就不像取对数前呈喇叭状。

代码语言:javascript
复制
> lm.lna<-lm(lny~lnx)
代码语言:javascript
复制
> summary(lm.lna)
代码语言:javascript
复制
代码语言:javascript
复制
Call:
代码语言:javascript
复制
lm(formula = lny ~ lnx)
代码语言:javascript
复制
代码语言:javascript
复制
Residuals:
代码语言:javascript
复制
     Min       1Q   Median       3Q      Max 
代码语言:javascript
复制
-0.62287 -0.25197 -0.02322  0.32754  0.50315 
代码语言:javascript
复制
代码语言:javascript
复制
Coefficients:
代码语言:javascript
复制
            Estimate Std. Error t value Pr(>|t|)    
代码语言:javascript
复制
(Intercept) -4.18013    0.48969  -8.536 3.77e-09 ***
代码语言:javascript
复制
lnx          0.96253    0.05695  16.901 6.93e-16 ***
代码语言:javascript
复制
---
代码语言:javascript
复制
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
代码语言:javascript
复制
代码语言:javascript
复制
Residual standard error: 0.3235 on 27 degrees of freedom
代码语言:javascript
复制
Multiple R-squared:  0.9136,       Adjusted R-squared:  0.9104 
代码语言:javascript
复制
F-statistic: 285.6 on 1 and 27 DF,  p-value: 6.934e-16
代码语言:javascript
复制
> plot(lnx,resid(lm.lna)) #残差图

我们对取对数后的数据回归,做残差图,发现残差图(图11-12)也不呈喇叭型分布,说明基本消除了异方差。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与统计学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档