この質問には2つ以上の深刻な誤解がある可能性がありますが、それは計算を正しくすることを意味するのではなく、いくつかの焦点を考慮して時系列の学習を動機付けることを目的としています。
時系列の適用を理解しようとすると、データのトレンドを排除すると、将来の値を予測するのが不可能になるように見えます。たとえばgtemp
、astsa
パッケージの時系列は次のようになります。
過去数十年間の上昇傾向は、予測される将来の値をプロットするときに考慮に入れる必要があります。
ただし、時系列変動を評価するには、データを定常時系列に変換する必要があります。私は(私はこれが原因で途中で実行されると思い差分とARIMAプロセスとしてモデル化した場合1
でorder = c(-, 1, -)
のように):
require(tseries); require(astsa)
fit = arima(gtemp, order = c(4, 1, 1))
次に、将来の値(年)を予測しようとすると、上昇傾向のコンポーネントが見落とされます。
pred = predict(fit, n.ahead = 50)
ts.plot(gtemp, pred$pred, lty = c(1,3), col=c(5,2))
特定のARIMAパラメータの実際の最適化に必ずしも触れず に、プロットの予測された部分の上昇傾向をどのように回復できますか?
この非定常性を説明するOLSがどこかに「隠されている」と思われますか?
私は、パッケージdrift
のArima()
機能に組み込むことができるの概念にforecast
出会い、もっともらしいプロットをレンダリングします。
par(mfrow = c(1,2))
fit1 = Arima(gtemp, order = c(4,1,1),
include.drift = T)
future = forecast(fit1, h = 50)
plot(future)
fit2 = Arima(gtemp, order = c(4,1,1),
include.drift = F)
future2 = forecast(fit2, h = 50)
plot(future2)
これは、その計算プロセスに関してより不透明です。トレンドがプロット計算にどのように組み込まれるかについて、何らかの理解を目指しています。問題が無いことの一つであるdrift
中arima()
(小文字)?
比較すると、データセットを使用して、データセットAirPassengers
のエンドポイントを超える予測された乗客数が、この上昇傾向を考慮してプロットされます。
コードは次のとおりです。
fit = arima(log(AirPassengers), c(0, 1, 1), seasonal = list(order = c(0, 1, 1), period = 12))
pred <- predict(fit, n.ahead = 10*12)
ts.plot(AirPassengers,exp(pred$pred), log = "y", lty = c(1,3))
意味のあるプロットをレンダリングする。