プロ野球

ゆうき( @BASEBALLY15 )です^^

今回は,『ベイズの定理』を使って,プロ野球の球団ごとの年俸について分析してみました.

ベイズの定理』を使って,何が出来るのですか・・・?

例えば,プロ野球選手のデータから傾向を掴むことが出来ます.

今回の分析では, 強いチームの年俸が,全チームに比べてどれくらいの割合を占めているのか,ということが分かりました.

(Udemy『実践Pythonデータサイエンス』を参考,Jupiter notebookを使用)

ベイズの定理とは?

ベイズの定理とは, ある事柄Aが起きた後に,事柄Bが起きる確率のことを言います.

ベイズの定理とは?

{\displaystyle P(B|A)={\frac {P(A|B)P(B)}{P(A)}}}

高校で習う『条件付き確率』と『乗法の定理』を組み合わせたものです.

以下に,今回使うデータと合わせて,より分かりやすく説明します.

学習内容-ベイズの定理-

使うデータ

今回は,こちらのサイトのデータを使います.

以下に,csvファイルにまとめたものを載せておきます.

今回の検証は,

『プロ野球のセ・リーグの中で,年俸が1億円の選手が, Yomiuri Giants というチームに所属している確率』

というテーマで行います.

プロ野球の球団ごとの年俸

上で紹介したベイズの定理の『事柄A』が『 年俸が1億円の選手 』を指し,『事柄B』が『 Yomiuri Giants というチームに所属している 』を指します.

それでは,ベイズの定理を使って,分析を行っていきましょう^^

流れ

以下の手順で分析を行います.

  • 選手がYomiuri Giantsというチームに所属している確率Pxを求める
  • Yomiuri Giants というチームの中で,年俸が1億円以上ある選手の確率Pxyを求める
  • 全体で年俸が1億円以上ある選手の確率Pyを求める

ライブラリ

import numpy as np
import pandas as pd
from pandas import Series, DataFrame
import seaborn as sns
sns.set_style("whitegrid")
import matplotlib.pyplot as plt
%matplotlib inline

コード

まず,csvファイルを読み込みます.

#ファイル名を定義
filename = "anual_salary.csv"
#ファイルの読み込み
salary_data = pd.read_csv(filename)

読み込んだcsvファイルを表示してみましょう^^

#実行
salary_data

すると,このように,球団名と選手名と年俸が表示されます.

teamplayer’s nameannual salary(yen)
0Yomiuri Giants菅野 智之650000000
1Yomiuri Giants坂本 勇人500000000
2Yomiuri Giants丸 佳浩450000000
3Yomiuri Giantsゲレーロ400000000
4Yomiuri Giantsマシソン355000000
451Yakult Swallows田川 賢吾5000000
452Yakult Swallows鈴木 裕太4800000
453Yakult Swallowsジュリアス4000000
454Yakult Swallows内山 太嗣2800000
455Yakult Swallows松本 友2800000

次に,確率を求めるために,

説明変数Xと目的変数Yを定義したいと思います.

#説明変数Xを定義(チーム名)
X = salary_data["team"]
#目的変数Yを定義(年俸)
Y = salary_data["annual salary(yen)"]

ちなみに,以下のコードを記述すると,全データ数を確認することが出来ます.

#実行
len(X)

456

今回使うcsvファイルには,6球団456人のデータが入っていることが分かりました.

選手が Yomiuri Giants というチームに所属している確率Pxを求める

まず,上のデータフレームから,” Yomiuri Giants “のデータのみを取り出します.

#giantsを定義
giants = salary_data[salary_data["team"]=="Yomiuri Giants"]
#giantsのデータ数を表示
len(giants)

90

そして,選手がYomiuri Giantsというチームに所属している確率Pxを求めます.

Px = len(giants)/len(X)
#実行
Px

0.19736842105263158

Pxは,約20%ということが分かりました.

Yomiuri Giants というチームの中で,年俸が1億円以上ある選手の確率Pxyを求める

全データからYomiuri Giantsだけを取り出したものを表示させたいと思います.

#Yomiuri Giantsのデータフレームを表示
giants
teamplayer’s nameannual salary(yen)
0Yomiuri Giants菅野 智之650000000
1Yomiuri Giants坂本 勇人500000000
2Yomiuri Giants丸 佳浩450000000
3Yomiuri Giantsゲレーロ400000000
4Yomiuri Giantsマシソン355000000
85Yomiuri Giants沼田 翔平2400000
86Yomiuri Giants黒田 響生2400000
87Yomiuri Giants平井 快青2400000
88Yomiuri Giantsモタ2300000
89Yomiuri Giantsラモス2260000

このデータフレームから,1億円以上の選手を取り出したいと思います.

giants_over1を定義
giants_over1 = giants[giants["annual salary(yen)"] >= 100000000]
#実行
giants_over1

このように,年俸が1億円以上の選手のみを取り出すことが出来ました.

teamplayer’s nameannual salary(yen)
0Yomiuri Giants菅野 智之650000000
1Yomiuri Giants坂本 勇人500000000
2Yomiuri Giants丸 佳浩450000000
3Yomiuri Giantsゲレーロ400000000
4Yomiuri Giantsマシソン355000000
5Yomiuri Giants陽 岱鋼300000000
6Yomiuri Giants山口 俊230000000
7Yomiuri Giantsビヤヌエバ225000000
8Yomiuri Giants阿部 慎之助160000000
9Yomiuri Giants野上 亮磨150000000
10Yomiuri Giants中島 宏之150000000
11Yomiuri Giants炭谷 銀仁朗150000000
12Yomiuri Giantsクック140000000
13Yomiuri Giants澤村 拓一121500000
14Yomiuri Giantsヤングマン114000000

そして,Yomiuri Giants内の1億円以上の選手の数を Yomiuri Giants の選手の数で割ると,Pxyを求めることが出来ます.

#Pxyを定義
Pxy = len(giants_over1)/len(giants)
#実行
Pxy

0.16666666666666666

Pxyは約15%くらいということが分かりました.

全体で年俸が1億円以上ある選手の確率Pyを求める

最後に,Pyを求めたいと思います.

まずは,全データから,年俸が1億円以上の選手を抽出したいと思います.

#全データから,年俸1億円以上の選手を抽出
all_over1 = salary_data[salary_data["annual salary(yen)"] >= 100000000]
#実行
all_over1

データフレームが長くなるので,表示結果は割愛させていただきます.

そして, Py を求めます.

#年俸1億円以上の選手を抽出する確率Pyを求める
Py = len(all_over1)/len(salary_data)
#実行
Py

0.1206140350877193

なんと,年俸が1億円以上の選手が Yomiuri Giants に約12%存在することが分かりました.

6球団中の12%なので,他の球団に比べて,多いのではないでしょうか?

終わりに

今回は,ベイズの定理を使って,プロ野球の球団の年俸について分析してみました.

今後は,今まで以上に,統計の知識も交えながらブログを投稿していきます^^

それでは・・・

Q &A

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA