
【大リーグとデータ】最近良く聞くセイバーメトリクスとは?⚾
今年は大谷翔平選手の歴史的大活躍がメディアを賑わせていますが、特に彼がドジャーズに移籍して以降、日本でもMLBで一般的な野球専門のデータ分析用語がよくオンラインで目にするようになりました。中でも「セイバーメトリクス(Sabermetrics)」という用語はよく見かけますが、その意味をご存知でしたか?
セイバーメトリクスとは
セイバーメトリクスは、野球におけるデータや統計を使って、選手のパフォーマンスや試合の戦略を分析する手法です。これは、打率や打点のような従来の統計ではわからない部分も評価できる点が特徴です。アメリカでは、この手法は映画『マネーボール』(2011年)で広く知られるようになりました。映画は、オークランド・アスレチックスのゼネラルマネージャー、ビリー・ビーンが限られた予算で強力なチームを編成した実話に基づいています。ビーンは、従来のスカウティング方法よりもデータを重視し、過小評価されていた選手を発見しました。
この新しいアプローチにより、チームは成功し、他のチームも選手や戦略の意思決定にデータを活用するようになりました。
セイバーメトリクスは、主にH(ヒット)、BB(フォアボール)、AB(打数)、HR(本塁打)などの基本的な統計データから作られた特徴量(フィーチャー)を活用しています。

例えば野球解説の番組などでよく表示されるデータのほとんどはもっとも基礎的な統計データを用いる事が多いです。なぜなら基礎的なデータが一般視聴者やファンに最も分かりやすいからです。上にある大谷選手のデータではPAやHR、3Bなどが表示されていますが、これらも基礎的データです。
近年では「スタットキャスト」というデータシステムが導入され、投球や打球、走塁の速度や角度といった試合中のあらゆる動きを高精度で計測し、新しいデータと指標を提供しています。代表的なセイバーメトリクスの指標には、出塁率と長打力を組み合わせたOPS、選手がチームにどれだけ勝利をもたらすかを総合的に示すWAR、インプレー打球における打率(BABIP)などがあります。
そしてこのような高度な統計データを使うことによって以下のようなチームパフォーマンスと戦略に関わる重要な問いに答えることができます。
どの選手が試合での勝利に最も貢献しているか?
過小評価されている、または見落とされている選手は誰か?
選手がチームの特定のニーズやプレースタイルにどの程度合っているか?
コストに見合った価値を提供できる投手は誰か?
秘められた潜在能力がある選手はいるか?
重要な場面でどれだけ活躍できるか?
データソース
各プレーヤーのレギュラーシーズンを通した統計データは色々なサイトから取得できますが、私はBaseball Savantなどのサイトから直接cvsファイルをダウンロードして分析に使用しています。詳しくは以下のKaggleデータページをご参照ください。

実際にバッターの統計データを分析してみる
本格的な野球分析に入る前に、いくつかのデータセットを収集し、それらを1つに統合してからデータをクリーンアップし、分析の準備を整えました。この記事ではデータのクレンジングプロセスについては割愛しますが、もしその手順に興味があれば、最近公開したKaggleノートブックをご覧ください。
wOBA(加重出塁率)とxwOBA(期待加重出塁率)
まず最初にwOBA(加重出塁率)とxwOBA(期待加重出塁率)の関係を簡単に分析し、打者のパフォーマンスが期待通りか、それを上回るか、または下回るかを評価します。wOBAは実際の出塁パフォーマンスを測定する指標で、xwOBAはStatcastデータに基づき、打球速度や角度などから期待されるパフォーマンスを予測します。この比較により、選手の成功が持続可能かどうか、運が影響しているかを見極められます。
特にxwOBAは、守備配置や運といった外部要因を排除し、選手の本来のスキルを評価するため、将来のパフォーマンスを予測する上で重要な指標です。これにより、チームは選手の価値を正確に見極め、意思決定に役立てることができます。
選手のパフォーマンスや成績が期待を下回っているのか、それとも上回っているのかを評価するために、wOBAとxwOBAの差を計算し可視化していきます。
top_players = data[data['xwoba'] > 0.4] # To annotate only players with xwOBA > 0.4
plt.figure(figsize=(8,8))
sns.scatterplot(x='xwoba', y='woba', data=data, color='darkblue')
plt.plot([0.2, 0.5], [0.2, 0.5], color='red', linestyle='--') # 1:1 line for reference
# Annotation
for i in range(len(top_players)):
plt.annotate(top_players['name'].iloc[i],
(top_players['xwoba'].iloc[i], top_players['woba'].iloc[i]),
textcoords='offset points',
xytext=(5,-10),
ha='center', fontsize=8)
plt.show()

