0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Marcel法の限界を超えたい — NPB予測にベイズ回帰を導入した15ステップの記録

0
Last updated at Posted at 2026-03-04

はじめに

以前の記事で、NPB選手成績予測にMarcel法を使ったシステムを紹介しました。

Marcel法は「過去3年の加重平均+平均回帰」というシンプルな手法で、投手ERA予測ではMLモデル(LightGBM/XGBoost)を上回る精度でした。しかし、いくつかの限界がありました。

課題 Marcel法の扱い
新外国人選手 リーグ平均で代替(前リーグ成績を使えない)
点推定のみ 不確実性を表現できない
年齢調整が一律 全選手+0.3%/年
スキル指標を無視 K%やBB%の情報を活かせない

この限界を超えるために、ベイズ回帰(Stan/Ridge)を導入するプロジェクトを始めました。

15ステップ、約2週間の試行錯誤の記録です。


はじめての方へ:この記事で登場する用語

用語 意味
Marcel法 過去3年の成績を加重平均して翌年を予測するシンプルな手法。重みは直近ほど高い(5:4:3)
ベイズ回帰(Stan) データから確率分布を推定し、不確かさも含めて予測する統計手法
wOBA 重み付き出塁率。四球・単打・二塁打・本塁打などに異なる重みをつけた打撃総合指標
ERA(防御率) 9イニング当たりの自責点。投手の基本的な成績指標
K%(三振率) 全打席に占める三振の割合。年度間で安定しやすく、投手の実力を示す指標
BB%(四球率) 全打席に占める四球の割合
BABIP インプレー打球の安打率。0.300前後が平均で、大きく外れる年は「運」の影響が大きいとされる
MAE 平均絶対誤差。予測と実績のずれの平均。小さいほど精度が高い

Step 1: 外国人選手の変換係数

問題

NPBには毎年多くの外国人選手が入団します。彼らの「前リーグ成績」をNPBスケールに変換できれば、リーグ平均よりも良い初期予測ができるはずです。

やったこと

  1. 2015-2025年のNPB外国人選手365名を特定

    • カタカナ名検出 + 出身地 + ロスター初登場年で抽出
  2. FanGraphsの前リーグ成績とマッチング(231名成功)

    • 名前正規化(アクセント除去、Jr/Sr除去)
    • pykakasi でカタカナ→ローマ字変換
  3. リーグ間変換係数を算出

リーグ wOBA比(打者) ERA比(投手) サンプル数
MLB→NPB 1.235 0.579 56打者 / 74投手
AAA→NPB 1.271 0.462 9打者 / 6投手

打者のwOBAは約24%向上、投手のERAは約42%改善する傾向があります。

教訓

変換係数単独ではベースライン(リーグ平均)より悪い結果に。 wOBA/ERAは環境依存の「結果指標」なので、単純な比率変換では精度が出ません。モデルの事前分布(prior)として使う設計に切り替えました。


Step 2-4: PyMCからStanへ — スキル指標の発見

PyMC階層モデル(失敗)

PyMCで前リーグのwOBA/ERAを特徴量にshrinkage weight wを学習。結果: w ≈ 0.12で前リーグ成績をほぼ無視。

Stan v1 — K%/BB%の導入(成功)

wOBA/ERAが環境依存の「結果指標」であるのに対し、**K%/BB%は環境依存が低い「スキル指標」**です。

打者: npb_wOBA = lg_avg + β_woba·z_woba + β_K·z_K + β_BB·z_BB + noise
投手: npb_ERA = lg_avg + β_era·z_era + β_fip·z_fip + β_K·z_K + β_BB·z_BB + noise

外国人モデルの結果(2020-2025バックテスト)

モデル MAE ベースライン 改善率
打者 v0 (wOBAのみ) 0.0330 0.0337 -2.1%
打者 v1 (+K%/BB%) 0.0325 0.0337 -3.8%
投手 v0 (ERAのみ) 0.749 0.749 ±0%
投手 v1 (+K%/BB%/FIP) 0.736 0.749 -1.7%

Step 5: データ充実

  • Deep Researchで22名を追加特定 → master 393名
  • FanGraphsマッチ: 231 → 253名
  • 打者改善率: -3.8% → -5.1%(データ増の効果)

Step 6: チーム順位予測(Monte Carlo シミュレーション)

