使用ARMA对非平稳过程进行建模的后果?


23

我知道我们应该使用ARIMA对非平稳时间序列进行建模。另外,我读到的所有内容都说ARMA只应用于固定时间序列。

我想了解的是,在对模型进行错误分类并假设d = 0非平稳时间序列时,在实践中会发生什么?例如:

controlData <- arima.sim(list(order = c(1,1,1), ar = .5, ma = .5), n = 44)

控制数据如下所示:

 [1]   0.0000000   0.1240838  -1.4544087  -3.1943094  -5.6205257
 [6]  -8.5636126 -10.1573548  -9.2822666 -10.0174493 -11.0105225
[11] -11.4726127 -13.8827001 -16.6040541 -19.1966633 -22.0543414
[16] -24.8542959 -25.2883155 -23.6519271 -21.8270981 -21.4351267
[21] -22.6155812 -21.9189036 -20.2064343 -18.2516852 -15.5822178
[26] -13.2248230 -13.4220158 -13.8823855 -14.6122867 -16.4143756
[31] -16.8726071 -15.8499558 -14.0805114 -11.4016515  -9.3330560
[36]  -7.5676563  -6.3691600  -6.8471371  -7.5982880  -8.9692152
[41] -10.6733419 -11.6865440 -12.2503202 -13.5314306 -13.4654890

假设我不知道数据是什么ARIMA(1,1,1),我可以看一看pacf(controlData)

pacf(控制数据)

然后,我使用Dickey-Fuller来查看数据是否不稳定:

require('tseries')
adf.test(controlData)

# Augmented Dickey-Fuller Test
#
# data:  controlData
# Dickey-Fuller = -2.4133, Lag order = 3, p-value = 0.4099
# alternative hypothesis: stationary

adf.test(controlData, k = 1)

# Augmented Dickey-Fuller Test
#
#data:  controlData
# Dickey-Fuller = -3.1469, Lag order = 1, p-value = 0.1188
# alternative hypothesis: stationary

因此,我可能假设数据为ARIMA(2,0,*),然后使用它auto.arima(controlData)来尝试获得最佳拟合吗?

require('forecast')
naiveFit <- auto.arima(controlData)
naiveFit
# Series: controlData 
# ARIMA(2,0,1) with non-zero mean 
# 
# Coefficients:
#          ar1      ar2     ma1  intercept
#      1.4985  -0.5637  0.6427   -11.8690
# s.e.  0.1508   0.1546  0.1912     3.2647
#
# sigma^2 estimated as 0.8936:  log likelihood=-64.01
# AIC=138.02   AICc=139.56   BIC=147.05

因此,即使过去和将来的数据是ARIMA(1,1,1),我也可能会尝试将其分类为ARIMA(2,0,1)。tsdata(auto.arima(controlData))看起来也不错

这是一个有见识的建模者会发现的东西:

informedFit <- arima(controlData, order = c(1,1,1))
# informedFit
# Series: controlData 
# ARIMA(1,1,1)                    
#
# Coefficients:
#          ar1     ma1
#       0.4936  0.6859
# s.e.  0.1564  0.1764
#
# sigma^2 estimated as 0.9571:  log likelihood=-62.22
# AIC=130.44   AICc=131.04   BIC=135.79

1)为什么这些信息标准比选择的模型更好auto.arima(controlData)

现在,我仅以图形方式比较实际数据和两个模型:

plot(controlData)
lines(fitted(naiveFit), col = "red")
lines(fitted(informedFit), col = "blue")

tsPlots

2)扮演魔鬼的拥护者,使用ARIMA(2,0,1)作为模型,我将付出什么样的后果?此错误有什么风险?

3)我最担心的是对多期前瞻性预测的影响。我认为它们会不太准确?我只是在寻找一些证据。

4)您会建议一种替代模型的选择方法吗?作为“不知情”建模者的推理有什么问题吗?

我真的很好奇这种错误分类还会带来什么其他后果。我一直在寻找一些资源,但找不到任何东西。我能找到的所有文献都只涉及到这个主题,而只是说数据在执行ARMA之前应该是固定的,如果它不是固定的,则需要相差d倍。

谢谢!


我的印象是,它类似于横截面回归中的“正交误差”假设(即,它使标准误差而不是系数有偏差),但是我真的很想听听实际答案。
shadowtalker 2014年

Answers:


11

我的印象是,这个问题没有唯一的,完全笼统的答案,因此,我将以一种非正式的方式探讨最简单的情况。

假设真正的数据生成机制是 其中是通常的零均值iid白噪声分量。以上还暗示

(1)yt=yt1+ut,t=1,...,T,y0=0
utE(ut2)=σu2

(2)yt=i=1tui

我们指定一个模型,称为模型A

(3)yt=βyt1+ut,t=1,...,T,y0=0

并为假定的获得一个估计(让我们仅在需要时讨论估计方法)。β^β

因此,步前的预测将是k

(4)y^T+k=β^kyT

MSE将为

MSEA[y^T+k]=E(β^kyTyT+k)2

