時系列予測 — 過去のパターンから未来を描く
売上、気温、アクセス数… 時間とともに変わるデータには「くせ」がある。トレンド(大きな流れ)・季節性(周期的な波)・ノイズ(ゆらぎ)に分けて捉え、直近の値から次を予測する。そして予測が未来へ向かうほど不確かさが広がる様子まで、動かして体感します。
1. 時系列を3つに分解する
一見でたらめに見える波も、トレンド + 季節性 + ノイズ の重ね合わせと考えると見通しが良くなります。下の図で、3つの成分を足し合わせると観測データになる様子を確かめてください。スライダーで各成分の大きさを変えると、一番下の「観測」がどう変わるかが見えます。
分解 — 3つの成分が積み上がって観測になる
上から トレンド(右肩上がり/下がりの直線)、季節性(周期的な波)、ノイズ(ランダムなゆらぎ)。一番下がその合計=観測される時系列です。走査線の位置で「3本の色棒が積み上がって観測値になる」のが見えます。
POINT — 分解できれば未来も描ける
予測とは要するに「各成分を延長すること」。トレンドは直線を伸ばし、季節性は同じ波を繰り返し、ノイズは平均的にゼロと見なす。ぐちゃぐちゃな波をそのまま延長するのは難しくても、3つに分ければ一つずつ素直に伸ばせる。
yt = Tt + St + Rt
T=トレンド、S=季節性、R=残差(ノイズ)。掛け算で分けて振幅が水準に比例する乗法モデル yt = Tt · St · Rt もある
2. 直近の過去から次を当てる — 自己回帰(AR)
もっとも基本的な予測は「最近の値の続き」を読むこと。直近 p 個の値をもとに、次の1点を予測します。これが自己回帰(AR)モデルです。窓(ウィンドウ)が右へスライドしながら、次々と1歩先を予測していく様子を見てください。窓の幅 p を変えると、どれだけ過去を参考にするかが変わります。
自己回帰 — スライドする窓が次の点を予測する
青い帯=予測に使う直近 p 個の窓。オレンジの輪=予測値、水色の点=実際に来た値、赤線=そのズレ(1ステップ誤差)。p を大きくすると長い過去を見て、滑らかに追従します。
x̂t = c + φ1xt−1 + φ2xt−2 + ⋯ + φpxt−p
φ が自己回帰係数。ここでは「直近の傾きをそのまま延長する」簡易版で動かしている。差分(I)と移動平均(MA)を足したものが ARIMA
3. 未来ほど不確かになる — 予測区間
予測は1本の線では終わりません。1ステップ先はわりと確か、でも遠い未来ほど誤差が積み重なり、不確かさが広がります。だから予測には予測区間(帯)を添える。帯は未来へ向かって扇のように開いていきます。予測期間を伸ばして、帯がどう広がるか見てください。
予測 — 未来へ向かって開く不確かさの帯
左=観測データ、縦の点線=「現在」。右のオレンジ=予測、紫の帯=不確かさ(±kσ)。予測期間を伸ばすほど帯が √ステップ で広がります。トレンドと季節性は未来へそのまま延長されます。
注意 — 未来の情報を使わない
時系列の検証では「未来のデータで過去を予測」してはいけない。必ず時間順に、過去だけで学習し未来で試す。データをランダムにシャッフルする普通の交差検証は、未来を覗き見るデータリークを招き、実力を過大評価してしまう。
4. なぜトレンドと季節性をモデル化するのか
「次は直近と同じ」と決めつける素朴な予測は、右肩上がりや周期がある限りズレ続けます。トレンドと季節性を成分として組み込むと、予測は実データに吸い付く。チェックを切り替えて、予測誤差(RMSE)がどう変わるか比べてください。
モデル化の効果 — 成分を入れるほど予測が当たる
水色=実際の未来、オレンジ=予測、赤い帯=そのズレ(残差)。両方オフだと平らな線になり大きくズレます。トレンド・季節性を入れるほど残差が縮み、RMSE が小さくなります。
5. まとめ — 時系列予測の設計図
- 分解:時系列は トレンド + 季節性 + ノイズ。分けて捉えれば、一つずつ素直に延長できる。
- 自己回帰(AR):直近 p 個の過去から次の値を予測する。ARIMA・SARIMA はこの発想の拡張。
- 予測区間:未来ほど誤差が積もり、帯は扇状に広がる。点予測だけでなく「どれだけ確かか」も示す。
- 検証:必ず時間順に。未来を覗くデータリークは厳禁。
一歩先へ — 古典から深層まで
ARIMA/SARIMA や指数平滑(Holt-Winters)は今も需要予測の定番。近年は複数系列をまとめて学ぶ木モデル(LightGBM)や、長期依存を捉える深層モデル(DeepAR・N-BEATS・時系列 Transformer の PatchTST など)が実務を席巻している。だが土台はいつも同じ — トレンド・季節性・不確かさを正しく扱うこと。