2

私は R を初めて使用し、このサイトが非常に役立つことを発見したので、ここに私の最初の投稿された質問があります。私はあなたの支援に感謝し、このサイトの知恵を認めます.

背景: 5 年間の毎週の売上データから始めて、非常に強い年の季節性を伴う毎週の売上に基づいて、将来の生産の予測を作成します。次の方法で開始点を決定しました。

auto.fit <- auto.arima(arima.ts, stepwise=FALSE, parallel=TRUE, num.cores=6, trace=TRUE )
> ARIMA(2,1,2)(0,0,1)[52] with drift.  

ここで、複数の「ウィンドウ」をデータに視覚的にプロットして精度を証明し、実際の値と比較したいと思います。(これには、AIC 値のログ記録が含まれます。) 言い換えれば、関数は、プログラムされた間隔でデータをループし、同じプロットに予測を再計算/プロットします。私のウィンドウがデータの先頭から始まると、正しくプロットされました。今、私は 104 週の移動ウィンドウを見ており、結果はすべて 104 番目の観察からオーバーレイされています。

require(forecast)   ##[EDITED for simplified clarity]

data <- rep(cos(1:52*(3.1416/26)),5)*100+1000+c(1:26,25:0)

# Create the current fit on data and predict one year out
plot(data, type="l", xlab="weeks", ylab="counts",main="Overlay forecasts & actuals",
     sub="green=FIT(1-105,by 16) wks back & PREDICT(26) wks, blue=52 wks")
result <- tryCatch({
  arima.fit <- auto.arima(tail(data,156)) 
  arima.pred <- predict(arima.fit, n.ahead=52)
  lines(arima.pred$pred, col="blue")
  lines(arima.pred$pred+2*arima.pred$se, col="red")
  lines(arima.pred$pred-2*arima.pred$se, col="red")
}, error = function(e) {return(e$message)} )  ## Trap error

# Loop and perform comparison plotting of forecast to actuals
for (j in seq(1,105,by=16)) { 
  result <- tryCatch({
    ############## This plotted correctly as "Arima(head(data,-j),..."
    arima1.fit <- auto.arima(head(tail(data,-j),156))
    arima1.pred <- predict(arima1.fit, n.ahead=52)
    lines(arima1.pred$pred, col="green", lty=(numtests %% 6) + 1 )
  }, error = function(e) {return(e$message)}) ## Trap errors
}      

すべての予測にファイルの先頭が含まれている場合、プロットは正確でしたが、サンプル サイズが縮小し続けたため、AIC は予測ウィンドウ間で比較できませんでした。

質問: 3 年間のローリング ウィンドウ (156 回の観測) から計算された、プログラムされた間隔での 5 年間の販売データとオーバーレイ予測を完全に表示するにはどうすればよいですか?

ログに記録された AIC 値は、ローリング ウィンドウ アプローチを使用して比較できますが、観測 157 から始まるすべての予測がオーバーレイされます。であるため、表示されませんでした。

4

1 に答える 1