見出し画像

プロ野球2024「良コスパ」の選手を探し出そう! ~西川遥輝は“お買い得”だったのか~

近年、セイバーメトリクスに代表されるように、「野球」×「データ」の視点から野球を統計的に捉え、その結果を元に強いチーム作りに生かす動きが主流となっています。このような考え方はチーム関係者に限らず、個々の野球ファンの間でも広く受け入れられてきているのではないでしょうか。データに基づく分析が一般的になり、ファンも成績を数字を元に読み解き、選手やチームの評価に役立てる場面が増えてきていると感じます。

そうした流れの中で(プロ野球のシーズン終了に伴い暇な時間が増えたこともあり)、今回は「プロ野球選手の年俸データ」に着目し、データ分析の視点で少し掘り下げてみることにしました。
特に、年俸に対する選手の成績を定量的に評価することで、いわゆる「コストパフォーマンス」の高い選手を見つけ出すことを目指します。
以下では、その内容をまとめたいと思います。


0.はじめに

0.1 経緯や背景

今回、「プロ野球選手の年俸データ」を扱おうと思ったきっかけはいくつかあるのですが、、、
中でも特に大きな要因として、今シーズン終盤にかけて個人的に以下の点が気になっていたことが挙げられます。

「西川遥輝選手は今シーズンどれくらいの活躍をしたのだろうか?」

西川遥輝選手といえば、俊足巧打で知られる外野手で、その活躍から北海道日本ハムファイターズ時代には年俸2億4000万円という高額契約を勝ち取ったトッププレイヤーでした。しかし、その後は自由契約となり(当時は「ノンテンダー」が大きな話題となりました)、減俸のうえで東北楽天ゴールデンイーグルスに移籍しましたが、2023年には戦力外通告を受けました。

そのような中,2024年に東京ヤクルトスワローズへ移籍し、その年俸はわずか1600万円。プロ野球界では破格とも言える低年俸であり、当時ファンの間でも驚きと共に話題となりました。
(なお、1600万円と聞くと一般的な会社員の収入としてはかなりの高額ですが、30歳前後がパフォーマンスのピークと言われるプロ野球選手にとっては生涯年俸ベースで非常に低い年俸です。ちなみに、プロ野球の一軍選手の最低保証年俸は1600万円であり、西川選手の契約はまさにその最低ラインにあたります。)

しかし、その年俸の低さにもかかわらず、今シーズンの西川選手は、主力の塩見選手がケガで離脱する中、ヤクルト外野陣を大きく支えた選手の一人となりました。彼の安定したプレーに対し、「この年俸でこの活躍はありがたい!」、「コスパ良すぎる!」という声がファンの間でも多く聞かれたと思います。

このような背景から、プロ野球選手の年俸と活躍の関係性に興味をもち、これが今回の年俸データを元にした分析の動機となりました。

「1600万円という年俸で、西川選手はどれほどの活躍を見せたのか?」
「低年俸ながら高パフォーマンスを発揮(=活躍)した選手はどれくらいいるのか?」

この2つの視点を踏まえ、西川選手の年俸に対するプレーの価値を定量的に評価し、さらに他のプロ野球選手についても年俸と成績を元にしたパフォーマンス評価を行い、低年俸で優れた成績を収めた選手を明らかにしたいと考えます。

0.2 表現に関する留意点

なお、ここまで「コスパ」や「お買い得」という言葉を使って説明してきましたが、これは分かりやすさやインパクトを重視して表現したもので、決して選手を物のように評価する意図ではないこと、ご理解ください。むしろ、年俸に見合わないほどの貢献をしている選手に注目し、そのパフォーマンスの重要性を再確認しようという趣旨です。
また、NPBではMLBのように贅沢税や年俸に対する制約が少ないため、年俸自体がチーム編成に大きな影響を与えないとも考えられますが、あくまで「データを用いて選手の価値を見極める」という視点での試みです。

1.分析方法

1.1 分析対象の選定

セ・パ両リーグ、投手と野手、1軍とファームなどを全て対象とする場合、選手の評価基準や環境が異なるため、比較が難しいと判断しました。また、打席数が極端に少ない選手に関しては、打撃成績に上振れや下振れが生じる可能性があります(もちろん、少ない打席数での打撃成績が必ずしも上振れ/下振れとなるわけではありませんが、その分母の小ささから信頼性に欠ける値であることは確かです)。

