tbatsモデルから予測サンプルパスをシミュレートする


8

Rob Hyndmanによる優れた予測パッケージを使用して、予測間隔を設けるだけでなく、複雑な季節性を持つ時系列の過去の観測を考慮して、将来のパスをシミュレートする必要性に遭遇しました。季節性が1つまたは2つしかない、それほど複雑ではない時系列用のものがあります(forecastパッケージのSimulate.ets())。ただし、私の場合、より複雑なtbatsモデルには、simulate.ets()と同等のものが必要になります。

そのようなパスを作成するために必要なデータは既にフィットオブジェクトに存在していると思いますが、サンプルパスを作成する可能性には直接アクセスできないようです。したがって、私は素朴な解決策を考え出し、このアプローチが正しいかどうかを知りたいと思います。

require(forecast)
fit = bats(test,use.parallel=T,use.damped.trend=F,use.trend=T,seasonal.periods=seasonal.periods)

単純に、からのポイント予測を使用してサンプルパスを構築できると思います

fit 

> forecast(fit)
         Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
1960.016       24.48576 23.82518 25.14633 23.47550 25.49602
1960.032       24.79870 23.88004 25.71735 23.39374 26.20366
1960.048       25.31743 24.39878 26.23608 23.91247 26.72239
1960.065       25.69254 24.77389 26.61120 24.28759 27.09750 
1960.081       26.06863 25.14998 26.98729 24.66367 27.47359
1960.097       26.43215 25.51350 27.35080 25.02719 27.83711
1960.113       26.77674 25.85809 27.69540 25.37179 28.18170

そして単にモデルのフィッティング手順からランダムに描かれた値を追加します。

> fit$errors
Time Series:
Start = c(1959, 2) 
End = c(1960, 1) 
Frequency = 365 
  [1]  0.140656913 -0.455335141 -0.558989185  1.697532911 -0.114406022  0.366182718 -0.377056927  0.396144296

そのため、

prediction = forecast(fit)
errors = fit$errors

path = prediction$mean + sample(errors, size = length(prediction$mean))
plot(ts(path))

1つのサンプルパスを作成できます。

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

これはサンプルパスを構築する有効な方法ですか?そうでない場合、正しい方法は何でしょうか?

助けてくれてありがとう!

回答:


2

いいえ、その方法は一般に無効です。

これは、単純で例示的な反例です。ドリフトのないランダムウォークがあると仮定します。

Yt=Yt1+εt
εtN01

このプロセスはTBATSクラスに属します(これは、複雑な季節性、Box-Cox変換、またはARMAエラーのない、単に「ANN」タイプの ETSモデルです)。α=1

シミュレーションデータでメソッドを使用すると、次のようになります。

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

「シミュレートされたパス」はフラットで分散が小さいのに対し、元のデータはその平均レベルからかなり逸脱しています。元のデータのようには見えません。

手順を何度も繰り返し、各地平線の中央の95%の分布の経験的変位値を計算すると、によって報告された予測間隔と比較してそれらが間違っていることがわかりますforecast.tbats(メソッドが機能した場合、外側と一致するはずですが、灰色の間隔):

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

εt^

εtTεT+1{ε1^εT^}YT+1

YT+1=YT+εT+1

以前のように変位値を計算する場合、灰色の領域に近づく必要があります。

εtsimulate.ets


simulate.tbatsメソッドを作成する必要なく、TBATSに対してこれを行う方法に関する推奨事項はありますか?
ブライアンシャロウェイ

1
εTN0σ^2ε^pYT+1YT+h|Y1YTθ^

-2

これはおそらく非常に遅い回答ですが、なぜそうでないのかわかりません。

あなたのアプローチは正しいようです。しかし、それを行う簡単な方法があります。

変数名はすでに予測に割り当てられています。あなたは単にする必要がありplot(prediction)ます。h予測の期間数である変数をに追加することによりprediction、予測の長さを制御できます。たとえば、と言うことができますprediction <- forecast(fit, h = 48)。の値はh、どのくらい遠くまで見たいかによって異なることに注意してください。


1
プロット自体には興味がありませんが、一連の予測にアクセスできます。
Peter Lustig、2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.