3
data <-c(88, 84, 85, 85, 84, 85, 83, 85, 88, 89, 91, 99, 104, 112, 126, 138, 146,151,   150, 148, 147, 149, 143, 132, 131, 139, 147, 150, 148, 145, 140, 134, 131, 131, 129, 126, 126, 132, 137, 140, 142, 150, 159, 167, 170, 171, 172, 172, 174, 175, 172, 172, 174, 174, 169, 165, 156, 142, 131, 121, 112, 104, 102, 99, 99, 95, 88, 84, 84, 87, 89, 88, 85, 86, 89, 91, 91, 94, 101, 110, 121, 135, 145, 149, 156, 165, 171, 175, 177, 182, 193, 204, 208, 210, 215, 222, 228, 226, 222, 220)

データの最初の違いに作用する ARMA モデルが、対応する ARIMA モデルと異なるのはなぜですか?

for (p in 0:5)
{
for (q in 0:5)
{
#data.arma = arima(diff(data), order = c(p, 0, q));cat("p =", p, ", q =", q, "AIC =",  data.arma$aic, "\n");
data.arma = arima(data, order = c(p, 1, q));cat("p =", p, ", q =", q, "AIC =", data.arma$aic, "\n");
}
}

予測パッケージArima(data,c(5,1,4))と同じです。Arima(diff(data),c(5,0,4))私は望ましい一貫性を得ることができます

auto.arima(diff(data),max.p=5,max.q=5,d=0,approximation=FALSE, stepwise=FALSE, ic ="aic", trace=TRUE);
auto.arima(data,max.p=5,max.q=5,d=1,approximation=FALSE, stepwise=FALSE, ic ="aic", trace=TRUE);

しかし、これらのデータの最小 AIC 推定値の所有者は、auto.arima の背後にあるアルゴリズムによって考慮されていないようです。したがって、最初の違いに作用する ARMA(5,4) ではなく、ARMA(3,0) の次善の選択です。関連する質問は、1 つのモデルが他のモデルよりも優れていると考える前に、2 つの AIC 推定値がどの程度異なる必要があるかということです。プログラミングとはほとんど関係がありません。9 つの係数は少し多すぎるかもしれませんが、最小の AIC 保有者を少なくとも考慮/報告する必要があります。 100 回の観測からの予測。

私のRの質問は次のとおりです。

1)ダブルループのベクトル化バージョンなので、高速ですか?

arima(5,1,4)2)データに基づいて行動することが、データarma(5,4)の最初の違いに基づいて行動することと異なるのはなぜですか? 通報するのはどっち?

3) 小さい方が最初になるように AIC 出力を並べ替えるにはどうすればよいですか?

ありがとう。

4

1 に答える 1

8

ここで提起された多くの質問と問題があります。それぞれにお答えしていきたいと思います。

Arima()の単なるラッパーなarima()ので、同じモデルが得られます。

arima() は、拡散事前分布を使用して差分のあるモデルを処理します。これは、モデルを適合させる前にデータを単に差分することと同じではありません。arima(x,order=c(p,1,q))したがって、および とはわずかに異なる結果が得られますarima(diff(x),order=c(p,0,q))

auto.arima()差分を直接処理し、フィッティング時に拡散事前分布を使用しません。したがって、 と から同じ結果が得られますauto.arima(x,d=1,...)auto.arima(diff(x),d=0,...)

auto.arima()max.orderp+q の最大値を指定する引数があります。デフォルトではmax.order=5、 であるため、arima(5,1,4)考慮されません。max.orderそのような大規模なモデルを検討したい場合は、増やしてください (お勧めしませんが)。

各反復で非線形最適化を含むループをベクトル化することはできません。

出力を並べ替える場合は、それを data.frame に保存してから、関連する列で並べ替える必要があります。現在、コードは結果を吐き出すだけで、最新のモデル以外は何も保存されません。

于 2009-11-03T04:31:42.103 に答える