arima.simを使用してARMA(1,1)をシミュレートするときの標準偏差のエラー

ARMA(1,1)プロセスをシミュレートしようとしています自己回帰と移動平均パラメーターはそれぞれ0.74と0.47です。さらに、シミュレートされたデータの平均を900に、標準偏差を230にしたいと思います。これを実現するために、

合成時系列の平均は許容範囲です。

mean(fit) #922.749 

ただし、標準偏差を計算すると、計算値とfitの標準偏差として指定した値が大きすぎます。

sd(fit) #511.3077 - almost two times higher than the value I thought I"d observe 

コードを変更して、シミュレートされた系列の標準偏差がarima.sim関数内で指定したものに近いことを確認するにはどうすればよいですか?

回答

sd(fit) $ \ sqrt {Var(y_t)} $ であり、 $ y_t $ はARIMA(1,1)ですが、arima.sim呼び出しで指定するsdは。

AR(1)-proces $$ y_t = b y_ {t-1} + u_t $$ $$ u_t = \ sigma \ epsilon_t $$ $$ \ epsilon_t \ sim \ mathcal N(0,1)$$ ここに $ sd(y_t)= \ sqrt {Var(y_t)} $ これは $$ Var(y_t )= b ^ 2Var(y_ {t-1})+ \ sigma ^ 2Var(\ epsilon_t)$$ 次のように

$$ Var (y_t)= \ frac {\ sigma ^ 2} {1-b ^ 2} $$

および $$ sigma $ は、 $ u_t $ の標準偏差です。

Rでモデルを指定する

set.seed(100) b <- 0.5 s <- 0.9 fit = arima.sim(list(order = c(1,0,0), ar = b), n = 100000, rand.gen= rnorm, sd = s) sd(fit) sqrt(s^2/(1-b^2)) 

出力を返します

> sd(fit) [1] 1.041033 > sqrt(s^2/(1-b^2)) [1] 1.03923 

したがって、arima.sim<のsd / div>は $ \ sigma $ です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です