時間差分
概要
AIよりも簡素な予測モデルでは理論上、平均や分散などが大きく変化しないデータ(定常なデータ)を入力として扱う前提があります。
そのため、この前提を満たす必要があるのですが、対象となるデータをそのまま扱おうとした際に、定常なデータではないことは多く、数学の理論的に破綻してしまうリスクがあります。
例えば、以下の飛行機乗船客数(#Passengers)は明らかに定常なデータとは言えないことが一目でわかると思います。
上図のようなデータでも予測対象として利用できるようにするために、既存のデータに対して、ある時刻の値と期先の値の差分をとるという前処理を行うことがあります。
これを「時間差分をとる」、「ラグをとる」と言い、値をラグ数と呼びます。
活用シーン
- 時間差分の前処理を実施したデータの定常性を確認する際に有用です。
- 詳細はこちらをご確認ください。
- 過去の自分との相関を可視化し、適切なラグ数を求める際などに有用です。
- 自己相関をみると、ラグ数12の周期で強い相関がみられます。
- 偏自己相関をみてもラグ数12で強い相関がみられます。
→ そのため、「ラグ数12で時間差分を計算したら、定常なデータになるだろうか?」という気付きに繋がります。
入出力の例
入力
Time | #Passengers int |
1949-01-01 | 112 |
1949-02-01 | 118 |
1949-03-01 | 132 |
1949-04-01 | 129 |
1949-05-01 | 121 |
1949-06-01 | 135 |
1949-07-01 | 148 |
1949-08-01 | 148 |
1949-09-01 | 136 |
1949-10-01 | 119 |
1949-11-01 | 104 |
1949-12-01 | 118 |
1950-01-01 | 115 |
1950-02-01 | 126 |
1950-03-01 | 141 |
1950-04-01 | 135 |
1950-05-01 | 125 |
出力
Time | #Passengers int | #Passengers_lag1 float |
1949-01-01 | 112 | Null |
1949-02-01 | 118 | 6 |
1949-03-01 | 132 | 14 |
1949-04-01 | 129 | -3 |
1949-05-01 | 121 | -8 |
1949-06-01 | 135 | 14 |
1949-07-01 | 148 | 13 |
1949-08-01 | 148 | 0 |
1949-09-01 | 136 | -12 |
1949-10-01 | 119 | -17 |
1949-11-01 | 104 | -15 |
1949-12-01 | 118 | 14 |
1950-01-01 | 115 | -3 |
1950-02-01 | 126 | 11 |
1950-03-01 | 141 | 15 |
1950-04-01 | 135 | -6 |
1950-05-01 | 125 | -10 |