mcpField
A
algo-forecast-arima

algo-forecast-arima

github.com/asgard-ai-platformデータ・データベース24341 回インストール21 週間前に更新
リポジトリ

algo-forecast-arima について

トレンドや季節性のある単変量時系列を扱う分析担当者向けの ARIMA 予測スキルです。定常性の検定、パラメーター選択、モデル適合、残差診断を経て、信頼区間付きの予測を作成します。

主な機能

  1. 01定常性の検定と対処
  2. 02ACF/PACFによるパラメーター選択
  3. 03ARIMAまたは季節性SARIMAの適合
  4. 04Ljung-Boxによる残差検定
  5. 05信頼区間付き予測の作成

活用シーン

  1. 01売上や需要の時系列予測
  2. 02トレンドのあるトラフィック予測
  3. 03単変量の季節データ分析

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/asgard-ai-platform/skills --skill algo-forecast-arima

インストール後、Claude Code で/algo-forecast-arimaを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

examples/
sample_scenario.md
references/
acf-pacf.md
seasonal-arima.md

詳細

ARIMA 時系列モデル

概要

ARIMA(p,d,q) は、自己回帰(AR)、差分化(I)、移動平均(MA)を組み合わせて時系列を予測します。季節変動に対応したバリエーションは SARIMA(p,d,q)(P,D,Q,s) です。定常データが必要です(差分化によって定常性を実現します)。明確なトレンドや季節性のパターンがある単変量時系列に最適です。

使用する場面

使用条件:

  • 単変量時系列(売上、需要、トラフィック)を予測する場合
  • データに明確なトレンドや季節性のパターンがある場合
  • 統計的特性を備えた解釈可能なモデルが必要な場合

使用しない場面:

  • 多数の外部特徴量を用いた多変量予測の場合(ML モデルを使用してください)
  • 非常に長期の予測の場合(ARIMA の信頼区間は急速に広がります)
  • 不規則なデータやイベント駆動型のデータの場合(因果モデルを使用してください)

アルゴリズム

IRON LAW: ARIMA Requires STATIONARY Data
Non-stationary data (trend, changing variance) violates ARIMA assumptions.
Test stationarity with ADF test (p < 0.05 = stationary).
If non-stationary: difference the series (d=1 usually suffices).
If still non-stationary after d=2, ARIMA may not be appropriate.
フェーズ 1:入力の検証

確認項目:時間間隔が規則的であること、欠損値がないこと(必要に応じて補完)、観測数が最低 50 件あること(理想的には季節周期を 2 回以上含むこと)。ADF 検定で定常性を検定します。 ゲート: データの間隔が規則的で、十分な長さがあり、定常性が評価されていること。

フェーズ 2:コアアルゴリズム
  1. 定常性:ADF 検定を実施します。p > 0.05 の場合は差分化します(d=1)。その後、再検定します。
  2. パラメーターの選択:ACF/PACF プロットを確認します。または auto_arima(AIC に基づくグリッドサーチ)を使用します。
    • p(AR 項):PACF の打ち切りラグ
    • q(MA 項):ACF の打ち切りラグ
    • d:必要な差分化の回数
  3. モデルの適合:最尤推定
  4. 予測:信頼区間付きの予測値を生成します
フェーズ 3:検証

残差を確認します。残差はホワイトノイズ(自己相関がない状態)である必要があります。Ljung-Box 検定を実施します(p > 0.05 = 自己相関なし)。残差が正規分布に従うことも確認します。 ゲート: 残差が Ljung-Box 検定に合格し、パターンが残っていないこと。

フェーズ 4:出力

信頼区間付きの予測値を返します。

出力形式

{
  "forecasts": [{"period": "2025-04", "forecast": 1250, "lower_95": 1100, "upper_95": 1400}],
  "model": {"order": [1,1,1], "seasonal_order": [1,1,1,12], "aic": 520.3},
  "metadata": {"training_periods": 60, "forecast_horizon": 12}
}

例

入出力の例

入力: 上昇トレンドのある月次観測値 12 件:[10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32]

ステップ 1: 1 階差分 = [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2](一定 → 定常、d=1 で十分)

ステップ 2: ドリフト μ=2 の ARIMA(0,1,0) ランダムウォークが、最も単純な適合モデルです。

予測値の例(ドリフト=2 の ARIMA(0,1,0)):

  • 期間 13:32 + 2 = 34
  • 期間 14:32 + 4 = 36
  • 期間 15:32 + 6 = 38

確認:差分系列は一定(2)→ AR/MA 項は不要です。残差は厳密に 0 → 完全適合(簡略化した例)。実データでは、残差が Ljung-Box 検定に合格する必要があります(p > 0.05)。

エッジケース
入力期待される結果理由
トレンドも季節性もないARIMA(p,0,q)差分化が不要
強いトレンドのみARIMA(p,1,q)1 階差分で線形トレンドを除去
季節性が複数あるARIMA では対応が難しい場合があります代わりに Prophet または TBATS を検討してください

注意点

  • 過剰な差分化:d=1 で十分なのに d=2 にすると、不要なノイズが生じます。再度差分化する前に、1 階差分が定常であるかを確認してください。
  • Auto-ARIMA は万能ではありません:AIC に基づく選択では、過剰適合したモデルが選ばれることがあります。自動選択の結果にかかわらず、必ず残差診断を行ってください。
  • 信頼区間は急速に広がります:複数ステップ先の予測では、不確実性が蓄積します。季節周期 2~3 回を超える期間については、点予測を過信しないでください。
  • カレンダー効果:営業日、祝日、うるう年は、月次・週次データに影響します。ARIMA はこれらを標準では扱いません。回帰変数を追加するか、Prophet を使用してください。
  • 構造変化:ARIMA はデータ生成プロセスが安定していることを前提とします。COVID、市場ショック、政策変更はこの前提を崩します。

参考資料

  • ACF/PACF の解釈ガイドについては、references/acf-pacf.md を参照してください
  • SARIMA の季節パラメーターの選択については、references/seasonal-arima.md を参照してください

コメント