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)を含めるにはどうすればよいですか。この点で誰かが助けてくれます。
回答
ARIMAをシミュレートする場合は、Rでarima.sim
を使用できますが、手動で行う必要はありません。これにより、必要なシリーズが生成されます。
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
。または、自分で実行する場合、おそらく探している関数はdiffinv
です。遅延差の逆数を計算します。
For再帰シーケンス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])