上記のPythonコードを実行し、wOBAとxwOBAの差を分析し、散布図で可視化しました。また、リーグ内でトップ選手を注釈として表示しました。この分析と可視化によると、wOBAの差分(wOBA Differential)でxwOBAを上回っているトップ5選手は以下の通りです:
ダルトン・バーショ
エセキエル・トバール
ホセ・ラミレス
トレイ・ターナー
ホセ・アルトゥーベ

次に、wOBAの差分(wOBA Differential)に基づいて、xwOBAを下回っているワースト5選手を分析し、可視化しました。
この分析によると、wOBAの差分で最も期待を下回っているトップ5選手は以下の通りです:
フアン・ソト
クリストファー・モレル
マイケル・ガルシア
コリー・シーガー
ヘスス・サンチェス
ここでフアン・ソト選手が差分に基づくワーストパフォーマーとして1位にランクされているのは興味深い結果です。というのも、彼は今シーズンのフリーエージェント市場において、最も注目されている選手の一人だからです。
パワーとスピードの分析
今シーズンは、例年以上にパワーとスピードの組み合わせに注目が集まった一年でした。その理由は言うまでもなく、大谷選手の歴史的な活躍にあります。特に、1シーズンで50本塁打と50盗塁を達成したことが大きな要因だと言えるでしょう。そこで、このセクションでは様々な角度からパワーとスピードの因果関係を見ていきたいと思います。ISO(純粋な長打力)とスプリント速度の散布図、さらには総盗塁数と本塁打数の散布図を用いて、選手のパワーと身体能力の関係を可視化します。これにより、両方のカテゴリーで優れた能力を発揮する「パワー・スピード型」選手を特定していきます。
まず最初に、ISOとスプリント速度を使用して、パワーとスピードのダイナミクスを可視化します。
# Select top 10 players by ISP for annotation
top_speed_players = data.sort_values(by='isolated_power', ascending=False).head(10)
# Create scatter plot
plt.figure(figsize=(10, 6))
sns.scatterplot(
x='isolated_power',
y='sprint_speed',
data=data,
color='blue',
alpha=0.7
)
# Add mean lines
plt.axhline(y=data['sprint_speed'].mean(), color='red', linestyle='--', label='Avg Sprint Speed')
plt.axvline(x=data['isolated_power'].mean(), color='green', linestyle='--', label='Avg ISO')
# Annotate top 10 players
for i, row in top_speed_players.iterrows():
plt.annotate(
row['name'], # Use player's name for annotation
(row['isolated_power'], row['sprint_speed']), # Coordinates
textcoords="offset points", xytext=(5, 5), ha='left', fontsize=9, color='darkblue'
)
# Add plot title and axis labels
plt.title('Player Power vs. Speed', fontsize=16)
plt.xlabel('Isolated Power (ISO)', fontsize=12)
plt.ylabel('Sprint Speed (ft/sec)', fontsize=12)
# Customize legend for mean lines
plt.legend(title='Mean Lines', loc='upper right')
# Show plot
plt.tight_layout()
plt.show()

上記のグラフでは、ISO指標に基づくトップレベルの選手が注釈として表示されています。ちなみに赤い点線はスプリント速度の平均値、そして緑の点線がISOの平均値です。ご覧の通り、大谷選手、アーロン・ジャッジ、ボビー・ウィットJr.のようなトップ選手は、他の選手たちから大きく抜きん出ているのが確認できるかと思います。特にボビー・ウィットJr.は、並外れたスピードを持ちながら、レギュラーシーズンを通じて本塁打数も安定して維持しています。
次に、総盗塁数とスプリント速度を可視化します。
# Create scatter plot
plt.figure(figsize=(10, 6))
sns.scatterplot(
x='r_total_stolen_base',
y='sprint_speed',
data=data,
color='purple',
alpha=0.7
)
# Add mean lines
plt.axhline(y=data['sprint_speed'].mean(), color='red', linestyle='--', label='Avg Sprint Speed')
plt.axvline(x=data['r_total_stolen_base'].mean(), color='green', linestyle='--', label='Avg Stolen Bases')
# Add annotations for top 10 stolen base leaders
top_stolen_base_players = data.sort_values(by='r_total_stolen_base', ascending=False).head(10)
for i, row in top_stolen_base_players.iterrows():
plt.annotate(
row['name'], # Player name
(row['r_total_stolen_base'], row['sprint_speed']), # Coordinates
textcoords="offset points", xytext=(5, 5), ha='left', fontsize=9, color='darkgreen'
)
# Customize plot
plt.title('Player Speed vs. Total Stolen Bases', fontsize=16)
plt.xlabel('Total Stolen Bases', fontsize=12)
plt.ylabel('Sprint Speed (ft/sec)', fontsize=12)
# Add legend and display plot
plt.legend(title='Mean Lines', loc='upper right')
plt.tight_layout()
plt.show()

