はじめに
今回は投手の成績に注目してデータ分析を行います。
・前回の記事(打者成績)
引用したサイト
環境構築
pip install pandas numpy seaborn matplotlib japanize-matplotlib
勝率との相関係数のランキング
順位 | 項目 | 相関係数 |
---|---|---|
1位 | 完投 | 0.93 |
2位 | 暴投 | -0.83 |
3位 | 無四球 | 0.83 |
4位 | 失点 | -0.80 |
5位 | 四球 | -0.77 |
6位 | 自責点 | -0.71 |
7位 | 防御率 | -0.70 |
※相関係数は小数点第3位で四捨五入しています。
相関係数の絶対数が大きい順に並べています。
試合、投球回、打者、勝利、敗北は除外しています。
失点を抑えつつ長いイニングを投げられ、守護神がしっかりと仕事をしていると、高い勝率に結びつくと考えられます。
一方で、分業制の現代でホールド、HPの相関係数が0.48、0.31と低いです。
各項目と防御率とのグラフ
・完投
1位から4位までのチームはリーグ平均の完投数を記録しています。
ヤクルトは最下位の中日よりも少ない完投数でした(1差)。
相関係数は0.93で強い相関を示しています。
完投能力のある投手がいるほど勝率が高くなる傾向があるようです。
・暴投
1位の阪神がリーグ最低の暴投数を記録しています。
正捕手が代わった2位のカープは、暴投数が多くなっています。後逸ではないため投手のコントールが悪かったのでしょう。
広島と中日は同じ暴投数を記録していますが、勝率が大きく異なっています。
相関係数が-0.83で強い相関を示しているので、この差は意外です。
・無四球
無四球は1試合を通じて四球を出さなかった試合数です。
暴投と同様にコントールの良さの指標の1つです。
1位阪神が無四球の試合が多く、続けて3位のDeNAが多いです。
5位と6位の中日は同じ数となっており、やや重なって見えています。
2位の広島と4位の巨人は四球数の数的に高い勝率を記録しています。
相関係数が0.83で強い相関を示しています。
・失点
1位の阪神がダントツで失点が少なく、2位・3位・4位・6位が近い失点数でした。
2~4位と6位のチームで勝率に差が大きいため、他の要因が関係していることが分かると思います。
失点はイニング数が増えれば増えるほど値が増加する可能性があるので防御率で見るのが適切です。
失点と勝率の相関係数は-0.80で強い相関を示しています。一方、防御率とでは-0.70で、防御率の方が弱い相関を示しています。
・四球
1位の阪神はリーグ最少の四球数でした。
相関係数は-0.77で強い相関を示しています。
6位の中日はリーグ平均近くの失点数でしたが、四球数はリーグ平均に差が大きいです。
5位のヤクルトとは逆となっています。
失点は仕方ないが、四球を出さずに守備のリズムを良くして、攻守の交代を早くした方が良いのでしょうか?
被安打、WHIPとの関係が気になります。
・自責点
2位の広島と3位のDeNAで自責点が近い値を記録しています。
この2チームは勝率が近いため比較対象として良く、これまでの項目は2チームで差がありましたが、自責点となると差が小さくなっています。
自責点が勝率に与える影響は少ないのでしょうか?
相関係数は-0.77で強い相関を示しています。
・防御率
中日はリーグ2位の防御率を記録していますが、最下位に沈んでいます。
比較的に狭い球場がホーム球場のヤクルト、巨人、DeNAに差があるので、この結果からは球場差よりも投手力に関係してくるように思えます。
相関係数は-0.70で強い相関を示しています。
コード
データ分析に必要なライブラリをインポートします。
import pandas as pd
import numpy as np
import seaborn as sns
from matplotlib import pyplot as plt
import japanize_matplotlib
# パリーグの投手成績のデータを読み込む
df = pd.read_csv('npb_tmb_c.csv')
# 凡例のチームカラーの設定
team_colors = {
'阪神': 'yellow',
'広島': 'red',
'DeNA': 'blue',
'巨人': 'orange',
'ヤクルト': 'navy',
'中日': 'cyan'
}
# チーム順位のカラムを追加
df['順位'] = ['4', '3', '1', '2', '5', '6']
df = df.sort_values(by='順位')
防御率と勝率の分析のコードです。
plt.figure(figsize=(10, 5))
sns.scatterplot(data=df, x='完投', y='勝率', hue='チーム', palette=team_colors, s=100)
plt.title('完投と勝率の関係')
plt.xlabel('完投')
plt.ylabel('勝率')
plt.grid(True)
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left')
plt.tight_layout()
for i, row in df.iterrows():
plt.text(
row['完投'], row['勝率'], str(row['順位']), color='black',
fontsize=10, ha='right', va='bottom'
)
# セーブと得点の平均値を示す線を追加
plt.axvline(df['完投'].mean(), color='red', linestyle='--', label='完投の平均')
plt.axhline(df['勝率'].mean(), color='blue', linestyle='--', label='勝率の平均')
# 相関係数
correlation_coefficient = np.corrcoef(df['完投'], df['勝率'])[0, 1]
plt.text(0.1, 0.9, f'r: {correlation_coefficient:.2f}', transform=plt.gca().transAxes)
# 回帰直線
slope, intercept = np.polyfit(df['完投'], df['勝率'], 1)
x = np.linspace(min(df['完投']), max(df['完投']), 100)
y = slope * x + intercept
plt.plot(x, y, color='black', label=f'回帰直線: y = {slope:.2f}x + {intercept:.2f}', alpha=0.2)
plt.show()
セイバーメトリクスの指標を用いて、より詳しく分析していきます。
-
BB%:与四球の割合 式:四球数 / 打者
前述の「無四球」「四球」でも高い相関係数を示していたように四球が勝敗に関係する要因は高そうです。
-
K/BB:制球力の指標 式:三振数 / 四球数
三振と四球は投手の実力は反映されやすく、この数値が高いと良い成績を残しやすいと言われている指標です。
相関係数が0.74で強い相関を示していることから、投手の実力が勝率と関係があることのではないでしょうか。
-
IP/G:1試合当たりの投球数 式:投球回 / 試合数
優勝した阪神のIP/Gが高いです。ビジターでの勝率が高いのでしょうか?
3位のDeNAも同じく高く、6位の中日は投手戦に持ち込んでいるため値が高くなっているかと予想されます。
一方で5位のヤクルトはIP/Gの値が最低でビジターに弱いのでしょうか。来年はビジターで打ちまくり、抑えまくりを期待します。
-
LOB%:ランナーの残塁率 式(安打 + 四球 + 死球) - 失点) / (安打 + 四球 + 死球 - (1.4 × 本塁打)
LOB%は出塁した走者を本塁に返さなかった割合です。
阪神はリーグ1位の値を記録しています。出塁されてからの粘り強さが優勝の要因でしょうか。
2位の広島はリーグ平均を下回る値で、出塁したランナーをホームに返されることが多いですが、上位の勝率を記録しています。点を入れられても打ち返せばいいのでしょう。
いずれにせよピンチに強い投手が欲しいです。
-
FIP:守備に左右されない投手の実力の指標 式((13 × 本塁打数) + (3 × (四球数 + 死球数)) - (2 × 三振数)) / 投球回 + 定数
FIPは被本塁打や与四球など守備が関わらない投手の成績を独立した指標です。値が低いほど投手の能力が高いです。似たような指標でDISPがあります。
阪神がリーグ最少の記録を示しています。内野が土がホーム球場なので投手の実力が高いので崩れにくそうですね。大阪ドームがホームならより勝率が高いのでしょうか。
しかし、相関係数が0.51で約半分くらいしか説明ができないため関係が無さそうです。
他に土ではない広島以外のチームもまばらです。
-
WHIP:イニング当たりの出塁者数 式(安打数 + 四球数) / 投球回
阪神が大差で最少の値を記録しています。リーグ平均以下のWHIPが4チームで阪神投手力・守備力の高さが伺えます。
巨人は意外にもリーグ2位のWHIPを記録しています。
-
BABIP:打者が打った打球がヒットになる確率 式:(安打数 - 本塁打数) / (打者数 - 三振数 - 本塁打数 + 犠飛数)
BABIPは投手の実力に起因する部分が小さく、例年だと3近くの値を記録しますが、投高打低の風潮あってか全てのチームで3未満を記録しています。
セイバーメトリクスの指標の中で勝率との相関係数が高い順に並べると
順位 | 項目 | 相関係数 |
---|---|---|
1位 | LOB% | 0.92 |
2位 | R/G | -0.80 |
3位 | BB/9 | 0.78 |
4位 | BB% | -0.76 |
5位 | WHIP | -0.75 |
6位 | K/BB | 0.74 |
7位 | ER/G | -0.71 |
※相関係数は小数点第3位で四捨五入しています。
相関係数の絶対数が大きい順に並べています。
おまけ
防御率と他の項目の相関係数をpandasのcorr()で求めた結果Top7がコチラ
順位 | 項目 | 相関係数 |
---|---|---|
1位 | FIP | 0.93 |
2位 | HR/9 | 0.83 |
3位 | 投球回 | -0.81 |
4位 | IP/G | -0.81 |
5位 | WHIP | 0.81 |
6位 | HR% | 0.81 |
7位 | 無四球 | -0.80 |
※相関係数は小数点第3位で四捨五入しています。
相関係数の絶対数が大きい順に並べています。
試合、投球回、打者、失点、自責点、ER/G、R/Gは除外しています。
HR/9:イニング当たりの被本塁打
IP/G:1試合当たりの投球回数
HR%:1打者当たりの被本塁打数
各項目と防御率とのグラフ
・HR/9
勝率との相関係数は比較的小さいですが、防御率との値は大きく、強い相関を示しています。
いくつかの項目で相関係数を見ていきます。
LOB%
勝率との相関係数が0.92のLOB%との相関係数のランキングがこちら
順位 | 項目 | 相関係数 |
---|---|---|
1位 | 勝利 | 0.93 |
2位 | 勝率 | 0.92 |
3位 | 完投 | 0.91 |
4位 | 敗北 | -0.90 |
5位 | 暴投 | -0.85 |
6位 | K/BB | 0.85 |
7位 | 完封勝 | 0.81 |
※LOB%:走者の残塁率
K/BB:制球力の指標
FIP
順位 | 項目 | 相関係数 |
---|---|---|
1位 | IP/G | -.097 |
2位 | 投球回 | -0.97 |
3位 | 防御率 | 0.93 |
4位 | ER/G | 0.91 |
5位 | 自責点 | 0.91 |
6位 | R/G | 0.87 |
7位 | HR/9 | 0.87 |
※ FIP:守備に左右されない投手の実力の指標
IP/G:1試合当たりの投球回数
ER/G:1試合当たりの自責点数
K/BB
順位 | 項目 | 相関係数 |
---|---|---|
1位 | 無四球 | 0.87 |
2位 | BB/9 | -0.87 |
3位 | BB% | -0.85 |
4位 | LOB% | 0.85 |
5位 | 四球 | -0.85 |
6位 | 暴投 | -0.82 |
7位 | 勝利 | 0.74 |
関連記事
投手編
守備編