Statistical Programming

時系列解析入門

大雑把に言うと、時系列解析とは過去のデータから未来を予測する分野。時系列データは通常のデータと異なり各値が強い相関を持つケース(非定常性)や”誤差が累積してゆく(ランダムウォークなど)”ケースが多く存在しており回帰分析など一般的に良く知られている手法とは相性が悪いことが多い。故に時系列解析特有のアプローチが必要。Rを使った時系列解析の大まかな流れとして

  1. Identification : Data preparation, then Model Selection
  2. Estimation and testing
  3. Application

f:id:kyu9q:20140213233156p:plain

具体的な手順の1つのアプローチとして以下のような流れがある。

  1. データをRで読み込む
  2. ts( )メソッドでdataを時系列データ化する
  3. 時系列データをplot( )して可視化
  4. acf( ) メソッドによって定常性を調べる
  5. もし非定常なら回帰分析を利用したDetrendingする
  6. それでも非定常ならdiff( )メソッドでDifferencingを行う
  7. acfと残差を確認する
  8. モデル選択;定常=>AR,MAモデル、非定常=>ARIMA,SARIMAモデル
  9. 仮説、モデルの妥当性を検討(もし芳しくないようならモデル選択まで戻る)
  10. モデルを基に予測

定常性(Stationary)とはなにか。その前に時系列データは確率過程として扱うということを理解する必要がある。時系列データにおいては時間軸のそれぞれの値を確率変数、データ自身をその実現値として捉える。サイコロを例に挙げると考えやすい。サイコロを振って出た目の分だけお金をもらえるとする。そのとき各出目が確率変数、もらえるお金が実現値。サイコロの例では確率変数が6つと限られているが、それを拡張しその確率変数の列が果てしなくつづいていると考える。そのときその確率変数の列を確率過程という。定常性に話を戻すと時系列解析に置ける定常は定常な確率過程のことを指し示している。

一言でいうと

時間が経っても全体で見ればその時系列は変わらないという性質のこと。

厳密に言うと、

期待値と自己共分散が時間tに依存せず自己相関が2点の距離(Lag) hにのみ依存する場合、それは定常な確率過程である(弱定常。強定常は分布が完全に一致し計量経済学においては稀であるらしい)。

数学的に言うと、

f:id:kyu9q:20140214010924p:plain

f:id:kyu9q:20140214011130p:plain

例えばある八百屋さんがお客さんの数を毎日数えているとする。今日までの来客数の平均と5日前までの来客数の平均が定常過程では同じになる。もしそうでなければお客さんの平均は時間tに依存していることになりこの場合非定常になるわけだ。自己共分散も同じように考えて、一貫しているなら定常、そうでないなら非定常。

acfはauto correlation functionの略で、自己相関を表している。この自己相関を

簡単に言うと、

一昨日のデータと今日のデータがどれほど相関があるか(もちろん一昨日と今日だけではない)

別の言い方をすれば

異なる時点間でその過程が何かしらの関係性を持っているかどうか

数学的に表現すると

f:id:kyu9q:20140214011046p:plain

この自己相関はもちろんどれほど関数を横にずらすかによっって変わってくる。上のacfメソッドはずらす距離(Lag)ごとの相関度を計算してくれる。Lag==0は関数をずらしていないことを意味するので必ず相関度1になる。もしLagが大きくなるにつれて徐々に相関度が下がって行き最終的に誤差の範囲(Rでは点線で示される)に収まるようならそれは非定常。翻ってLag==1から急激に相関度が下がり範囲内に収まるならそれは定常的なデータ。これでデータの定常性を調べることができる。自己相関は見ての通り自己共分散を基に計算される。しかし自己共分散はその単位の大きさが値の大きさに影響してしまうのに対して自己相関は基準化されたもの。Detrendingはまた次回〜

 

f:id:kyu9q:20140213232848p:plain

これが非定常な自己相関。次のがより定常的な自己相関。

f:id:kyu9q:20140213232942p:plain