1 自相关的定义
1.1 定义

回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata在其他经典假定不变的条件下,若回归模型自相关检验stata 线性回归 自相关_时间序列_02则称为自相关或序列相关。如果仅存在回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_03则称为一阶自相关。
  一阶自相关通常可以写成如下形式:回归模型自相关检验stata 线性回归 自相关_方差_04其中回归模型自相关检验stata 线性回归 自相关_方差_05为一阶自相关系数,回归模型自相关检验stata 线性回归 自相关_方差_06为满足经典假定的随机误差项,即回归模型自相关检验stata 线性回归 自相关_方差_07回归模型自相关检验stata 线性回归 自相关_方差_08回归模型自相关检验stata 线性回归 自相关_方差_09
  一般地,如果回归模型自相关检验stata 线性回归 自相关_方差_10其中回归模型自相关检验stata 线性回归 自相关_方差_06是满足经典假定的误差项,回归模型自相关检验stata 线性回归 自相关_时间序列_12回归模型自相关检验stata 线性回归 自相关_线性回归_13阶自相关系数。称该式为回归模型自相关检验stata 线性回归 自相关_线性回归_13阶自回归形式。
  一般情况下,自相关产生的后果与异方差类似,这里不再赘述。

1.2 产生原因

  一般时间序列数据更容易出现自相关。这是因为经济变量的滞后效应、时间序列非平稳性等原因都可能引发自相关问题。一般地,产生自相关的原因主要有以下几个方面:

  • 模型设定偏误:模型设定偏误一般有自变量选择偏误和模型函数形式片偏误两种;
  • 经济变量的滞后效应:大量经济时间数据会表现出时间的前后关联性,这往往是由经济变量的滞后效用造成的;
  • 蛛网现象:一般某种商品的供给量受前一期价格影响而表现出来的某种规律性,即呈蛛网状收敛或发散于供需的均衡点。
  • 数据处理造成的自相关。
2 自相关的检测

回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_15作为随机干扰项的近似估计量,通过分析OLS所得到的残差与其自身滞后项的相关性来判断随机干扰项是否存在自相关性。几种常用的检测方法如下:

2.1 图示法

回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_15的自相关情况,该方法简单直接但精度较低,只能作为粗略判断之用。通常可以采用以下两种方式表现残差的自相关情况:

  • 绘制残差回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_17回归模型自相关检验stata 线性回归 自相关_时间序列_18之间的散点图来表现两者的相关性;
  • 直接绘制回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_17随时间变化的图形,通过图形特征来判断是否存在自相关性;如果回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_17随着时间回归模型自相关检验stata 线性回归 自相关_线性回归_21变化逐次有规律的变化,呈现锯齿形或循环形状的变化,就可认为回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_17存在自相关。如果回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_17频繁不断地改变符号,那么存在的负自相关;如果回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_17符号改变次数较少,那么存在正的自相关。具体如下图:
2.2 DW检验

回归模型自相关检验stata 线性回归 自相关_时间序列_25其中回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_26回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_15回归模型自相关检验stata 线性回归 自相关_线性回归_28的相关系数,用该值作为回归模型自相关检验stata 线性回归 自相关_线性回归_29回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_30相关系数回归模型自相关检验stata 线性回归 自相关_方差_05的估值。当回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_32时,即回归模型自相关检验stata 线性回归 自相关_线性回归_33时,回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_15回归模型自相关检验stata 线性回归 自相关_线性回归_28不相关;当回归模型自相关检验stata 线性回归 自相关_时间序列_36时,即回归模型自相关检验stata 线性回归 自相关_线性回归_37时,回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_15回归模型自相关检验stata 线性回归 自相关_线性回归_28完全负相关;回归模型自相关检验stata 线性回归 自相关_线性回归_40时,即回归模型自相关检验stata 线性回归 自相关_线性回归_41时,回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_15回归模型自相关检验stata 线性回归 自相关_线性回归_28完全正相关。目前只需根据DW值落入临界值所界定的范围,就可以判断随机干扰项的自相关情况。具体判断情况如下:

回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_44


其中,回归模型自相关检验stata 线性回归 自相关_线性回归_45回归模型自相关检验stata 线性回归 自相关_方差_46为DW统计量的上界和下界的临界值,这两个值可以通过查表得到。DW检验的缺点和局限性如下:

  • DW检验有两个不能确定的区域,一旦DW值落在这两个区域,就无法判断。这时只能增大样本容量或选取其他样本;
  • DW统计量的上下界要求回归模型自相关检验stata 线性回归 自相关_线性回归_47;
  • DW检验不适用随机误差项具有高阶序列相关的检验;
  • 只适用于有常数项的回归模型,且解释变量中不能含有滞后的被解释变量,并且要求解释变量为非随机的和数据序列无缺失项;