手法

  1. 各選手の予測値に個人ノイズ(σ = Marcel MAE)を加える
  2. チーム RS/RA を集計
  3. ピタゴラス勝率(exp=1.83)で勝利数に変換
  4. 10,000回繰り返して分布を得る

バックテスト(2018-2025, 96チーム年度)

指標
点予測 MAE 6.41勝
80%CI カバレッジ 86.5%

2021年は MAE 10.3勝と大外れ(両リーグで前年最下位が優勝した異常年)。


Step 7-9: 日本人選手Stanモデル

外国人モデルは初年度のみ。本丸は日本人選手1,300人以上の予測改善です。

モデル設計

打者: actual_wOBA = Marcel_wOBA + δ_K·z_K + δ_BB·z_BB + δ_BABIP·z_babip + noise
投手: actual_ERA = Marcel_ERA + δ_K·z_K + δ_BB·z_BB + noise

Marcel予測をベースに、K%/BB%/BABIPで補正するアプローチです。

発見: 打者K%/BB%はwOBAに既に含まれている

wOBAの計算式にBBが直接入るため、K%/BB%の追加効果はほぼゼロ。代わりに**BABIP(ラッキー成分)**が有効でした。δ_BABIP = -0.006(高BABIPは翌年回帰する)。

スケーリング問題と解決

RS/RAを独立にスケーリングするとStanの系統的改善が消える問題を発見。marcel_anchored スケーリングを開発して解決。ΔMAE が -0.063 → -0.154(2.4倍改善)。


Step 10-11: 統計的有意性への挑戦

Ridge回帰でStanベイズモデルを近似し、高速LOO-CVを実施。

選手レベル(2018-2025)

指標 n Marcel MAE Stan MAE p値 Bootstrap
打者 wOBA 2,208 0.05023 0.04980 0.060 97.1%
投手 ERA 2,164 1.23008 1.22241 0.057 97.1%

5特徴量モデルの発見

投手にK/9・BB/9を追加:

モデル p値 Bootstrap
ERA (3feat: K%, BB%, age) 0.607 68.9%
ERA (5feat: +K/9, BB/9) 0.012 99.3%

p = 0.012 で有意差達成。 K%(打席対比率)とK/9(イニング対比率)は異なる情報を持っていると考えられます。


Step 12-14: チーム予測の精度改善

  1. FA帰属修正: 移籍選手の成績を正しいチームに帰属
  2. リーグ平均補完: カバーできない選手をリーグ平均で埋める
  3. カバー率改善: 生年月日14名補完で PA_cov +2pp
  4. 4新特徴量追加: pa_stability, ip_stability, prev_babip_p, prev_woba_dev_sq

Step 15: 限界到達

矛盾

  • 選手レベル: Stan > Marcel(p=0.06, Bootstrap 97%)
  • チームレベル: Stan < Marcel(+0.198W 悪い)

原因:PA加重の構造

四分位 PA範囲 Stan勝率
Q1(低PA) 30-64 55%(Stan最強)
Q2 65-157 46%
Q3 158-361 44%
Q4(高PA) 362-685 49%

Stanは低PA選手に効くが、チームRSはPA加重でQ4(レギュラー)が支配。 レギュラーにはMarcelの3年加重平均で十分な精度が出ます。

min_pa_team sweep 実験

min_pa_team Marcel MAE Stan MAE Δ
0(現状) 6.725 6.923 +0.198
50 6.682 6.903 +0.221
100 6.644 6.868 +0.224

Marcel MAEは改善するが、Stan-Marcelの差はむしろ悪化。フィルタでは構造的問題は解決できません。


結論と学び

最終結果

レベル Marcel MAE Stan MAE 判定
選手(wOBA) 0.05023 0.04980 Stan優位(p=0.06)
選手(ERA) 1.23008 1.22241 Stan優位(p=0.06)
チーム(勝) 6.725 6.923 Marcel優位

4つの学び

  1. Marcel法は驚くほど強いベースライン。高PA選手に対して非常に正確
  2. K%/BB%は「環境非依存のスキル指標」として有効。特に低PA選手の予測で力を発揮
  3. 選手レベルの改善がチームレベルに伝わるとは限らない。PA加重集計が高PA選手(Marcel精度高い層)に支配される
  4. Statcastのような打球品質データがなければ、次の壁は越えられない

今後

MLBでStatcastデータ(バレル率、EV、Whiff率、Stuff+等)を特徴量に使い、NPBの限界を超えられるか検証する予定です。


データ提供元:プロ野球データFreakNPB公式サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?