モデル総合評価
精度(全データセットのホールドアウト MAPE)と、このサンプル実装における
コードの書きやすさ・可読性などの開発体験を並べて評価します。
定性スコアは python/forecast.py の実装体験に基づく 1〜5 点です。
総合サマリー(精度 × 開発体験)
| 順位 | モデル | 総合 | 精度スコア | 平均 MAPE 順位 | 平均 MAPE | 開発体験 | 書きやすさ | 可読性 |
|---|---|---|---|---|---|---|---|---|
| 1 |
AutoARIMA (Nixtla) statsforecast / Nixtla (Python)
|
3.9 | 3.4 / 5 | 5.5 位 | 49.81% | 4.3 / 5 | 5 | 4 |
| 2 |
AutoETS (Nixtla) statsforecast / Nixtla (Python)
|
3.8 | 3.0 / 5 | 6.5 位 | 74.80% | 4.5 / 5 | 5 | 4 |
| 3 |
Holt-Winters statsmodels (Python)
|
3.7 | 2.8 / 5 | 7.2 位 | 511.84% | 4.7 / 5 | 5 | 5 |
| 4 |
Random Forest scikit-learn (Python)
|
3.7 | 3.5 / 5 | 5.2 位 | 40.94% | 3.8 / 5 | 3 | 3 |
| 5 |
Chronos-Bolt chronos-forecasting / Amazon (Python)
|
3.6 | 3.1 / 5 | 6.2 位 | 70.58% | 4.0 / 5 | 5 | 4 |
| 6 |
SARIMA statsmodels (Python)
|
3.4 | 3.0 / 5 | 6.4 位 | 179.14% | 3.8 / 5 | 4 | 4 |
| 7 |
LightGBM lightgbm (Python)
|
3.4 | 3.2 / 5 | 6.0 位 | 45.54% | 3.7 / 5 | 3 | 3 |
| 8 |
XGBoost xgboost (Python)
|
3.4 | 3.3 / 5 | 5.6 位 | 44.68% | 3.5 / 5 | 3 | 3 |
| 9 |
ARIMA statsmodels (Python)
|
3.4 | 2.3 / 5 | 8.4 位 | 63.56% | 4.5 / 5 | 5 | 5 |
| 10 |
Prophet prophet (Meta)
|
3.3 | 2.5 / 5 | 7.9 位 | 133.38% | 4.2 / 5 | 5 | 5 |
| 11 |
SARIMAX statsmodels (Python)
|
3.1 | 2.8 / 5 | 7.2 位 | 217.48% | 3.5 / 5 | 3 | 4 |
| 12 |
Neural Net (MLP) scikit-learn (Python)
|
3.1 | 3.2 / 5 | 5.9 位 | 40.64% | 3.0 / 5 | 2 | 3 |
精度スコアは平均 MAPE 順位(1位が最良)を 1〜5 に換算。総合 =(精度スコア + 開発体験平均)/ 2。
開発体験(定性評価 1〜5)
| モデル | 書きやすさ | 可読性 | セットアップ | チューニング容易性 | ドキュメント | 実行の軽さ | コード量 | コメント |
|---|---|---|---|---|---|---|---|---|
| ARIMA | 5 | 5 | 5 | 3 | 4 | 5 | 短 | fit → forecast の数行で完結。APIが素直で読みやすい。次数選定は経験が要る。 |
| SARIMA | 4 | 4 | 5 | 2 | 4 | 4 | 短〜中 | 季節項の指定が増える程度。収束失敗や信頼区間の破綻に注意が必要。 |
| SARIMAX | 3 | 4 | 5 | 2 | 4 | 3 | 中 | SARIMA+外生。将来外生の用意が必要。次数と外生の両方でチューニングが増える。 |
| Prophet | 5 | 5 | 3 | 4 | 5 | 3 | 短 | 宣言的で非常に書きやすい。依存(cmdstan)が重く、初回セットアップが難しい。 |
| Holt-Winters | 5 | 5 | 5 | 4 | 4 | 5 | 短 | ExponentialSmoothing で直感的。季節性ありデータでは精度も高く、コスパが良い。 |
| AutoARIMA (Nixtla) | 5 | 4 | 4 | 5 | 4 | 4 | 短 | StatsForecast の統一 API。次数自動選択でチューニング負担が小さい。unique_id/ds/y 形式が必要。 |
| AutoETS (Nixtla) | 5 | 4 | 4 | 5 | 4 | 5 | 短 | AutoARIMA と同型の呼び出し。ETS を自動選択し、実装は短い。 |
| Chronos-Bolt | 5 | 4 | 3 | 5 | 4 | 3 | 短 | from_pretrained → predict で短い。PyTorch/HF 依存が重く初回ダウンロードあり。チューニングほぼ不要。 |
| Neural Net (MLP) | 2 | 3 | 5 | 2 | 3 | 3 | 長 | ラグ行列・再帰予測・スケーリングが必要でボイラープレートが多い(本実装は MLP 代替)。 |
| XGBoost | 3 | 3 | 4 | 3 | 4 | 4 | 中 | モデル本体は簡単だが、時系列用のラグ特徴量と再帰予測の実装が必要。 |
| LightGBM | 3 | 3 | 4 | 3 | 4 | 5 | 中 | XGBoost と同型のコード。学習が速いことが多い。ラグ特徴量まわりは同様に必要。 |
| Random Forest | 3 | 3 | 5 | 3 | 5 | 4 | 中 | XGBoost と同様に特徴量設計が本体。sklearn だけで完結し依存は軽い。 |
データセット別精度(MAPE %)
| モデル | 航空旅客数 (AirPassengers) | 自動車販売台数 | 大気CO2濃度 (Mauna Loa) | 米国実質GDP | オーストラリア居住人口 | 黒点数(年次) | シャンプー売上 | 大気CO2(月次・全期間) | 大気CO2(週次) | 日次最低気温(Melbourne) | 電力負荷(時間次・1年) | ナイル川年間流量 | オオヤマネコ毛皮取引数 | エルニーニョ海水温 | 自動車販売(外生変数つき) | 電力負荷(価格・太陽光つき) | Ecoemon想定・工場電力(30分) | Ecoemon想定・電力+気温湿度のみ | Ecoemon想定・電力+気温湿度(6時間=1日4点) | ColdWatch想定・冷凍庫温度(1分) | みかん週次収量(単変量) | みかん週次収量+日射 | みかん週次収量+日射・気温 | みかん週次収量+日射・気温・カレンダー | みかん週次(〜2023-06・次期収穫を将来に含む) | 平均 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ARIMA | 12.46 (#12) | 17.00 (#12) | 0.42 (#12) | 3.64 (#7) | 0.22 (#5) | 191.78 (#6) | 24.66 (#6) | 0.45 (#12) | 0.76 (#11) | 15.18 (#2) | 13.43 (#12) | 13.66 (#9) | 169.78 (#12) | 11.59 (#12) | 17.00 (#12) | 12.92 (#11) | 45.21 (#5) | 54.29 (#7) | 96.95 (#12) | 0.73 (#3) | 177.19 (#5) | 177.19 (#6) | 177.19 (#6) | 177.19 (#6) | 178.09 (#8) | 63.56% |
| SARIMA | 2.77 (#1) | 10.78 (#10) | 0.09 (#5) | 3.46 (#5) | 0.10 (#1) | 96.12 (#1) | 37.07 (#10) | 0.16 (#6) | 0.16 (#3) | 17.54 (#4) | 5.40 (#2) | 13.65 (#7) | 43.36 (#6) | 4.28 (#10) | 10.78 (#10) | 6.27 (#4) | 48.12 (#7) | 55.46 (#9) | 28.19 (#8) | 0.75 (#4) | 997.57 (#10) | 997.57 (#10) | 997.57 (#10) | 997.57 (#10) | 103.75 (#7) | 179.14% |
| SARIMAX | 2.77 (#2) | 10.78 (#11) | 0.09 (#6) | 3.46 (#6) | 0.10 (#2) | 96.12 (#2) | 37.07 (#11) | 0.16 (#7) | 0.16 (#4) | 17.54 (#5) | 5.40 (#3) | 13.65 (#8) | 43.36 (#7) | 4.28 (#11) | 10.78 (#11) | 7.41 (#7) | 47.89 (#6) | 53.42 (#6) | 28.49 (#9) | 0.98 (#5) | 997.57 (#11) | 1,485.15 (#11) | 1,362.15 (#11) | 1,106.35 (#11) | 101.78 (#6) | 217.48% |
| Prophet | 6.61 (#9) | 7.19 (#2) | 0.10 (#7) | 4.27 (#11) | 0.59 (#7) | 454.30 (#12) | 39.00 (#12) | 0.06 (#1) | 0.20 (#5) | 15.06 (#1) | 12.65 (#10) | 13.55 (#5) | 92.29 (#11) | 3.19 (#4) | 7.19 (#2) | 21.49 (#12) | 57.29 (#9) | 57.75 (#10) | 61.21 (#11) | 4.15 (#11) | 570.40 (#9) | 570.40 (#9) | 570.40 (#9) | 570.40 (#9) | 194.86 (#9) | 133.38% |
| Holt-Winters | 2.80 (#3) | 7.21 (#3) | 0.07 (#2) | 3.99 (#8) | 0.27 (#6) | 148.37 (#3) | 17.16 (#2) | 0.08 (#2) | 0.32 (#8) | 20.39 (#8) | 11.55 (#8) | 12.85 (#2) | 73.23 (#10) | 3.25 (#6) | 7.21 (#3) | 10.34 (#9) | 62.65 (#12) | 73.88 (#12) | 22.97 (#6) | 1.26 (#7) | 3,022.95 (#12) | 3,022.95 (#12) | 3,022.95 (#12) | 3,022.95 (#12) | 224.29 (#11) | 511.84% |
| AutoARIMA (Nixtla) | 4.18 (#4) | 6.69 (#1) | 0.07 (#3) | 4.08 (#10) | 0.17 (#4) | 175.57 (#5) | 20.33 (#3) | 0.21 (#8) | 0.10 (#2) | 18.87 (#7) | 5.78 (#5) | 13.64 (#6) | 33.93 (#2) | 3.27 (#7) | 6.69 (#1) | 7.02 (#6) | 59.94 (#11) | 72.48 (#11) | 23.98 (#7) | 3.99 (#10) | 171.31 (#4) | 171.31 (#5) | 171.31 (#5) | 171.31 (#5) | 99.07 (#5) | 49.81% |
| AutoETS (Nixtla) | 7.21 (#10) | 8.28 (#5) | 0.06 (#1) | 4.00 (#9) | 0.11 (#3) | 163.21 (#4) | 15.72 (#1) | 0.11 (#4) | 0.76 (#12) | 20.98 (#9) | 12.87 (#11) | 13.40 (#4) | 26.87 (#1) | 3.41 (#8) | 8.28 (#5) | 12.87 (#10) | 53.92 (#8) | 44.18 (#4) | 29.08 (#10) | 0.60 (#1) | 310.03 (#8) | 310.03 (#8) | 310.03 (#8) | 310.03 (#8) | 204.07 (#10) | 74.80% |
| Chronos-Bolt | 5.40 (#6) | 7.73 (#4) | 0.08 (#4) | 5.55 (#12) | 0.62 (#8) | 232.45 (#7) | 27.43 (#8) | 0.09 (#3) | 0.30 (#7) | 16.60 (#3) | 5.91 (#6) | 13.95 (#10) | 36.45 (#3) | 3.21 (#5) | 7.73 (#4) | 5.24 (#2) | 10.94 (#3) | 11.15 (#2) | 13.18 (#5) | 25.88 (#12) | 277.15 (#7) | 277.15 (#7) | 277.15 (#7) | 277.15 (#7) | 226.07 (#12) | 70.58% |
| Neural Net (MLP) | 5.56 (#7) | 10.54 (#9) | 0.14 (#8) | 1.27 (#1) | 6.74 (#12) | 277.55 (#9) | 23.87 (#5) | 0.14 (#5) | 0.08 (#1) | 27.69 (#12) | 10.78 (#7) | 14.67 (#11) | 41.88 (#5) | 2.19 (#1) | 10.54 (#9) | 8.31 (#8) | 58.01 (#10) | 54.37 (#8) | 12.53 (#4) | 1.45 (#8) | 88.15 (#1) | 88.15 (#1) | 88.15 (#1) | 88.15 (#1) | 94.98 (#4) | 40.64% |
| XGBoost | 6.01 (#8) | 10.24 (#8) | 0.29 (#10) | 1.47 (#3) | 1.26 (#9) | 354.55 (#11) | 27.54 (#9) | 0.34 (#10) | 0.46 (#9) | 22.65 (#10) | 5.25 (#1) | 12.45 (#1) | 56.92 (#9) | 3.67 (#9) | 10.26 (#8) | 6.75 (#5) | 8.24 (#1) | 52.59 (#5) | 2.45 (#1) | 0.69 (#2) | 96.91 (#2) | 131.11 (#2) | 133.20 (#4) | 131.43 (#3) | 40.32 (#1) | 44.68% |
| LightGBM | 7.56 (#11) | 9.71 (#7) | 0.29 (#11) | 1.54 (#4) | 1.96 (#11) | 339.89 (#10) | 22.51 (#4) | 0.36 (#11) | 0.22 (#6) | 25.44 (#11) | 5.43 (#4) | 15.45 (#12) | 46.28 (#8) | 2.88 (#3) | 9.45 (#7) | 2.50 (#1) | 9.00 (#2) | 6.94 (#1) | 2.70 (#2) | 1.66 (#9) | 187.26 (#6) | 133.12 (#3) | 127.92 (#2) | 128.27 (#2) | 50.24 (#3) | 45.54% |
| Random Forest | 5.21 (#5) | 9.11 (#6) | 0.24 (#9) | 1.46 (#2) | 1.57 (#10) | 250.64 (#8) | 25.50 (#7) | 0.26 (#9) | 0.74 (#10) | 18.47 (#6) | 12.44 (#9) | 13.16 (#3) | 38.46 (#4) | 2.37 (#2) | 9.08 (#6) | 5.43 (#3) | 13.45 (#4) | 14.58 (#3) | 3.33 (#3) | 1.06 (#6) | 149.91 (#3) | 133.39 (#4) | 132.87 (#3) | 134.17 (#4) | 46.67 (#2) | 40.94% |
評価の読み方(報告用メモ)
- 精度: 実ライブラリで学習し、ホールドアウト区間の MAPE / RMSE / MAE で比較。季節性の強い系列では SARIMA・Holt-Winters が強い傾向。
- 書きやすさ / 可読性: 統計モデルは API が短く読みやすい。木モデル・ニューラルはラグ特徴量と再帰予測の定型コードが増える。
- セットアップ: statsmodels / sklearn は軽い。Prophet は cmdstan 依存で初回導入コストが高い。
- 総合のおすすめ: まず Holt-Winters / SARIMA でベースラインを作り、必要なら Prophet や勾配ブースティングを足す、という進め方がこの検証では現実的。