こんにちは。
前回はARとMAをbitcoinのデータに雑に適応させてみました。今回は季節性を持ったデータに使えるSARIMAというモデルまで進めていきます。
ではSARIMAとはなんぞや?という質問についてまず答えます。
  • Seasonal AutoRegressive Integrated Moving Averageの略
実はこれはARMAとARIMAの進化系なんです。え、何それ聞いてねえええ、ってなりますよね。順を追って説明しましょう。まずARMAについては
  • ARMA = AR + MA
です。基礎+基礎=基礎モデルです。パラメータは(p,q)でそれぞれARとMAの次数の2つです。 で、このモデルは定常性の過程が必要なんです。そろそろ覚えましたか?平均や分散,自己相関が一定である状態のことでした。自分でも覚えるために何度も書きますが非定常な系列に対しては,変数変換や,差分変換など適当な変換を行なって,定常な系列にする必要があります。例として、対数変換や差分変換などの変換をあげました。そして、検定方法としてもディッキー–フラー検定を紹介しました。しかし、僕はそんなものはまだ勉強していない、見知らぬものは使えない(がっつり使った、笑)、ということで直感的に定常性を調べるにはどうすればいいのか?簡単です。プロットが派手に変動していないかみるだけです。そして、季節性については前回と同じでコレログラムを確認するだけです。
もう気づきましたでしょうか、そうです。定常性がなくても使いてえええ、という希望に沿ったモデルがARIMAです。とはいえどうやって定常性を無視したわけではないです、上述のとあるテクニックでデータに定常性を持たせてARMAに適応させたモデルになります。つまり、
  • ARIMA = AR + MA + データの定常化 = ARMA + データの定常化
です。データの定常化は階差です。なぜ階差をとれば定常化されるのでしょうか?直感的には階差は前日比のようなものですからね。もちろん、うまくいかない時もあるでしょうが、、、そしてパラメータは(p,d,q)でARMAのパラメータに階差の日数のdが加わります。pythonでは diffかshiftを使えば計算できますね。
とはいえ、ARIMAまではOKということにして、今回のテーマSARIMAです。名前の通り季節性を加味したモデルです。パラメータはARIMAのものに加えて次のものが新たに加わります。
  • P: Seasonal autoregressive order.
  • D: Seasonal difference order.
  • Q: Seasonal moving average order.
  • m: The number of time steps for a single seasonal period
mについてはコレログラムなどでなんとかわかりますが(例えばアイスは毎年9月によく売れるなら季節性は12ヶ月ということでm=12)、P,D,Qについては総当たりでいいものをサーチするしかないようです。。。。実際に論文を見てみても の4ページ目でAICを見ながらサーチしていますね。ちなみにAICは情報量基準というものなんですがこれについては今勉強中なので少々お待ちください。
ちなみに、上の論文は読んでおいたほうがいいかもしれません、特に論文普段読まないよっていう人は特に。前回話したQQ-plotも出てるので親近感湧くかも?
ではコードを見てみましょう。今回のデータは機械学習でいうirisみたいなメジャーなデータです。多分。最後には予測もしてみたのでよかったら応用とかしちゃってください。
なんか予測がうまくいきすぎて怖い。次回は情報量基準の解説したい。
でわ。