乙Py先生のプログラミング教室
初学者のためのプログラミング学習サイト

統計学

今回はセイバーメトリクスについて
少し調べてみました。


解説動画はこちら



さて
今回はセイバーメトリクスについてです
知らない方もいるかもしれないので
簡単な説明ですが

セイバーメトリクスとは
野球においてデータを
統計学的見地から客観的に分析し
選手の評価や戦略を考える
分析手法のことです。

ざっくり考えると
勝つためにデータ分析しましょう
ってことですね。

なので、今回は
勝利に貢献する指標を
見つけてみようと思います。

まず、データに関しては
こちらのサイトのデータを参考にしています。

プロ野球データFreak



さて、チームの成績データを見てみましょう。

TSVやCSVに取得したデータを
まとめていれば、ファイルの読み込みが出来ます。

ファイルの読み込み
import pandas as pd
team_df = pd.read_table('baseball_all_team_stats2.tsv')
team_df.shape
(168, 51)



今回使用するのは、こんな感じのデータです。
スクリーンショット 2022-08-20 17.56.12

2009 - 2022年8月20日までのデータです。



さて次は、最近のリーグ成績を見てみましょう。

こんな感じのコードで時系列での
成績をまとめることが出来ます。

順位(Y軸)は反転させておくと
いい感じになります。

import matplotlib.pyplot as plt
import seaborn as sns

# セリーグ
se_league = team_df[team_df['リーグ']=='セリーグ']
g = sns.relplot(x='年度', y='順位', hue='チーム' , data=se_league, kind='line')
g.fig.axes[0].invert_yaxis()
g.fig.set_figwidth(12)
download

こちらはパリーグです
download-1

これで見ると、セリーグは順位変動が激しく
パリーグは特にソフトバンクが強いですね
ここ最近は5位以下になったことが無さそうです


次は勝率を見てみましょう。

2009 - 2022までの全試合での全チームの勝率
groupby  = team_df[['チーム','試合','勝利','敗北']].groupby('チーム').sum()
groupby['勝率']  = groupby['勝利'] / groupby['試合']
groupby.sort_values('勝率',ascending=False)
スクリーンショット 2022-08-20 17.57.07

パリーグはソフトバンク
セリーグは巨人
の勝率が良いですね

とはいえ、べらぼうに差があるわけでは
無いようです。


次はこの勝利数に貢献する指標を見てみましょう。


勝利数に貢献しそうな指標は何か?
target_kpi = ['得点', '平均得点', '失点', '平均失点', '打率', '本塁打','防御率', '安打', '出塁率', '長打率', 'OPS']

for kpi in target_kpi:
    tmp_df = team_df[['チーム','勝利'] + [kpi]]
    print(kpi , '相関係数 : ' , tmp_df.corr().iloc[1,0])
    g=sns.jointplot(x='勝利', y=kpi, data=tmp_df,kind='reg')
    g.fig.set_figwidth(3)
    g.fig.set_figheight(3)
    plt.show()
スクリーンショット 2022-08-20 17.57.24

# 相関係数のみ計算する
corrs = {}
for kpi in target_kpi:
    tmp_df = team_df[['チーム','勝利'] + [kpi]]
    corrs[kpi] = tmp_df.corr().iloc[1,0]

for k,v in sorted(corrs.items() , reverse=True , key=lambda x:x[1]):
        print(k,v)
得点 0.6752214591815026
安打 0.6266412461266061
打率 0.5737515556643754
OPS 0.5707190644752489
出塁率 0.5601397549262012
平均得点 0.5484023969333554
長打率 0.5206867389057273
本塁打 0.4614069008549154
失点 -0.03810712231263921
平均失点 -0.28881452409175656
防御率 -0.30572213281469424



勝利数に貢献しそうな指標としては
得点が一番関係性が高そうです。

野球のルールの性質上
相手チームよりもたくさん点を取った方が勝つので
得点数は勝利に貢献するのは当たり前でしょうね。


次はこの得点に貢献する指標を見てみましょう。

得点に貢献しそうな指標は?
target_kpi = ['打率', '本塁打', '安打', '出塁率', '長打率', 'OPS']

corrs = {}
for kpi in target_kpi:
    tmp_df = team_df[['チーム','得点'] + [kpi]]
    corrs[kpi] = tmp_df.corr().iloc[1,0]

