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)を含めるにはどうすればよいですか?この点で誰でも私を助けてくれます。

回答:


21

arima.simRで使用できる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.simRコマンドラインに入力することで、これがどのように達成されるかを示すコードを見ることができます。または、自分で行う場合、おそらく探している関数は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])
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.