格兰杰因果检验
参考链接:https://www.cnblogs.com/hdu-zsk/p/7235200.html,
该作者的博客写的很详尽,我只摘录一些要点。且后期考虑补充一些内容。
核心公式
autoregression: X t = β 0 + ∑ k = 1 p β k X t − k + ε t union-regression: X t = θ 0 + ∑ k = 1 p β k X t − k + ∑ n = 1 q θ n Y t − n + ε m \text{autoregression:} X_{t}=\beta_{0}+\sum_{k=1}^{p}\beta_{k}X_{t-k}+\varepsilon_{t} \\ \text{union-regression:}X_{t}=\theta_{0}+\sum_{k=1}^{p}\beta_{k}X_{t-k}+\sum_{n=1}^{q}\theta_{n}Y_{t-n}+\varepsilon_{m} autoregression:Xt=β0+∑k=1pβkXt−k+εtunion-regression:Xt=θ0+∑k=1pβkXt−k+∑n=1qθnYt−n+εm
阶数
即p
在格兰杰因果关系检验中,阶数的作用更像是在指明采用过去的多少个点对当前点的点求解回归问题。因此阶数order有了一个崭新的名字:lag(迟延,迟滞)。
在格兰杰因果关系的计算过程中,针对阶数的选择方法大致可以分为三类:
- I. Akaike information criterion(赤池信息准则,简称AIC);
- II. Bayes information criterion(贝叶斯信息准则,简称BIC);
- III Rule of thumb(凭经验选择lag)。
自预测
针对这个迟延lag,预测流程即为:
利用时间范围T:[X1~lag]的点预测[lag+1]上的点[Xlag+1],产生误差ε1。
以此类推
参数确定方式为最小二乘
误差
对一个长度为n的数据段,我们需要进行n-lag次预测,每一次预测都会产生一个误差项。
总体误差
δ
1
\delta_1
δ1是自回归误差
ε
1
∼
ε
n
−
l
a
g
ε_1 \sim ε_{n-lag}
ε1∼εn−lag的无偏估计。
δ
1
=
∑
m
=
1
n
−
l
a
g
(
ε
m
−
ε
‾
)
2
n
−
l
a
g
−
1
\delta_1=\frac{\sum_{m=1}^{n-lag}\left(\varepsilon_m-\overline{\varepsilon}\right)^2}{n-lag-1}
δ1=n−lag−1∑m=1n−lag(εm−ε)2
联合预测
同理参考自预测,求解联合回归产生的无偏误差估计
δ
2
\delta_2
δ2。
假如
δ
2
<
δ
1
\delta_2 < \delta_1
δ2<δ1则认为,添加变量对自回归变量可能有格兰杰因果关系。
F test
在得到
δ
2
,
δ
1
\delta_2,\delta_1
δ2,δ1的值并比较大小之后,我们必须做自回归和联合回归误差的F检验,否则无法判断
δ
2
,
δ
1
\delta_2,\delta_1
δ2,δ1值的大小是否有意义。
F_test(δ2,δ1 )。
数据预处理
平稳时序序列
需要预处理的最主要原因是granger causality analysis要求time series平稳。
根据原作者的描述,平稳时间序列粗略的讲需要满足以下两个条件:
- 1)时间序列没有变化趋势(含周期性变化趋势),换言之,它不可以是那种看起来有明显增加或减少的线条。像以下两种就绝非平稳:
- 2)任意取出若干段数据并对该若干段数据求方差。则方差间不应该有显著性差异。
- 3)原作者补充:平稳时间序列里不含有单位根,非平稳时间序列里一定含有单位根。
处理步骤
STEP1:数据去趋势化
matlab工具箱会有相关工具。
STEP2:数据去均值
格兰杰因果关系要求时间序列数据必须围绕y=0轴波动
STEP3:ADF检验和KPSS检验
ADF检验全称 Augmented-Dickey-Fuller test(增广迪肯富乐检验),KPSS检验全称 Kwiatkowski-Phillips-Schmidt-Shin test。这两种检验均称为单位根检验。如果对时间序列数据做单位根检验得出的结论是该时间序列有单位根,则可以肯定该序列一定不是平稳的。
PS:
这里产生了四个问题:
- 1)我们不是经过STEP1和STEP2了吗,为何序列仍是不平稳的?
答:STEP1和STEP2并不保证序列的平稳性,只能使序列看似平稳。因此在完成STEP1和STEP2后,必须进行STEP3以便找到时间序列平稳数学上的证据。 - 2)如果时间序列经过STEP1和STEP2后仍然检验不平稳该怎么办?
答:问得好!解决这个问题正是STEP3的任务。 - 3)ADF检验和KPSS检验有什么区别?
KPSS 是右侧单边检验,原假设是序列是平稳的(不存在单位根)。
ADF是双边检验,原假设是序列是非平稳的(存在单位根)。 - 4)ADF检验和KPSS检验结果不一致怎么办?
不得不说,这事儿常发生。笔者在网上也好好搜索了一番(2017年7月25日搜索)。网友给出的结论基本分为两派:
A.“看情况自己选”
B.“有一个通过就算通过”
STEP4:一阶差分
正如同STEP3中所提到的一样,只有当经过STEP1和STEP2后仍然检验不平稳时才会对时间序列数据做差分。那么怎么做差分呢?
给定时间序列X{x1,x2,x3,……,xn }。则定义差分过的时间序列X_diff为{x2-x1, x3-x2, x4-x3, …, xn-xn-1}。说白了就是后项减前项,这就是差分。差分带来的唯一问题是经过差分后的时间序列长度会缩减1个单位。另一个问题是,如果时间序列仍然不是平稳的该怎么办?答案是再差分一次知道平稳为止。根据笔者的经验,一般差分一次就足够了,很少有出现差分两次的。
STEP5:通过AIC准则求阶数lag
AIC信息准则的公式是:AIC=2*lag+nln(RSS/n)。其中,RSS是拟合的残差和(就是之前的误差无偏估计量), n是数据段的长度。我们的目标是搜索在1~n的范围内搜索lag,使AIC的值取得最小。而那个取得AIC最小值的lag就是我们想要的阶数lag
STEP6:杜尔滨怀特讯检验
英文名称为Durbin-Watson test。相必大家还记得我们采用最小二乘法求回归问题时曾假设回归后理论值与实际值的误差为ε,且ε服从正态分布。实际上,误差服从正态分布是使用最小二乘法求解回归问题的先决条件。而杜尔滨怀特讯检验的目的就是检测回归完成后的残差是否服从正态分布。如果不服从则该段数据不满足使用最小二乘法的先决条件,也就不满足求解格兰杰因果关系的基础。
STEP7:一致性检验
当对时间序列的数据值点完成回归以后。并不能确定回归得出的理论值和实际值是否来自于同一分布。此时,应采用一致性检验。如果一致性检验的结论表明理论值和实际值差距较大,则回归结果失败,需要重新确定回归。