for k,v in sorted(corrs.items() , reverse=True , key=lambda x:x[1]):
        print(k,v)
OPS 0.8708254335866881
長打率 0.8159000896409998
安打 0.8097657028521518
出塁率 0.8054269840935689
本塁打 0.7637663066912697
打率 0.7457514146368397


平均得点だと
OPS 0.9567899908827453
長打率 0.9145865090996436
出塁率 0.8454041544924719
本塁打 0.7794856511615135
打率 0.7363115009552308
安打 0.5156269035543274


OPSは
得点数だと0.870
平均得点だと0.956
という高い相関係数になります。


OPSはOn-base plus sluggingの略で
野球において打者を評価する指標の1つで
出塁率と長打率を足し合わせた値になります。


こういった指標を一つ一つ検証し
どんな指標が貢献するのかを探るのも
セイバーメトリクスの醍醐味かと思います。


今回は勝利数に関しては得点

得点に関してはOPSが
高い貢献度があることが分かりました。

次回はこの、OPS周りを
詳しく深掘りしていきたいと思います。

今回はここまでです
それでは。


 

今回は2021年までに読んだ
プログラミング関連の本の中で
良かったオススメ本を紹介します。

解説動画はこちら


2021年はアプリで本を管理するようにしました。

今までに読んだ本の中で
良かったものをテーマ別でお送りします。


本を整理するためのアプリは
「ブクログ」
というのを使っています。

本を買ったらこれにバーコードで
登録しています。

その中でカテゴリに分けて管理しているので
テーマ別で4冊ご紹介します。


1.プログラミング

222

プログラミング関連は40冊くらい持っていました。
この中でのオススメは・・・

「アルゴリズム×数学」が基礎からしっかり身につく本
toppage-001

こちらはアルゴリズムが図解で
しっかりと解説されているにもかかわらず
C,C++,Java.Pythonでのコードもgithubに載っており
問題集が200問もついているという
いたれりつくせりな本です。

これから競技プログラミングなどを
学んでいきたいという方には
かなりオススメできる本だと思います。

にしても良くこのクオリティの内容を
まとめ上げたなーという印象で
驚愕しています。

筆者の能力の高さに脱帽の一作です。


2.データサイエンス
スクリーンショット 2022-01-08 15.01.59

データサイエンス関連は20札ほど持っていますが
この中でのオススメは・・・


Kaggleで勝つデータ分析の技術
TH320_9784297108434

2019年発行なので2年ほど前の本ですが
・Kaggleに挑戦したい
・機械学習系のコードを書きたい
・機械学習のテクニックを学びたい
というのにはぴったりの本です。

仕事で使うので多読していました。
おそらくKaggle本の走りで一番最初に
出たんじゃ無いかと思いますが
やはりこれが一番良いなーという印象です。

データサイエンス関連のコードを書く
仕事につきたい方は
これを一冊持っておいても損しないでしょう。


3.統計本
スクリーンショット 2022-01-08 15.53.39

統計学関連の本も
まあまあ持っていますね。

その中でもオススメは・・・

統計学の図鑑

TH320_9784774173313


統計学の本はとにかく分かりづらいのが多いのですが
これは図解が非常に分かりやすくて
概念を理解しやすいと思います。

数式なども載っているのに
分かりやすい本ということで
これから統計学を学ばれる方は
最初に概念を理解するのに役立つと思います。




4.数学
スクリーンショット 2022-01-08 15.02.56

最後に数学関連の本ですが
20冊くらいは持っているようですね。

その中でもオススメは・・・

億万長者だけが知っている教養としての数学
9784478104552

こちらは同名タイトルで他にも出てるみたいでなんで
間違えないようにして下さい。

数学でどうお金を稼げるかについてを
語っている本になっています。

ギャンブルや投資、数学的思考について
かなり詳しく書かれていますが
かなり難しい!!!!

全然理解が追いつかないんですが
自分はこれを読んで
億万長者になったろーって思ってます。

ということで
今回はプログラミングに関わる
おすすめ本をテーマ別で4つ
ご紹介させていただきました。

良ければ
本屋さんで手に取って見てみて下さいね。

それでは。
 

このページのトップヘ