2.3 拉格朗日检验

  拉格朗日检验又被称为Breusch-Godfrey检验。拉格朗日乘数检验克服了DW检验的缺陷,适用于高阶自相关以及模型中存在滞后被解释变量的模型。LM检验的步骤如下:

  • 首先获得残差项回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_17
  • 回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_17对模型中的所有的解释变量回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_50以及第一步估计得到的残差滞后值回归模型自相关检验stata 线性回归 自相关_时间序列_18回归模型自相关检验stata 线性回归 自相关_时间序列_52回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_53做回归(p的确定可以用赤池和施瓦茨信息准则来选择),具体如下:回归模型自相关检验stata 线性回归 自相关_线性回归_54并得到该辅助回归的判定系数回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_55
  • 若样本容量很大,则有回归模型自相关检验stata 线性回归 自相关_方差_56,在给定显著性水平下,若回归模型自相关检验stata 线性回归 自相关_时间序列_57则拒绝原假设,此时至少有一个回归模型自相关检验stata 线性回归 自相关_线性回归_58不为0,说明存在自相关。
3 自相关的修正
3.1 随机误差项相关系数的估计

回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_59。但在实际上,我们并不知道这些参数的具体数值,所以必须先对他们进行估计。常用的估计方法是科克伦奥科特迭代方法。

3.2 广义差分法

  广义差分法是一种广泛使用的克服自相关的有效方法。广义差分法将原模型变化为满足普通最小二乘法的差分模型,再进行普通最小二乘法估计。假设原模型为
回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata根据该式可得到如下:
回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_61如果该模型除存在自相关之外,满足其他所有经典假定,并且其随机误差项满足如下自回归模型:回归模型自相关检验stata 线性回归 自相关_时间序列_62结合以上可以得到如下公式回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_63将公式(1)代入到上式中即可得到:
回归模型自相关检验stata 线性回归 自相关_方差_64采用最小二乘法估计模型得到的参数估计量,即为原模型参数的无偏、有效估计量。

4 实验
4.1 数据

  实验中用到的数据为1995-2014年中国进口总额和国内生产总值数据,具体如下:

回归模型自相关检验stata 线性回归 自相关_时间序列_65

4.2 自相关检测

DW检验
  Python中statsmodels.api中的OLS模型中已经集成了DW检验,所以的这里就直接使用OLS模型来做自相关检验。具体如下:

import numpy as np
import statsmodels.api as sm
import pandas as pd

data=[[61129.8,11048.1],[71572.3,11557.4],[79429.5,11806.5],
      [84883.7,11626.1],[90187.7,13736.4],[99776.3,18638.8],
      [110270.4,20159.2],[121002.0,24430.3],[136564.6,34195.6],
      [160714.4,46435.8],[185895.8,54273.7],[217656.6,63376.9],
      [268019.4,73300.1],[316751.7,79526.5],[345629.2,68618.4],
      [408903.0,94699.3],[484123.5,113161.4],[534123.0,114801.0],
      [588018.8,121037.5],[636138.7,120358.0]]

data=np.array(data)
X,y=data[:,0],data[:,1]
X=pd.DataFrame(X,columns=['X1'])
y=pd.DataFrame(y,columns=['val'])
X=sm.add_constant(X)
model=sm.OLS(y,X)
results=model.fit()
y_pred=pd.DataFrame(model.predict(results.params,X),
                    columns=['val'])
print(results.summary())

其结果如下:

回归模型自相关检验stata 线性回归 自相关_时间序列_66


通过查表,可以知道回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_67,目前回归模型自相关检验stata 线性回归 自相关_时间序列_68,所以随机误差项存在自相关。

图示法

import matplotlib.pyplot as plt
err=y_pred-y
plt.scatter(err.values[:-1],err.values[1:])

其结果如下:

回归模型自相关检验stata 线性回归 自相关_时间序列_69

4.3 确定自相关阶数及相关系数

  这里确定阶数的方法来源于时间序列模型。具体如下:

#1.确定阶数
import warnings
warnings.filterwarnings('ignore')
AR=sm.tsa.stattools.arma_order_select_ic(err_abs)['bic_min_order'][0]
print(AR) #结果为1
#2.确定系数
y_1=err.values[1:]
x_1=err.values[:-1]
model=sm.OLS(y_1,x_1)
result=model.fit()
print(result.summary())

具体结果如下:

回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_70


从这个结果中可以近似得到:回归模型自相关检验stata 线性回归 自相关_线性回归_71

4.4 自相关修正

  这里使用广义差分法对自相关模型进行修正。具体如下:

#广义差分法
X_new=X['X1']-0.780*X['X1'].shift(periods=1)
y_new=y['val']-0.780*y['val'].shift(periods=1)
X_new=X_new.dropna()
y_new=y_new.dropna()
X_new=sm.add_constant(X_new)
X_new['const']=(1-0.780)*X_new['const']
model=sm.OLS(y_new,X_new)
result=model.fit()
print(result.summary())

具体结果如下:

回归模型自相关检验stata 线性回归 自相关_回归模型自相关检验stata_72

参考
  1. 《计量经济学》