以上の事情を踏まえ、今回は対象を1軍公式試合で50打席より多いセ・リーグの野手に絞り込み、分析を行います。
(なお、この50打席という数字に特別な意味はありませんので、最適な基準の設定方法があればぜひお知らせいただければ幸いです。)
(投手やパ・リーグに関しては追々作業を進めたいと考えています!)

1.2 評価基準

野手の評価においては、セイバーメトリクスの基本に基づき、得失点の増減に焦点を当てた評価を行います。(あくまでも点を取ることが「目的」であり、打撃はその「手段」であるという位置づけです。)
具体的には「走・攻・守」の3つの要素から得点増加や失点減少を考えますが、今回は守備面を含む指標(UZRやWAR)は対象外とし、攻撃面に絞り、打撃と走塁による得点増加を中心に評価します。

1.3 評価指標

具体的な評価指標としては、2024年シーズンにおける各選手の推定年俸と、1軍公式戦での以下の2つの打撃指標RCRC27を採用し、これを元に各選手の活躍を評価します。
なお、それぞれの指標に関しては、以下のリンクに詳しい説明があります。

  1. RC (Runs Created)

    • 打撃と走塁によりその選手がこれまで生み出した得点を表す指標。

    • $${RC=((A+2.4×C)×(A+3×C)÷(9×C))-(0.9×C)}$$

    • $${A=安打+四球+死球-盗塁死-併殺打}$$

    • $${B=塁打+0.24×(四球-故意四球+死球)+0.62×盗塁+0.5×(犠打+犠飛)-0.03×三振}$$

    • $${C=打数+四球+死球+犠打+犠飛}$$

  2. RC27

    •  打席数の違いを正規化したRCの値であり、1試合(27アウト)あたりにその選手が生み出す得点を表す指標。

    • $${RC27=RC×27÷(打数-安打+盗塁死+犠打+犠飛+併殺打)}$$

また、各選手のRCおよびRC27を年俸で割った値(単位年俸当たりのRC、RC27)も考慮し、これらの指標をもとに選手の成績と年俸の関係を可視化して、パフォーマンスの傾向や分布を把握します。これにより、年俸に対する選手の活躍度合いを評価し、低年俸で高パフォーマンスを発揮(活躍)した選手を見つけ出すことを目指します。

1.4 評価指標についての補足

補足として、RCは出場機会(主に打席数)に依存する指標であり、出場機会が多い選手ほど高い値を示す傾向にある積み重ねの指標です。一方、RC27はRCを27アウトという同一の条件下での比較を行うための正規化指標です。
これらの値の選定理由に関して、低年俸の選手に対する「活躍(=高パフォーマンス)」の定義は一概には難しいのですが・・・
ここでは、プロ野球選手の年俸は年単位で支払われるため、選手が1シーズンを通して出場し、チームを支える能力が重要であると捉えることにします。よってこの観点から、主にRCを用いて選手の評価を行うこととしました。ただし、低年俸の選手は打席数が少ない傾向にあるため、打席数に左右されないRC27や、単位年俸当たりのRC/RC27の値も参照して分析を行うという流れを取ります。

(もちろん、出場数や打席数に関係なく、特定の試合でチームを勝利に導く力を「活躍」として評価することも考えられます。例えば、シーズンでわずか1安打しか打たなくても、その1本がサヨナラ勝利を決める一打であれば、それはチームに勝利をもたらした大きな「活躍」と捉えることもできます。これを活躍の定義とする場合、WPA(勝利貢献度)などシチュエーションを加味した指標が有効と考えていますが、私自身まだまだ知識不足です。もし詳しい方がいれば、さらにご意見をお聞きしたいところです。)

今回はこのようにRCを中心にしつつ、RC27単位年俸当たりのRC、RC27の値も併用して、低年俸で高パフォーマンスを発揮した選手を分析します。

2.実装

2.1 データの取得

