ARIMA(1,1,0)系列的仿真


11

我已经将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)。在这方面,任何人都可以帮助我。

Answers:


21

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

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])
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.