R语言时间序列TAR阈值自回归模型(上):https://developer.aliyun.com/article/1489875
预测
预测分布通常是非正态的。通常,采用模拟方法进行预测。考虑模型
然后给定Yt = yt,Yt-1 = yt-1,...
因此,可以通过从误差分布中绘制et + 1并计算h(yt,et + 1),来获得单步预测分布的Yt + 1的实现。 。
通过独立重复此过程 B 次,您可以 从向前一步预测分布中随机获得B值样本 。
可以通过这些B 值的样本平均值来估计提前一步的预测平均值 。
通过迭代,可以轻松地将仿真方法扩展为找到任何l步提前预测分布:
其中Yt = yt和et + 1,et + 2,...,et + l是从误差分布得出的ll值的随机样本。
在[173]中:
#预测 model.tar.pred r.best, n.ahead = 10, n.sim=1000) y.pred = ts(c lines(ts(model.tar.pred$pred.interval\[2,\], start=end(y) + c(0,1), freq=1), lty=2) lines(ts(model
样例
这里模拟的时间序列是1700年至1988年太阳黑子的年数量。
在[174]中:
#数据集 #太阳黑子序列,每年 plot.ts(sunsp
#通过滞后回归图检查非线性 lagplot(sunspo)
#使用假设检验检查线性 Keenan.test(sunspot.year) Tsay.test(sunspot.year) $test.stat 18.2840758932705 $p.value 2.64565849317573e-05 $order 9 $test.stat 3.904 $p.value 6.689e-12 $order 9
在[177]中:
#使用MAIC方法 AIC{ sunspot.tar.s = tar(sunspot.year, p1 = 9, p2 = 9, d = d, a=0.15, b=0.85) AICM
在[178]中:
#测试阈值非线性 tl(sunspot.year, p=9, d=9, a=0.15, b=0.85) $percentiles 15 85 $test.statistic : 52.2571950943405 $p.value : 6.8337179274236e-06 #模型诊断 tsdiag(sunspot.tar.best)
#预测 sunspot.tar.pred <- predict(sunspot.tar.best, n.ahead = 10, n.sim=1000) lines(ts(sunspot.tar.pred$pretart=e
#拟合线性AR模型 #pacf(sunspot.year) #尝试AR阶数9 ord = 9 ar.mod <- arima(sunspot.year, order=c(ord,0,0), method="CSS-ML") plot.ts(sunspot.year\[10:289\]
模拟TAR模型上的AR性能
示例1. 将AR(4)拟合到TAR模型
set.seed(12349) #低机制参数 i1 = 0.3 p1 = 0.5 s1 = 1 #高机制参数 i2 = -0.2 p2 = -1.8 s2 = 1 thresh = -1 delay = 1 nobs = 200 #模拟200个样本 y=sim(n=nobs,Phi1=c(i1,p1),Phi$y #使用Tsay的检验确定最佳AR阶数 ord <- Tsay.test(y)$order #线性AR模型 #pacf(sunspot.year) #try AR order 4
例子2. 将AR(4)拟合到TAR模型
例子3. 将AR(3)拟合到TAR模型
例子3. 将AR(7)拟合到TAR模型
参考文献
恩德斯(W. Enders),2010年。应用计量经济学时间序列