2024年シーズンにおける各選手の推定年俸と以上の打撃指標データは、Pythonを用いたWebスクレイピングで取得し、データソースとして「プロ野球データFreak」様(https://baseball-data.com/)を使用させていただきました。

2.2 コード

import pandas as pd
import numpy as np
import statsmodels.api as sm
import seaborn as sns
import matplotlib.pyplot as plt
from datetime import datetime
import japanize_matplotlib

# 年俸データのURL
urls_and_teams = [
    ("https://baseball-data.com//player/s/", "ヤクルト"),
    ("https://baseball-data.com/player/t/", "阪神"),
    ("https://baseball-data.com/player/yb/", "DeNA"),
    ("https://baseball-data.com/player/g/", "巨人"),
    ("https://baseball-data.com/player/c/", "広島"),
    ("https://baseball-data.com/player/d/", "中日"),
]

team_initials = {
    "ヤクルト": "S",
    "阪神": "T",
    "DeNA": "B",
    "巨人": "G",
    "広島": "C",
    "中日": "D"
}

# 空のリストに全てのデータフレームを保存
all_salary_df = []

for url, team in urls_and_teams:
    # HTMLからテーブル取得
    tables = pd.read_html(url, converters={'No.': str})
    salary_df = tables[0]

    # 背番号「0」と「00」を区別し、2桁処理
    salary_df['No.'] = salary_df['No.'].apply(lambda x: '0' if x == '0' else ('00' if x == '00' else x.zfill(2)))

    #print(salary_df.columns) # デバッグ:列名の確認
    #salary_df.columns = ['No.', '選手名', '守備', '生年月日', '年齢', '年数', '身長', '体重', '血液型', '投打', '出身地', '年俸(推定)']

    # 年俸(推定)を処理
    salary_df = salary_df.copy()
    salary_df.loc[:, '年俸(推定)'] = salary_df['年俸(推定)'].str.replace('万円', '').str.replace(',', '').replace('-', np.nan).astype(float)
    
    # チーム列を追加し、対応するチーム名を設定
    salary_df['チーム'] = team
    
    # 不要なcolumnの削除
    salary_df = salary_df[['No.', '選手名', 'チーム', '年齢', '年俸(推定)']]
    
    # 選手名とチームの組み合わせの重複を表示
    duplicate_rows = salary_df[salary_df.duplicated(subset=['選手名', 'チーム'], keep=False)]
    if not duplicate_rows.empty:
        print(f"重複している選手名とチームの組み合わせ:\n{duplicate_rows}")
    else:
        print("重複する選手名とチームの組み合わせ:なし")
    
    # 選手名とチームが同じデータの後者を削除
    salary_df = salary_df.drop_duplicates(subset=['選手名', 'チーム'], keep='first')

    # データフレームをリストに追加
    all_salary_df.append(salary_df)

# 全てのデータフレームを結合
final_salary_df = pd.concat(all_salary_df, ignore_index=True)

# 打撃成績のURL
stats1_url = "https://baseball-data.com/stats/hitter2-all/tpa-1.html"
stats2_url = "https://baseball-data.com/stats/hitter3-all/tpa-1.html"

# テーブル取得
stats1_tables = pd.read_html(stats1_url)
stats2_tables = pd.read_html(stats2_url)
stats1_df = stats1_tables[0]
stats2_df = stats2_tables[0]

# カラム名を整形
stats1_df.columns = ['順位', '選手名', 'チーム', '打率', '試合', '打席数', '打数', 
            '得点', '安打', '二塁打', '三塁打', '本塁打', '塁打', '打点', '盗塁', 
            '盗塁刺', '犠打', '犠飛', '四球', '敬遠', '死球', '三振', '併殺打', '出塁率', '長打率']
stats2_df.columns = ['順位', '選手名', 'チーム', '打率', '打数', '安打', '本塁打', 
            '打点', '出塁率', '長打率', 'OPS', 'NOI', 'GPA', 'IsoP', 'IsoD', 
            'RC','RC27', 'XR', 'XR27', 'BABIP', 'SecA', 'TA']

stats_df = pd.merge(stats1_df, stats2_df)

# 数値変換
numeric_columns = ['打率', '試合', '打席数', '打数', '得点', '安打', '二塁打', '三塁打',
       '本塁打', '塁打', '打点', '盗塁', '盗塁刺', '犠打', '犠飛', '四球', '敬遠', '死球', '三振',
       '併殺打', '出塁率', '長打率', 'OPS', 'NOI', 'GPA', 'IsoP', 'IsoD', 'RC', 'RC27',
       'XR', 'XR27', 'BABIP', 'SecA', 'TA']
stats_df[numeric_columns] = stats_df[numeric_columns].apply(pd.to_numeric, errors='coerce')

# 不要なcolumnを削除
stats_df = stats_df[['選手名', 'チーム', '試合', '打席数', 'RC', 'RC27']]

# 選手名とチームを基に年俸データとRCデータを結合
merged_df = pd.merge(final_salary_df, stats_df, on=['選手名', 'チーム'], how='inner')

# Playercolumnを作成
merged_df['Player'] = merged_df['チーム'].map(team_initials) + merged_df['No.'].astype(str) + "_" + merged_df['選手名'].str.replace(' ', '').str.replace(' ', '')

# 無限大(inf)やNaNを含むデータを表示
invalid_data = merged_df[(merged_df.isin([np.inf, -np.inf, np.nan])).any(axis=1)]
#invalid_data = merged_df[merged_df.isnull().any(axis=1)]
if invalid_data.empty:
    print("無限大(inf)やNaNを含むデータ: なし")
else:
    print(f"無限大(inf)やNaNを含むデータ:\n{invalid_data}")

# 無限大(inf)やNaNを含むデータを削除
merged_df = merged_df.replace([np.inf, -np.inf], np.nan).dropna()

# 不要なcolumnの削除
merged_df = merged_df[['Player', '年齢', '試合', '打席数', '年俸(推定)', 'RC', 'RC27']]

# 各指標計算
merged_df['RC/salary'] = merged_df['RC'] / merged_df['年俸(推定)']
merged_df['RC27/salary'] = merged_df['RC27'] / merged_df['年俸(推定)']

# データの抽出条件(条件に応じて)
merged_df = merged_df[(merged_df['打席数'] > 50)]
#merged_df = merged_df[(merged_df['年俸(推定)'] < 5000) & (merged_df['打席数'] > 50)]
#merged_df = merged_df[(merged_df['年俸(推定)'] < 2000) & (merged_df['打席数'] > 50)]

# ソート
merged_df = merged_df.sort_values('年俸(推定)', ascending=False)

# Excelファイルに保存
today = datetime.now().strftime('%Y%m%d')
output_file = f'~/salary_{today}.xlsx'
merged_df.to_excel(output_file, index=False)
print(f"{output_file}に保存完了")

# プロットする指標のリスト
metrics = ['RC', 'RC27']

# 散布図を作成
for metric in metrics:
    plt.figure(figsize=(10, 6))
    plt.scatter(merged_df[metric], merged_df['年俸(推定)'], label=metric)

    # 各点に選手名を表示
    for i, row in merged_df.iterrows():
        plt.text(row[metric], row['年俸(推定)'], row['Player'], fontsize=9, ha='right')

    plt.xlabel(f'{metric}', fontsize=12)
    plt.ylabel('推定年俸 (万円)', fontsize=12)
    plt.title(f'{metric} vs 推定年俸(打席数>50)', fontsize=14)

    plt.subplots_adjust()

    plt.show()

# 説明変数、目的変数の設定
X = merged_df['RC']
y = merged_df['年俸(推定)']

# 定数項の追加
X = sm.add_constant(X)

# 線形回帰モデルの適合
model = sm.OLS(y, X).fit()

# 結果の表示と回帰直線のプロット
print(model.summary())

plt.figure(figsize=(10, 6))
sns.regplot(x='RC', y='年俸(推定)', data=merged_df, line_kws={'color': 'red'})
plt.title('RCと年俸の単回帰')
plt.xlabel('RC')
plt.ylabel('年俸(推定)')

plt.show()

少し面倒な処理を行っている部分もあるため補足説明を加えておきます。
まず、「選手名とチームの組み合わせの重複を表示」では、後に年俸データと打撃成績データを統合する際に備え、同じチーム内に同姓同名の選手がいないかをチェックしています。今回のデータの場合、巨人には坂本勇人選手が2名存在し、背番号006の坂本選手は今回の条件からは外れることになるので、そのデータを削除する対応を取っています。
次に、「無限大やNaNを含むデータを表示」では、今回のデータにて年俸データが不明の選手が存在することを確認しており、また、無限大を取るデータは可視化の際に不適切なため、そのようなデータが含まれていないか確認し、見つかった場合にはそのデータを削除する処理を行っています。

3.結果と考察など

3.1 散布図による選手の年俸と打撃成績の関係

横軸に各打撃指標、縦軸に推定年俸を取った2次元平面上で、対象の選手に対する散布図を作成した結果、以下のようになりました。

特に原点付近が非常に見づらい図になってしまいましたが、まず全体の傾向として、RCと年俸の間には正の相関が見られるように思われます(この点については後に述べます)。これは、活躍の実績がある選手は翌年の年俸が高くなることが多く、またその年も実際に活躍することが多いという事情が反映されているものと思われます。

3.2 RCと年俸の相関分析

さて、以上のようにRCと年俸には感覚的にも正の相関があることは確認できますが、その関係性をより具体的に把握し、分布の傾向を掴むために、RCを説明変数、年俸(salary)を目的変数とし、これらの変数間に線形関係があると仮定して、一次式での回帰分析(単回帰分析)を試みました。

95%信頼区間の下で結果としては以上のように出力され、これはF値の有意確率が非常に低く、RCが年俸に無関係という帰無仮説は棄却できるかと思います。つまりこれは、RCが偶然ではなく、統計的に有意に年俸に影響を与えていることを示しています。また、具体的な回帰式は 、
$${Salary = 277.577 × RC + 1552.847}$$
という形になり、これはRCが1増加するごとに年俸が平均的に約278万円増加することを示しています(ただし、決定係数は0.312となっており、これは決して高い値とは言えません)。
また、95%信頼区間で見ると、RCの係数(277.5772)は199.416から355.739の範囲にあり、RCのt値が7.041、p値が0.000と有意な水準であることから、RCが年俸に大きく影響を与えていることが確認できます。
一方で、定数項(1552.8467万円)には大きな誤差があり、推定の信頼性は低いと考えられます。また、この値の95%信頼区間は、-1354.136万円から4459.830万円まで広がっており、不確実性が伴っていることも確認できます。
これらの結果は、最低保証年俸の存在や年俸に影響を与える他の要因(年齢、ポジション、チーム内の役割、人気など?)がモデルに含まれていないためと考えられますが、とはいいつつ、ここではこの詳細な結果はそこまで重要ではなく、RCと年俸にはある程度の関係性があることが確認でき、大まかなイメージをつかむことができました。

3.3 対象選手の絞り込み

さて、このように全体の様子を大まかに把握したところで、今回の目的である「低年俸で高いパフォーマンスを発揮した選手を特定すること」に戻ります。これまでの散布図から、条件に合致する選手は右下の領域にプロットされると考えられます。そこでまずは高年俸の選手を除外し、年俸に閾値を設けて条件に適合する選手を抽出し、再度可視化を行います。

具体的には、先ほどの単回帰分析から得られた回帰式を選手のパフォーマンスに対する平均的な年俸の指標として考えます。散布図上でこの直線の下側に位置するデータ、つまり、
$${Salary < 277.577 × RC + 1552.847}$$
を第1の閾値とし、これ満たす選手に注目することで、平均的な年俸に対して高いパフォーマンスを発揮した選手を特定することが可能となります。

また、年俸自体にも上限を設けるため、2024年の外国人選手などを除く会員支配下選手716人の平均年俸である4713万円を参考にし、第2の閾値として、$${Salary<5000}$$
を設定しました。つまり年俸5000万円未満の選手を対象とすることにより、すでに実績が評価され年俸が高い選手を分析対象から除くことができます。(参考として2024年の年俸中央値は1800万円であり、これに基づいた閾値2000万円での結果も最後に示します。)

以上まとめると、
$${Salary < 277.577 × RC + 1552.847}$$・・・①
かつ
$${Salary<5000}$$・・・②
を満たす選手を絞り込みます。

3.4 低年俸高パフォーマンス選手の特定

以上の条件に従って可視化した結果の散布図を以下に示します。
(なお、後付け的にはなってしまいますが、以下で言及する年俸5000万年未満の選手ほとんどは$${Salary < 277.577 × RC + 1552.847}$$①の条件を満たしていました。①の条件を含めてに散布図に可視化すると非常に見づらくなってしまうことを確認したため、以下では①の条件は可視化せず、この条件を満たさない選手については個別に言及することとします。)

前述の通り、横軸に成績、縦軸に年俸を設定しているため、今回の目的である低年俸で高いパフォーマンスを発揮した選手は散布図の右下に分布することになり、これは先ほどの全選手における散布図の右下部分を拡大した図に相当します。
ここでこの散布図に基づき、単位年俸あたりのRC(RC/salary)も算出して付け加えたうえで、RCの上位10名をまとめた表を以下に示します。

RC上位10名(salary<5000)
RCでは上位10名に入らなかったものの、RC/salary上位10名に入る2名

以上の選手は年俸5000万円以下で好成績を残した選手と言い換えて問題ないかと思います。トップ3には、D細川選手S長岡選手T森下選手がランクインしており、今シーズンの各チームを強力に牽引した若手選手が名を連ねていることが確認できます。以上の選手は打席数も多く、年間を通じて安定した活躍を見せており、侍ジャパンを担う(すでに担っている)未来の日本球界を代表する人材かと思います。まだ入団(移籍)から数年ということもあって、彼らの実力に対して年俸の上がり幅が追い付いていない、そのような段階と言えるのではないでしょうか。
4位には、打席数がトップ3の選手らよりも100打席以上少ない中で57のRCを記録したD福永選手がランクインしており、効果的かつ効率的な活躍をしたことが分かります。
5位から10位に関しては、C矢野選手B山本選手B梶原選手S西川選手D村松選手T前川選手が名を連ねており、いずれもRCが40台で年俸に対して好成績を残しています。その中でも、打席数が比較的少ないB梶原選手、S西川選手、T前川選手は、与えられた出場機会の中で効果的に得点を創出する能力を特に発揮したと言えるかと思います。また、特筆すべき点として、B梶原選手とT前川選手の単位年俸あたりのRCが非常に高い点が挙げられます。これは、彼らが前年の評価を大きく上回るパフォーマンスを見せたと解釈でき、まさにチャンスを掴んだ選手と言えるのではないでしょうか。元々の年俸が低いことも影響して単位年俸あたりのRCが高くなっているため、これからの契約更新や評価が楽しみです。

なお、以上の10名のうち、S長岡選手とT森下選手を除く8名は単位年俸あたりのRCでも上位10名にランクインしており、この観点からも特にコストパフォーマンスに優れた活躍を遂げたと評価できます。RCでは上位10名に入らなかったものの、単位年俸あたりのRCではD田中選手S岩田選手も上位10名にランクインしており、B梶原選手とT前川選手同様にこれからの契約更新や評価が楽しみな選手です。

RC27上位10名(salary<5000)
RC27では上位10名に入らなかったものの、RC27/salary上位10名に入る7名

次に、RC27についても同様に評価を行ったところ、以上の表のようになりました。この表より、RCの上位10名のうち8名がRC27でも上位10位までにランクインしていることが確認でき、これは、先に挙げたRC上位選手の多くが打席数の影響を除いたRC27ベースでも高い得点創出能力を持ち、チームの勝利に貢献していることを示していると解釈できます。
また、RC27上位10名にはRCで言及した選手に加えてD宇佐見選手T原口選手がランクインしていることも確認でき、特にT原口選手は打席数が少なく、彼の役割として代打や途中出場といった限られた機会の中で効果的な活躍を見せたと考えられます。(ただし後述しますが、T原口選手はRCベースでは成績に対しておおよそ平均的な年俸となっていたため、今回の分析の趣旨からは少し外れる選手かもしれません。以下T野口選手も同様です。)
さらに、単位年俸あたりのRC27の上位10名にはS赤羽選手C宇草選手T井上選手T野口選手C二俣選手もランクインしています。これらの選手は、ケガの影響やパフォーマンスの波、またチーム内での競争など、さまざまな要因が出場機会とその成績に影響を与えていると考えられますが、チームにとって重要な戦力となるポテンシャルを秘めていることは間違いないかと思います。出場機会が増えることでRCベースでもさらなる活躍が期待されることから、今後これらの選手がどのように成長し、チームに貢献していくのかが非常に楽しみです。

3.5 参考:年俸閾値2000万円未満の場合

最後に、参考情報として年俸中央値による閾値2000万円未満を基準とした際のRC、RC27、単位年俸あたりのRC、RC27の上位10名を以下の表に示します。

RC上位10名(salary<2000)
RCでは上位10名に入らなかったものの、RC/salary上位10名に入る2名
RC27上位10名(salary<2000)
RC27では上位10名に入らなかったものの、RC27/salary上位10名に入る5名

ここでは詳細な考察は行いませんが、これまでに取り上げた選手に加えて、B蝦名選手B度会選手、S丸山選手D板山選手Dブライト選手Gオコエ選手D川越選手G浅野選手がランクインしており、この中でも特に若手の選手はこれからの成長とチームへの貢献が大いに期待される選手かと思います。

一方で、前述したように、原口選手や野口選手、ブライト選手は、3.2節で算出した回帰直線(またはその95%信頼区間の領域)に近い分布を見せていることが下図より確認できます。これは(前述のように、今回の単回帰分析で得られたモデルは良質とは言えず、あくまでイメージや参考程度の値でしかありませんが、ある程度の傾向は捉えているという今回の前提の下では)、彼らの成績に対して年俸が比較的平均的であることを示しているとも受け取ることができます。これは、一定の活躍・成果を上げているものの、今回の「低年俸で高パフォーマンスの選手を特定する」という趣旨には若干そぐわないと言えるかもしれません(ただし、限られた機会での活躍は明らかで、RC27の値からもその貢献度は確認できます)。

4.まとめ

今回の分析では、低年俸で高パフォーマンスの活躍をした選手を見つけ出すことを目的としてきました。再掲となりますが、以下の表には、今シーズンの特にその代表的な選手たちを示しています。これらの選手は、限られた年俸に対して優秀な成績を残しており、チームの勝利に大きく貢献したことが今回の分析から結論付けられます。

RC上位10名(salary<5000)

思い返せば、元々この分析のきっかけとなったのは、西川遥輝選手の活躍を改めて評価することにありました。ここまでの散布図や表に基づいて活躍を確認しつつ、最後にまとめとして、今シーズンの西川選手がいかに年俸に対して優れた成績を残したのか、その点に焦点を当てて締めくくりたいと思います。

西川選手は今シーズン、RC40.96RC274.57と優秀な数値を記録しており、これは年俸5000万円未満の選手の中でそれぞれ8位7位、年俸2000万円未満の選手に絞った場合だとそれぞれ4位3位に相当します。さらにリーグ全体の選手の中でもRCは28位、RC27は20位と、西川選手がリーグ全体で見ても高いパフォーマンスを発揮していることが確認できます。これは、彼が今シーズンのセ・リーグを代表するコストパフォーマンスに優れた選手であったことを示しており、間違いなくその活躍は高く評価されるべきと結論付けます。
西川選手が年俸1600万円という破格の低コストでこのようなパフォーマンスを発揮してくれたことは、チームにとって非常に大きなメリットであり、まさに「お買い得」な選手だったと言えます。彼ほどの実績を残す選手が新天地で低年俸でこのような活躍を見せてくれたことは、球団にとってもファンにとっても感謝すべき結果だと思います。
また、今回の分析結果として取り上げた他の選手が主に若手である中、西川選手は32歳という一段上の経験を持つ選手である点も特筆すべき点かと感じます。一度は戦力外通告を受けたものの、その後の新天地で再起を果たし、これまでのキャリアで培った経験を活かしつつ再びトップレベルのパフォーマンスを発揮していることはファンとして非常に嬉しいものです。プロ野球選手としてまだまだこれからも輝ける年齢であり、今後ますます活躍してくれることを願っていますし、このような経験豊富な西川選手がチームに残り続けることで、若手育成の面でも重要な役割を果たすと考えています。彼の豊富な知識、経験は、これからの若手選手たちにとって非常に貴重なものとなり、チーム全体の成長に大いに寄与することと思います。

今後も西川選手がスワローズで末永く活躍し続け、さらなる飛躍を遂げる姿を楽しみにしています。

参考文献

西川遥輝の年俸推移・生涯年俸.球歴.com.
https://www.kyureki.com/keiyaku/p1032/
西川 遥輝(東京ヤクルトスワローズ).個人年度別成績.日本野球機構.
https://npb.jp/bis/players/21225133.html
RC(Runs Created).Glossary.1.02.
https://1point02.jp/op/gnav/glossary/gls_explanation.aspx?ecd=204&eid=20044
プロ野球選手会が12球団年俸ランキング発表 トップはソフトバンクの6806万円で巨人は2位の6243万円.スポーツ報知.
https://hochi.news/articles/20240502-OHT1T51079.html?page=1
年俸調査結果を発表しました.日本プロ野球選手会.
https://jpbpa.net/2024/05/02/11675/

(全て最終閲覧2024/10/24)

いいなと思ったら応援しよう!