時系列予測フレームワークfableを試す
fableとは?
ETS,ARIMA,Random Walk,Neural Network autoregressionなどの時系列予測手法群の評価や予測結果の描画をしてくれるフレームワークです. 短いコード量でそれぞれのモデルを手軽に実行できるのが特徴です.使い方を忘れないようにメモしておきます. 作者の中にはRのforecastなどを開発している Rob Hyndman先生もいます.
インストール方法
install.packages("fable")
モデル一覧
現時点では以下のような手法が実装されています.
- ARIMA
- ETS(Exponential smoothing state space models)
- TSLM(Time series linear models)
- Simple forecasting methods(移動平均モデル,ランダムウォークなど)
- Neural network autoregression
- Vector autoregression
使い方
データフレームのtsibbleに変換してmodelに突っ込んでforecastするだけです. modelに予測したいモデルを複数入れることが可能です.
tsibble_data %>% model( # value は予測したいデータ hoge = hoge_model(value), fuga = fuga_model(log(value)) # 対数変換やBox-Cox変換も可能 ) %>% forecast()
AirPassengersの時系列予測
おなじみのAirPassengersで試してみます.以下が,前処理も含めた12種類ほどの手法で比較した実装です.
library(fable) library(tsibble) library(lubridate) library(dplyr) AirPassengers %>% as_tsibble %>% model( ets = ETS(value), ets_log = ETS(log(value)), ets_box_cox = ETS(box_cox(value, 0.3)), arima = ARIMA(value), arima_log = ARIMA(log(value)), arima_box_cox = ARIMA(box_cox(value, 0.3)), snaive = SNAIVE(value), snaive_log = SNAIVE(log(value)), snaive_box_cox = SNAIVE(box_cox(value, 0.3)), nnetar = NNETAR(value), nnetar_log = NNETAR(log(value)), nnetar_box_cox = NNETAR(box_cox(value, 0.3)) ) %>% forecast(h = "2 years") %>% autoplot(filter(as_tsibble(AirPassengers), year(index) > 1950), level = NULL)