ARIMA(1,1,0)系列的模拟

机器算法验证 r 时间序列 有马
2022-03-12 01:02:59

我已经将 ARIMA 模型拟合到原始时间序列中,最好的模型是 ARIMA(1,1,0)。现在我想从该模型中模拟系列。我写了简单的 AR(1) 模型,但我不明白如何调整模型 ARI(1,1,0) 中的差异。AR(1) 系列的以下 R 代码为:

phi= -0.7048                                 
z=rep(0,100)                                 
e=rnorm(n=100,0,0.345)                       
cons=2.1                                     
z[1]=4.1
for (i in 2:100) z[i]=cons+phi*z[i-1]+e[i]   
plot(ts(Y))                

我如何在上面的代码中包含差异项 ARI(1,1)。任何人都在这方面帮助我。

1个回答

如果要模拟可以arima.sim在 R 中使用的 ARIMA,则无需手动操作。这将生成您想要的系列。

e <- rnorm(100,0,0.345) 
arima.sim(n=100,model=list(ar=-0.7048,order=c(1,1,0)),start.innov=4.1,n.start=1,innov=2.1+e)

arima.sim您可以通过在 R 命令行中键入来查看如何实现这一点的代码。或者,如果您自己做,您可能正在寻找的功能是diffinv. 它计算滞后差异的倒数。

对于递归序列R有一个很好的功能filter所以而不是使用循环

z <- rep(NA,100)
z[1] <- 4.1
for (i in 2:100) z[i]=cons+phi*z[i-1]+e[i]   

你可以写

filter(c(4.1,2.1+e),filter=-0.7048,method="recursive")

这将给出与arima.sim上面示例相同的结果:

diffinv(filter(c(4.1,2.1+e),filter=-0.7048,method="recursive")[-1])