RでのARIMA時系列の予測値のプロット


10

この質問には2つ以上の深刻な誤解がある可能性がありますが、それは計算を正しくすることを意味するのではなく、いくつかの焦点を考慮して時系列の学習を動機付けることを目的としています。

時系列の適用を理解しようとすると、データのトレンドを排除すると、将来の値を予測するのが不可能になるように見えます。たとえばgtempastsaパッケージの時系列は次のようになります。

ここに画像の説明を入力してください

過去数十年間の上昇傾向は、予測される将来の値をプロットするときに考慮に入れる必要があります。

ただし、時系列変動を評価するには、データを定常時系列に変換する必要があります。私は(私はこれが原因で途中で実行されると思い差分とARIMAプロセスとしてモデル化した場合1order = c(-, 1, -)のように):

require(tseries); require(astsa)
fit = arima(gtemp, order = c(4, 1, 1))

次に、将来の値(年)を予測しようとすると、上昇傾向のコンポーネントが見落とされます。50

pred = predict(fit, n.ahead = 50)
ts.plot(gtemp, pred$pred, lty = c(1,3), col=c(5,2))

ここに画像の説明を入力してください

特定のARIMAパラメータの実際の最適化に必ずしも触れず に、プロットの予測された部分の上昇傾向をどのように回復できますか?

この非定常性を説明するOLSがどこかに「隠されている」と思われますか?

私は、パッケージdriftArima()機能に組み込むことができるの概念に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)

ここに画像の説明を入力してください

これは、その計算プロセスに関してより不透明です。トレンドがプロット計算にどのように組み込まれるかについて、何らかの理解を目指しています。問題が無いことの一つであるdriftarima()(小文字)?


比較すると、データセットを使用して、データセット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))

意味のあるプロットをレンダリングする。


1
時間の経過とともにトレンドが変化したシリーズがあると思うなら、ARIMAモデルはそれらの予測に取り組むための最良の方法ではないかもしれません。主題に関する知識がない場合(モデルの改善につながる可能性があります)、状態空間モデルに注目する傾向があります。このような何かのための基本的な構造モデルの特定のバリアント。状態空間モデルに関する多くの議論は理解するのが難しい場合がありますが、Andrew Harveyの本や論文は非常に読みやすくなっています(たとえば、「Forecasting、Structural Time Series Models and the Kalman Filter」はかなり良い本です)。... ctd
モニカを再開

ctd ...適度にうまくいく他の著者がいくつかいますが、より優れた著者でも、初心者が実際に必要とするよりも少し複雑にしています。
Glen_b-2016

ありがとう、@ Glen_b。時系列の才能を獲得しようとするだけであり、多くの数学のトピックと同様に、動機付けのプリアンブルの欠如はキラーです。私たちが本当に気にしているすべての時系列は、人口、GOP、株式市場、世界的な気温など、上昇または下降傾向にあるようです。そして、周期的で季節的なパターンを確認するために、傾向(1秒程度かもしれません)を排除したいと思います。しかし、予測を行うための包括的な傾向を伴う調査結果のスプライスバックは、暗示されているか、または目的として扱われていません。
Antoni Parellada 2016

ここでの Rob Hyndmanのコメントは関連があります。私は戻って少し拡張するかもしれません。
Glen_b-2016

Rob J. Hyndmanのブログ投稿「Rの定数とARIMAモデル」は、おそらくあなたが知る必要があるすべてです。ブログ投稿を調べたら、あなたの意見を聞きたいと思います。
Richard Hardy

回答:


1

そのため、静止していないデータに対してARIMAやその他の操作を行うべきではありません。

なぜARIMAの予測がフラットになっているのかという質問への答えは、ARIMAの式と仮定の1つを見ればかなり明白です。これは簡単な説明です。数学の証明として扱わないでください。

AR(1)モデルについて考えてみましょう。ただし、これはすべてのARIMA(p、d、q)に当てはまります。
AR(1)の方程式は次のとおりです そしてに関する仮定は。このようなβを使用すると、、およびまで、次のすべての点は前の点よりも0に近くなります。

yt=βyt1+α+ϵ
β|β|1βyt1=0yt=const=α

その場合、そのようなデータをどのように処理しますか?微分()または変化率の計算()によって静止させる必要があります。データそのものではなく、違いをモデル化しています。違いは時間とともに一定になっており、それがあなたの傾向です。new.data=ytyt1new.data=yt/yt11

 require(tseries)
 require(forecast)
 require(astsa)
 dif<-diff(gtemp)
 fit = auto.arima(dif)
 pred = predict(fit, n.ahead = 50)
 ts.plot(dif, pred$pred, lty = c(1,3), col=c(5,2))
 gtemp_pred<-gtemp[length(gtemp)]
 for(i in 1:length(pred$pred)){
   gtemp_pred[i+1]<-gtemp_pred[i]+pred$pred[i]
 }
 plot(c(gtemp,gtemp_pred),type="l")

ここに画像の説明を入力してください


ありがとうございました。簡単に言えば、は最終的なプロットの傾きですか?α
Antoni Parellada

いいえ。傾斜はと表されることが多いため、混乱していると思います。ただし、このと勾配の関係は何かと尋ねると、答えは簡単ではありません。簡単に言えば、微分を選択した場合、は勾配の正接になります。変化率を選択した場合、傾向は線形にならないため、勾配はありません。α αααα
mbt 2018年

OK。私はあなたのコードを少し試して、それがts方程式に関連して何を説明しようとしているのかを確認する必要があります。私はtsを扱っていません。質問を投稿してから久しぶりです。
Antoni Parellada

コードで少し遊んだ後、何が起こっているのかがわかります。AR1 = 0.257; MA = - 0.7854プロットの最後に投影または予測されたテール傾斜線の生成プロセスを十分に理解するために、ARIMAモデル方程式にフィット係数を含めることができますか?
Antoni Parellada

承知しました。私の答えでは、AR(1)方程式のみを使用しました。ARMA(p、q)プロセス全体の方程式はで、最初の合計はAR(p)です。部分と2番目の合計はMA(q)プロセスです。ここにARMA(1,1)があるため、それほど複雑ではありません: where、、。、Y T=βYT-1+γεT-1+α+εTβ=0.257γ=-0.7854α=0.0064
y^t=ipβiyti+jqγjϵtj+α+ϵt
y^t=βyt1+γϵt1+α+ϵt
β=0.257γ=0.7854α=0.0064
mbt 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.