时间序列分析笔记:带时间序列误差的回归模型

#带时间序列误差的回归模型

library(readr);library(xts);library(lubridate);library(fUnitRoots)

# read_table2 分别加载美国国债一年期与三年期利率 col_types=cols(.default=col_double())
x <- da[["rate"]]#分别计算x1、x3(利率)
y <- xts( da[["rate"]], make_date(da[["year"]], da[["mon"]], da[["day"]]))#分别计算y1、y3
xts.gs <- cbind(gs1yr=y1, gs3yr=y3)#数据准备完毕,rm()删掉y1、y3、da

#平稳性检验
plot(xts.gs, type="l",major.ticks="years", minor.ticks=NULL)
plot(last(xts.gs, "3 years"), type="l") #xts::last函数
#由于不平稳 作样本自相关系数(ACF)估计
acf(x1, main="")#ACF 有缓慢变化趋势,需要差分;残差的 ACF 表明结果仍有很强的自相关

#对一年期利率序列作单位根检验
ar(diff(x1), method="mle")#残差序列差分,观察自回归模型
adfTest(x1, lags=9, type="ct")#ct表示包含截距和趋势项
#P大,单位根检验结果不显著,不拒绝原假设,说明一年期利率序列是单位根过程。
#如果此时作线性回归,就会遇到 {et} 序列相关的问题,甚至于{et}可能有单位根,造成方差线性增长,出现异方差问题

#先用散点图考察两个序列的关系
plot(x1, x3, type="p", pch=16, cex=0.1)#同期的一年期利率和三年期利率高度相关
#试拟合线性回归模型
summary(lm(x3 ~ x1))
#不懂统计的人会盲目相信统计软件给出的如此专业的输出结果。 R2=0.9649是一个十分令人欣喜的回归结果。
#上面的系数估计、 σ2估计、 SE估计、 t检验等等都是基于随机误差项独立同分布假定的。
#如果假定不成立,σ2的估计会严重低估, SE 估计不相合,检验不准确。


#对回归模型结果进行诊断分析,最常用的是残差分析,其中一项是残差序列相关性的检验。
#传统的残差序列相关性检验有 Durbin-Watson 检验,我们可以做 ACF 图,进行 Ljung-Box 白噪声检验。

acf(  lm(x3 ~ x1)$residuals, main="")#残差的 ACF 表明结果仍有很强的自相关,甚至于可能有单位根。

Box.test(  lm(x3 ~ x1)$residuals, lag=9)#白噪声检验
#P小,结果显著,拒绝残差序列为白噪声的零假设。残差序列为非白噪声序列

#对残差序列作单位根检验
ar(diff(lm(x3 ~ x1)$residuals), method="mle")#残差序列差分,观察自回归模型
adfTest(lm(x3 ~ x1)$residuals, lags=12, type="nc")#nc表示不包含截距项和趋势项
#P小,结果显著,拒绝残差有单位根的零假设。残差没有单位根。
#尽管如此,鉴于残差的高度自相关,还是不能轻易使用线性回归。

#如果回归模型 y= β0 +β1x +e 中 y和 x都是单位根过程而 e是线性时间序列,则称 {y} 与 {x} 序列存在协整关系 (cointegrated) 。
#在目前的数据中,利率(x1、x3)序列有单位根,但是!残差e虽然没有单位根但是 ACF衰减很慢,所以不符合协整的要求。


#考虑利率差分之间的关系,对利率(x1、x3)序列作一阶差分
c1 <- diff(x1);c3 <- diff(x3)
acf(c1, main="")#作样本自相关系数(ACF)估计
#这个 ACF 的表现已经不是单位根过程,符合线性时间序列的 ACF 的表现。

plot(c1, c3, type="p", pch=16, cex=0.5)#一年期与三年期的两个差分序列的散点图,两者仍有强烈的线性相关。
summary(lm(c3 ~ c1))#作线性回归,结果表面上也很好,但仍需作序列相关性诊断分析

acf(lm(c3 ~ c1)$residuals, main="")#这个 ACF 表现得与线性时间序列 ACF 相像,但是滞后 1 处仍显著不等于零。
Box.test(lm(c3 ~ c1)$residuals, lag=9)#作 Ljung-Box 白噪声检验
#P小,拒绝原假设(不存在序列自相关),结果显著,说明回归模型中的误差项存在序列自相关
#这样,上面的两个差分序列的回归结果中仅两个回归系数估计!是可信的,误差方差估计、 SE 估计、假设检验结果均不可用。

#因为上面的回归残差的 ACF 主要在滞后 1 显著,其它位置虽然也有显著但值不大,所以考虑 e用 MA(1) 
#回归变成c3 = β1c1 + e ,  e = εt + θεt−1 其中 {εt} 为零均值独立同分布白噪声列。
#这里没有常数项是因为两个序列都是差分过的,如果原来的关系有常数项,会在差分过程中被消去。

arima(c3, xreg=c1, order=c(0,0,1), include.mean=FALSE) #将外生回归自变量与 AMRA 模型一同估计, xreg= 指定外生回归自变量
#拟合了如下的带有 MA(1) 误差的无截距项的一元线性回归模型

注 : Durbin-Watson 序列自相关检验使用检验统计量DW≈ 2(1 − hatρ1 ),当无序列相关时 DW 统计量接近于 2 。此统计量只用到一阶自相关。

带时间序列误差的线性回归模型建模步骤:

1. 拟合一个线性回归模型,并检验残差的序列相关性

2. 如果残差序列是单位根非平稳的,则对因变量和自变量都做一阶差分。然后对差分后的序列再进行第一步。如果残差序列是平稳的,则对残差序列识别一个 ARMA 模型,并相应地修改线性回归模型。

3. 用最大似然估计法对回归模型与 ARMA 模型进行联合估计,并对模型进行检验,看是否需要改进。主要可以使用 Ljung-Box 对残差进行白噪声检验。

引用书目《金融时间序列分析讲义--李东风》,感谢李老师!

猜你喜欢

转载自blog.csdn.net/weixin_42683052/article/details/108375523