多元线性回归——自相关(二)

自相关问题®

1 什么是自相关

经典普通最小二乘法估计的假设之一是扰动项不存在自相关,即对于 ∀ i ≠ j \forall i\ne j i=j,都有
C o v ( μ i , μ j ) = 0 Cov(\mu_i,\mu_j)=0 Cov(μi,μj)=0
不成立。如何扰动项之间存在相关性,则采用OLS得到的估计量不是最佳的。一个二阶自相关问题用数学模型可以表示为
{ y t = α + β x t + μ t μ t = ρ 1 μ t − 1 + ρ 2 μ t − 2 + v t E ( v t ) = 0 ; V a r ( v t ) = σ 2 \left\{\begin{array}{l} y_t = \alpha+\beta x_t+\mu_t\\ \mu_t = \rho_1\mu_{t-1}+\rho_2\mu_{t-2}+v_t\\ E(v_t) = 0;Var(v_t) = \sigma^2 \end{array}\right. yt=α+βxt+μtμt=ρ1μt1+ρ2μt2+vtE(vt)=0;Var(vt)=σ2
上述模型表明,自相关问题体现在扰动项上,即扰动项是一个自回归AR过程,而线性模型 y t = α + β x t + μ t y_t = \alpha+\beta x_t+\mu_t yt=α+βxt+μt的扰动项存在AR过程则该模型存在自相关问题。将扰动项AR代入线性模型得到
y t = α + β x t + ρ 1 μ t − 1 + ρ 2 μ t − 2 + v t E ( v t ) = 0 ; V a r ( v t ) = σ 2 y_t = \alpha+\beta x_t+\rho_1\mu_{t-1}+\rho_2\mu_{t-2}+v_t\\ E(v_t) = 0;Var(v_t) = \sigma^2 yt=α+βxt+ρ1μt1+ρ2μt2+vtE(vt)=0;Var(vt)=σ2

2 自相关产生的原因

  • 经济系统的惯性(通胀)
  • 经济活动滞后效应(蛛网现象)
  • 模型设定问题

3 自相关的后果

  • 无偏性:无偏性推导过程中没有用到关于扰动项的方差协方差矩阵,因此不会影响估计量的无偏性。
  • 最佳性:估计量方差推导使用了扰动项的方差协方差矩阵,由于扰动项不再满足球形扰动假设,最佳性不再满足。
  • t统计量:t统计量是估计量与相应标准误的比值,分母不再是最小的,则t统计量减小,可能影响显著性,以及区间估计和假设检验。

4 自相关检验

对于一阶自相关问题,常用的检验方法是DW检验,其中
D W = 2 − 2 ρ ^ DW = 2-2\hat\rho DW=22ρ^
其中 ρ ^ \hat\rho ρ^ 是扰动项一阶自相关系数。根据 D W DW DW统计量与相应的临界值比较,可以判断该模型是否存在自相关问题,以及正或负自相关问题。但DW检验存在如下问题:

  • DW检验存在统计值盲区,在该盲区内无法判断是否存在自相关
  • DW检验仅适合一阶自相关检验,对高阶自相关失效
  • DW检验的模型不能以被解释变量滞后项为自变量
  • DW检验需要大样本作支撑,以提高检验所需的自由度
  • 需要先验证据论证存在一阶自相关问题,而非高阶自相关问题

对于高阶自相关问题,可以采用BG检验(T.S.Breusch and L.G.Godfrey test)方法,也称为拉格朗日(LM)检验方法。操作步骤是

1、使用OLS估计得到残差

2、用残差对所有自变量以及自变量的滞后项作回归,滞后阶数可以由从小到大或从大到小的序贯原则确定,也可使用AI或BIC准则确定。

3、若残差滞后项对应自相关估计量显著,表明存在自相关,阶数即显著的自相关系数对应的最大滞后项。

其他一些方法,如利用残差对其滞后项作回归,滞后阶数与上面BG检验类似,或者检验残差及滞后项的相关系数,或画散点图作经验分析。

5 自相关补救

补救方法可使用广义差分法(是可行加权最小二乘法(FGLS)特殊情况),OLS+异方差自相关稳健标准误(Nwey-West)。下面是广义差分法的操作步骤。对于一阶自相关问题
{ Y t = β 1 + β 2 X t + μ t μ t = ρ μ t − 1 + v t \left\{\begin{array}{l} Y_t = \beta_1+\beta_2 X_t+\mu_t\\ \mu_t = \rho\mu_{t-1}+v_t\\ \end{array}\right. {Yt=β1+β2Xt+μtμt=ρμt1+vt
将线性模型滞后一期
Y t − 1 = β 1 + β 2 X t − 1 + u t − 1 Y_{t-1}=\beta_{1}+\beta_{2} X_{t-1}+u_{t-1} Yt1=β1+β2Xt1+ut1
两边同时乘以 ρ \rho ρ
ρ Y t − 1 = ρ β 1 + ρ β 2 X t + ρ u t − 1 \rho Y_{t-1}=\rho \beta_{1}+\rho \beta_{2} X_{t}+\rho u_{t-1} ρYt1=ρβ1+ρβ2Xt+ρut1
本期减滞后期
Y t − ρ Y t − 1 = β 1 ( 1 − ρ ) + β 2 ( X t − ρ X t − 1 ) + u t − ρ u t − 1 Y_{t}-\rho Y_{t-1}=\beta_{1}(1-\rho)+\beta_{2}\left(X_{t}-\rho X_{t-1}\right)+u_{t}-\rho u_{t-1} YtρYt1=β1(1ρ)+β2(XtρXt1)+utρut1
此时新扰动项为 v t v_t vt满足经典假设。令 Y t ∗ = Y t − ρ Y t − 1 , X t ∗ = X t − ρ X t − 1 , β 1 ∗ = β 1 ( 1 − ρ ) Y_{t}^{*}=Y_{t}-\rho Y_{t-1}, X_{t}^{*}=X_{t}-\rho X_{t-1}, \quad \beta_{1}^{*}=\beta_{1}(1-\rho) Yt=YtρYt1,Xt=XtρXt1,β1=β1(1ρ),则新估计方程为
Y t ∗ = β 1 ∗ + β 2 X t ∗ + v t Y_{t}^{*}=\beta_{1}^{*}+\beta_{2} X_{t}^{*}+v_{t} Yt=β1+β2Xt+vt
可以发现,通过广义差分得到估计系数 β 2 \beta_2 β2未发生改变,即新方程的斜率就是原方程自变量对因变量的边际效应。

6 R语言操作

下面通过数据模拟方式对以上关键步骤进行模拟。数据模拟过程也是对自相关问题数据生成过程的理解。扰动项的AR(2)数据过程为

rm(list = ls())
library(lmtest)
set.seed(10)
N = 1000
# 扰动项自相关生成
err = rnorm(N,0,1)
# AR(2)过程
e = filter(err,c(-0.6,0.2),method="recursive")
par(mfrow = c(1,1))
plot(e)
OLS_e =  lm(e[1:(N-2)]~1+e[2:(N-1)]+e[3:N])
summary(OLS_e)
# Call:
#   lm(formula = e[1:(N - 2)] ~ 1 + e[2:(N - 1)] + e[3:N])
# 
# Residuals:
#   Min     1Q Median     3Q    Max 
# -3.462 -0.673 -0.026  0.660  3.014 
# 
# Coefficients:
#               Estimate Std. Error t value Pr(>|t|)    
# (Intercept)    0.0109     0.0314    0.35     0.73    
# e[2:(N - 1)]  -0.5472     0.0309  -17.72  < 2e-16 ***
# e[3:N]         0.2275     0.0309    7.37  3.6e-13 ***
#   ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 0.992 on 995 degrees of freedom
# Multiple R-squared:  0.528,	Adjusted R-squared:  0.527 
# F-statistic:  555 on 2 and 995 DF,  p-value: <2e-16

利用filter函数即可生成AR(2),回归的自相关系数与设定的自相关系数非常接近。下面产生自变量和因变量

# DGP-xy
x = rnorm(N,1,2)
y = 1 +0.5*x + e
OLS = lm(y~1 + x)
summary(OLS)

结果如下:

# Call:
#   lm(formula = y ~ 1 + x)
# 
# Residuals:
#   Min     1Q Median     3Q    Max 
# -4.974 -1.028  0.015  0.991  3.913 
# 
# Coefficients:
#              Estimate Std. Error t value Pr(>|t|)    
# (Intercept)   1.0166     0.0508    20.0   <2e-16 ***
# x             0.4917     0.0218    22.5   <2e-16 ***
#   ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 1.44 on 998 degrees of freedom
# Multiple R-squared:  0.337,	Adjusted R-squared:  0.336 
# F-statistic:  507 on 1 and 998 DF,  p-value: <2e-16

在这里插入图片描述

一个自相关问题的线性模型就生成好了,开始进行检验。第一种方法采用DW检验

# 自相关检验
dwtest(y ~ x)
Durbin-Watson test

data:  y ~ x
DW = 3.41, p-value = 1
alternative hypothesis: true autocorrelation is greater than 0

p值竟然为1,选择不拒绝原假设是有问题的,因为DW检验仅适合一阶自相关问题。本问题是二阶自相关,检验失效。采用BG检验方法,先进性三阶自相关检验

# BG检验
bg3 = bgtest(y ~ 1+x,order = 3)
coeftest(bg3)
# z test of coefficients:
#   
#                Estimate Std. Error z value Pr(>|z|)    
# (Intercept)   -0.0298     0.0350   -0.85    0.394    
# x              0.0290     0.0151    1.93    0.054 .  
# lag(resid)_1  -0.5498     0.0316  -17.38  < 2e-16 ***
# lag(resid)_2   0.2393     0.0354    6.76  1.4e-11 ***
# lag(resid)_3   0.0158     0.0317    0.50    0.617    
# ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

结果表明三阶滞后并不显著,但一二阶非常显著,考虑使用将参数order 取值为2

bg2 = bgtest(y ~ 1+x,order = 2)
coeftest(bg2)
# z test of coefficients:
#   
#               Estimate Std. Error z value Pr(>|z|)    
# (Intercept)   -0.0296     0.0350   -0.85    0.398    
# x              0.0288     0.0151    1.91    0.056 .  
# lag(resid)_1  -0.5462     0.0308  -17.74  < 2e-16 ***
# lag(resid)_2   0.2306     0.0308    7.48  7.5e-14 ***
#   ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

故原模型存在二阶自相关。再使用散点图,分析本期残差与向前一期和二期的走势

par(mfrow = c(1,2))
r = as.numeric(OLS$res)
plot(r[1:(N-1)],r[2:N],xlab = expression(e[t]),
     ylab = expression(e[t-1]))
plot(r[1:(N-2)],r[3:N],xlab = expression(e[t]),
     ylab = expression(e[t-2]))

在这里插入图片描述

可以发现残差滞后一期与本期存在负相关,与滞后两期存在正相关。使用回归检验方法,还能粗略获取相关系数

# 回归检验法
OLS_r =  lm(r[1:(N-2)]~1+r[2:(N-1)]+r[3:N])
# OLS_r =  lm(r[1:(N-3)]~1+r[2:(N-2)]+r[3:(N-1)]+r[4:N])
summary(OLS_r)
# Call:
#   lm(formula = r[1:(N - 2)] ~ 1 + r[2:(N - 1)] + r[3:N])
# 
# Residuals:
#   Min     1Q Median     3Q    Max 
# -3.470 -0.671 -0.026  0.666  2.961 
# 
# Coefficients:
#   Estimate Std. Error t value Pr(>|t|)    
# (Intercept)   0.000287   0.031451    0.01     0.99    
# r[2:(N - 1)] -0.546255   0.030869  -17.70  < 2e-16 ***
# r[3:N]        0.227704   0.030869    7.38  3.4e-13 ***
#   ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 0.994 on 995 degrees of freedom
# Multiple R-squared:  0.526,	Adjusted R-squared:  0.525 
# F-statistic:  553 on 2 and 995 DF,  p-value: <2e-16

结果表明一阶自相关系数为 ρ 1 = − 0.546 \rho_1 = -0.546 ρ1=0.546, ρ 2 = 0.227 \rho_2 = 0.227 ρ2=0.227。与最初设定的-0.6和0.2较为接近。检验结果除了DW外,都表明存在二阶自相关,下面使用广义差分法进行补救。

# BG检验表明存在AR(2),粗略估计一阶自相关系数和二阶自相关系数
bg2 = bgtest(y ~ 1+x,order = 2)
rho1 = as.numeric(bg2$coefficients[3])
rho2 = as.numeric(bg2$coefficients[4])
# 采用广义差分法
new.y = y[1:(N-2)] - rho1*y[2:(N-1)] - rho2*y[3:N]
new.x = x[1:(N-2)] - rho1*x[2:(N-1)] - rho2*x[3:N]
OLS2 = lm(new.y~new.x)
# 广义差分不改变斜率,只改变截距
summary(OLS2)
# Call:
#   lm(formula = new.y ~ new.x)
# 
# Residuals:
#   Min     1Q Median     3Q    Max 
# -3.443 -0.681 -0.009  0.657  3.160 
# 
# Coefficients:
#              Estimate Std. Error t value Pr(>|t|)    
# (Intercept)   1.2950     0.0360    36.0   <2e-16 ***
# new.x         0.5232     0.0131    40.1   <2e-16 ***
#   ---
#   Signif. codes:  
#   0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 0.99 on 996 degrees of freedom
# Multiple R-squared:  0.617,	Adjusted R-squared:  0.617 
# F-statistic: 1.61e+03 on 1 and 996 DF,  p-value: <2e-16

再次进行BG检验

bgtest(OLS2,order = 2)
# Breusch-Godfrey test for serial correlation of order
# up to 2
# 
# data:  OLS2
# LM test = 0.342, df = 2, p-value = 0.84

表明不存在二阶自相关问题。前面的自相关系数是通过BG辅助回归获取,现在使用相关系数获取

# 对于AR(2)过程,简单相关系数过于粗略
rho1 = cor(r[1:(N-1)],r[2:N])
rho2 = cor(r[1:(N-2)],r[3:N])
new.y = y[1:(N-2)] - rho1*y[2:(N-1)] - rho2*y[3:N]
new.x = x[1:(N-2)] - rho1*x[2:(N-1)] - rho2*x[3:N]
OLS3 = lm(new.y~new.x)
# Call:
#   lm(formula = new.y ~ new.x)
# 
# Residuals:
#   Min     1Q Median     3Q    Max 
# -3.493 -0.894 -0.026  0.876  4.470 
# 
# Coefficients:
#               Estimate Std. Error t value Pr(>|t|)    
# (Intercept)   1.0776     0.0420    25.6   <2e-16 ***
# new.x         0.5218     0.0137    38.2   <2e-16 ***
#   ---
#   Signif. codes:  
#   0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 1.24 on 996 degrees of freedom
# Multiple R-squared:  0.594,	Adjusted R-squared:  0.594 
# F-statistic: 1.46e+03 on 1 and 996 DF,  p-value: <2e-16

使用相关系数提取,残差依然存在AR(2)

bgtest(OLS3,order = 2)
# Breusch-Godfrey test for serial correlation of order
# up to 2
# 
# data:  OLS3
# LM test = 51.6, df = 2, p-value = 6.2e-12

利用回归方法获取自相关系数

OLS.rho = lm(r[1:(N-2)]~r[2:(N-1)]+r[3:N])
rho1 = as.numeric(OLS.rho$coefficients[2])
rho2 = as.numeric(OLS.rho$coefficients[3])
new.y = y[1:(N-2)] - rho1*y[2:(N-1)] - rho2*y[3:N]
new.x = x[1:(N-2)] - rho1*x[2:(N-1)] - rho2*x[3:N]
OLS4 = lm(new.y~new.x)
summary(OLS4)
# Call:
#   lm(formula = new.y ~ new.x)
# 
# Residuals:
#   Min     1Q Median     3Q    Max 
# -3.448 -0.679 -0.008  0.659  3.160 
# 
# Coefficients:
#               Estimate Std. Error t value Pr(>|t|)    
# (Intercept)   1.2979     0.0360      36   <2e-16 ***
# new.x         0.5232     0.0131      40   <2e-16 ***
#   ---
#   Signif. codes:  
#   0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 0.99 on 996 degrees of freedom
# Multiple R-squared:  0.617,	Adjusted R-squared:  0.616 
# F-statistic: 1.6e+03 on 1 and 996 DF,  p-value: <2e-16

使用BG进行阶自相关检验

bgtest(OLS4,order = 2)
# Breusch-Godfrey test for serial correlation of order
# up to 2
# 
# data:  OLS4
# LM test = 0.442, df = 2, p-value = 0.8

结果表明不存在二阶自相关。最后使用科克伦-奥克特迭代法,安装包里面帮助文档显示只适合一阶自相关问题,高阶并不适合。使用orcutt方法进行迭代

# install.packages("orcutt")
# 仅能解决残差AR(1)过程
library(orcutt)
OLS5 = cochrane.orcutt(OLS)
summary(OLS5)
# Call:
#   lm(formula = y ~ 1 + x)
# 
#               Estimate Std. Error t value Pr(>|t|)    
# (Intercept)   0.9843     0.0230    42.8   <2e-16 ***
# x             0.5232     0.0128    40.8   <2e-16 ***
#   ---
#   Signif. codes:  
#   0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 1.0163 on 997 degrees of freedom
# Multiple R-squared:  0.6248 ,  Adjusted R-squared:  0.6244
# F-statistic: 1660.3 on 1 and 997 DF,  p-value: < 1.862e-214
# 
# Durbin-Watson statistic 
# (original):    3.41457 , p-value: 1e+00
# (transformed): 1.67709 , p-value: 1.522e-07

结果显示,原方程的DW统计量由3.41变为1.67,但结果依然存在一阶自相关。由于本问题是二阶自相关,因此该方法失效。

bgtest(OLS5,order = 2)
# Breusch-Godfrey test for serial correlation of order
# up to 2
# 
# data:  OLS5
# LM test = 42.8, df = 2, p-value = 5.1e-10

下面为以上所有补救策略的输出。由于自相关不影响无偏性,回归系数基本不受影响,差异在于估计量的标准误上。其中采用BG检验(2)和回归检验(4)提取的自相关系数进行广义差分补救不存在自相关问题,采用相关系数方法未能补救成功。并且回归结果(2)(4)的估计量标准误都比其他估计结果低。

library(stargazer)
stargazer(OLS,OLS2,OLS3,OLS4,OLS5,type = "text",
          keep=c("x","new.x","Constant"),
          keep.stat=c("n","adj.rsq"))
=========================================================
                         Dependent variable:             
             --------------------------------------------
                y               new.y               y    
               (1)      (2)      (3)      (4)      (5)   
---------------------------------------------------------
x            0.492***                            0.523***
             (0.022)                             (0.013) 
                                                         
new.x                 0.523*** 0.522*** 0.523***         
                      (0.013)  (0.014)  (0.013)          
                                                         
Constant     1.017*** 1.295*** 1.078*** 1.298*** 0.984***
             (0.051)  (0.036)  (0.042)  (0.036)  (0.023) 
                                                         
---------------------------------------------------------
Observations  1,000     998      998      998     1,000  
Adjusted R2   0.336    0.617    0.594    0.616           
=========================================================
Note:                         *p<0.1; **p<0.05; ***p<0.01


-END-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值