(5)=E[(β^k1)yTi=T+1T+kui]2=E[(β^k1)2yT2]+kσu2

(正方形的中间项以及未来错误的叉积)。

现在,我们已经对数据进行了差分,并指定了模型B

(6)Δyt=γΔyt1+ut

并获得估计值。我们的差异模型可以写成γ^

(7)yt=yt1+γ(yt1yt2)+ut

因此,预测流程的水平,我们将拥有

y^T+1=yT+γ^(yTyT1)

实际上,给定真正的DGP将是

(8)y^T+1=yT+γ^uT

然后很容易验证,对于模型,B

y^T+k=yT+(γ^+γ^2+...+γ^k)uT

现在,我们可以合理地预期,给定任何经过“测试和尝试”的估计程序,我们将获得因为它的真实值为,除非我们的数据太少或形状非常“不好” 。所以我们可以说在大多数情况下|γ^|<10

(9)y^T+k=yT+γ^γ^k+11γ^uT

所以

(10)MSEB[y^T+k]=E[(γ^γ^k+11γ^)2uT2]+kσu2

为了方便我再说一遍

(5)MSEA[y^T+k]=E[(β^k1)2yT2]+kσu2

因此,为了使差异模型在预测MSE方面表现更好,我们希望

MSEB[y^T+k]MSEA[y^T+k]

E[(γ^γ^k+11γ^)2uT2]E[(β^k1)2yT2]

与模型中的估计量一样,我们对模型的估计量表示相同的礼貌:我们合理地期望将“接近于统一”。 BAβ^

显然,如果发生,则不等式右侧的数量将趋于无限制地增加,因为提前预测步数。另一方面,期望不等式左侧的数量可能会随着增加而增加,但具有上限。因此,在这种情况下,我们期望差异模型在预测MSE方面比模型更好。 β^>1kkBA

但假设对案例建模更为有利,其中。然后右侧数量也有一个界限。然后作为我们必须检查是否Aβ^<1k

E[(γ^1γ^)2uT2]E[yT2]=Tσu2??

(是一种便利-实际上,对于较小的两个量值都已经接近其极值)。 kk

请注意,术语 预计将“相当接近”于,因此模型在此方面具有优势。 (γ^1γ^)20B

我们无法分离剩余的期望值,因为估算器并不独立于。但是我们可以将不平等转化为γ^uT

Cov[(γ^1γ^)2,uT2]+E[(γ^1γ^)2]σu2Tσu2??

Cov[(γ^1γ^)2,uT2](TE[(γ^1γ^)2])σu2??

现在,由于估计量取决于所有误差,因此左侧的协方差预计会很小。在不等式的另一侧,来自一个固定的数据集,所以它的上面函数的预期值预计是比样品(大小少,因为更多的置于该功能范围将在)。 Ť γ01γ^Tγ^(0,1)

因此,总的来说,在不讨论任何特定估计方法的情况下,我相信我们能够非正式地表明,应该期望差异模型在预测MSE方面表现更好。


1

这是一个好问题。

据我了解,您只是考虑过pacf,但这还不够。ACF和PACF都是选择最佳模型所必需的。

另一方面,静态测试是脆弱而敏感的,需要大量的滞后才能进行测试。

另外,最好在应用任何模型之前使时间序列固定。粗略地说,ARIMA模型只是考虑了非平稳的一种特例(最好是趋势)。

关于您的问题,我不确定auto.arima函数,但我确定示例中的数据点数量很少。使用大量数据点模拟模型可以很好地回答您的问题。另外,我建议您考虑时间序列的ACF以及PACF。关于模型选择,经验法则是选择最简单的模型(请注意,在使时间序列固定之后,最简单的模型)。

我请您参考参考。这本书并未回答您所有的问题,但为您提供了一些线索。

-----补充部分------- @nsw考虑数据趋势。如果考虑平稳模型,则会导致向上/向下预测,但实际上ARMA模型旨在预测平面数据。我已更改您的代码以反映此差异:

要求('预测')

要求('tseries')

controlData <-arima.sim(list(order = c(1,1,1),ar = .5,ma = .5),n = 1000

acf(控制数据)

ts.plot(controlData)

naiveFit <-arima(controlData,order = c(2,0,1))

trueFit <-arima(controlData,order = c(1,1,1))

PrnaiveFit <-forecast.Arima(naiveFit,10)

PrtrueFit <-Forecast.Arima(trueFit,10)

matplot(cbind(PrnaiveFit $平均值,PrtrueFit $平均值),type ='b',col = c('red','green'),ylab = c('predict ion'),pch = c('n', 't'))


1
这个问题问为什么最好“固定时间序列”。这并不能真正回答这个问题。
shadowtalker

@ssdecontrol一般来说,您是对的。我真的更担心错误指定后对预测的隐含后果。但我不想在Hamed.HM上打败。他仍然回答了我的最后一个问题:“这是选择模型的正确方法吗?” 只是重申一下,这是我最不关心的问题。
克拉克·亨利
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.