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つのサンプルパスを作成できます。
これはサンプルパスを構築する有効な方法ですか?そうでない場合、正しい方法は何でしょうか?
助けてくれてありがとう!
simulate.tbats
メソッドを作成する必要なく、TBATSに対してこれを行う方法に関する推奨事項はありますか?