このグラフを見ると、エリー・デラクルーズと大谷選手は、スプリント速度と盗塁数の組み合わせにおいて際立っています。スプリント速度と総盗塁数の関係を見ると、スプリント速度が速い選手ほど盗塁数が多い傾向がありますが、極端な値ではその相関関係が弱まっています。特に、エリー・デラクルーズと大谷選手のような例外的な選手が目立っています。
次に、本塁打数と盗塁数を可視化します。
# Create scatter plot
plt.figure(figsize=(10, 6))
sns.scatterplot(
x='r_total_stolen_base',
y='home_run',
data=data,
color='blue',
alpha=0.7
)
# Annotate top players based on home runs and stolen bases
top_players = data.sort_values(by='r_total_stolen_base', ascending=False).head(10)
# print(top_players)
for i, row in top_players.iterrows():
plt.annotate(
row['name'],
(row['r_total_stolen_base'], row['home_run']),
textcoords="offset points", xytext=(5, 5), ha='left', fontsize=9, color='darkgreen'
)
# Customize the plot
plt.title('Total Stolen Bases vs. Home Runs', fontsize=16)
plt.xlabel('Total Stolen Bases', fontsize=12)
plt.ylabel('Home Runs', fontsize=12)
plt.tight_layout()
plt.show()

ご覧の通り、54本塁打と59盗塁を達成した大谷選手は、他のデータポイントから大きく逸脱しています。エリー・デラクルーズはリーグで最も多くの盗塁を記録する素晴らしいシーズンを送りました。ブライス・トゥランは50盗塁を達成しましたが、わずか7本の本塁打にとどまりました。
三振率(K%)と四球率(BB%)の関係
次に、三振率(K%)と四球率(BB%)の関係を分析します。三振率と四球率は、選手の打席での判断力やアプローチを評価する上で重要な指標です。ちなみに三振率(K%) とは、打者が打席で三振した割合を示す指標です。選手の攻撃力やプレートでの弱点を評価するために用いられる基本的なセイバーメトリクスの一つです。そして四球率 (BB%, Walk Rate)と は、打者が打席に立った際に四球(フォアボール)を選ぶ割合を示す指標です。この数値は、選手の選球眼やプレートでの忍耐力を評価する際に用いられます。四球率が高い選手は、ピッチャーの球を見極める能力が高く、ストライクゾーンの外れた球を振らずに四球を選ぶ傾向があります。三振が少なく四球が多い選手は、持続可能な攻撃的なプロフィールを持つ可能性が高いとされています。
# Select top 5 players by walk percentage (bb_percent)
top_walk_players = data.sort_values('bb_percent', ascending=False).head(5)
# Select bottom 5 players by K%
bottom_strikeout_players = data.sort_values('k_percent', ascending=True).head(5)
plt.figure(figsize=(10, 6))
sns.scatterplot(x='bb_percent', y='k_percent', data=data)
# Annotate only the top 5 players by BB%
for i in range(len(top_walk_players)):
plt.annotate(top_walk_players['name'].iloc[i],
(top_walk_players['bb_percent'].iloc[i], top_walk_players['k_percent'].iloc[i]),
textcoords="offset points", # Position of the text
xytext=(5, -10),
ha='center', fontsize=9, color='green')
# Annotate the lowest 5 players by K%
for i in range(len(bottom_strikeout_players)):
plt.annotate(bottom_strikeout_players['name'].iloc[i],
(bottom_strikeout_players['bb_percent'].iloc[i], bottom_strikeout_players['k_percent'].iloc[i]),
textcoords="offset points",
xytext=(5, 10),
ha='center', fontsize=9, color='red')
plt.title('Plate Discipline: BB% vs K%', fontsize=16)
plt.xlabel('Walk Percentage (BB%)')
plt.ylabel('Strikeout Percentage (K%)')
plt.show()

三振が少なく四球が多いバランスの取れた選手としては、ムーキー・ベッツやフアン・ソトが挙げられます。特にソト選手は、四球率がアーロン・ジャッジ並みに高く、同時に三振率がジャッジ選手よりも約10ポイント低い点が優れていると言えるでしょう。
次回の投稿では、選手の年俸データを使用して、独自のパフォーマンス指数を計算することでコストパフォーマンス分析を行います。お楽しみに!
Kaggleデータセット&ソースコード
Sabermetrics - Offensive Performance Metrics
MLB Leaderboard 2024