DB/R/統計/データサイエンス/投資話についてつらつらと

世のため自分のためのアウトプット

R 統計学(statistics)

【マネーボール】運の要素を無くした場合のNPBの最強打者を調査 〜パリーグ編〜【Rで分析】

更新日:

2018年シーズンも終わって一息ついたので、運の要素を排除した場合の最強打者とは、という内容について、統計学を基にして考えてみました。

遅ればせながらマネーボールを読んでいたこともあり、マネーボールを参考にしています。

調査にはR言語を使用していますが、R言語が分からない人でもサクッと読める内容にしています!

※以下で使用するデータはすべてプロ野球データFreak様からお借りしています。
プロ野球データFreak

スポンサーリンク

~目次~

0. マネーボールから学ぶ運の要素のない最強打者の定義

1. 結果!

2. 四球率

3. 三振率

4. 本塁打率

5. まとめ

6. おまけ ~Rでの得点シミュレーションについて~

0. 運の要素のない最強打者の定義(from マネーボール)

マネーボールを読むと以下の趣旨の記述があります。

  • 野球は点を取るゲームである。そのため、どれだけ得点に貢献したかが大事である。
  • 何より大事なのはアウトにならないこと、つまり出塁率である。
  • 打点は、前にどれぐらいの打者が出ているかに左右されるため、個人の打者の実力を反映した指標ではない
  • 打率(ヒット)は守備や飛ぶ位置によって左右されるため、打率だけに着目しても正しい指標は得られない。
  • 出塁率に大きく貢献するのは四球である。「四球を選ぶ能力」というのは明確に存在する(かつ、鍛え辛い)。
  • 三振は、ヒットになることがないため、普通のアウトより価値が低い。
  • 長打は価値がある。特に本塁打は運に左右されず、打者の実力を示す有益な指標である。

以上をもとにして、この記事では、以下の方針で最強の打者を決めることとします。

本記事での運によらない最強打者の定義

1. 打率(安打)は、運が強めに絡む指標であるため、(もちろん実力の部分も大いにありますが)、今回は使用しない。
2. 三振・四球・本塁打は、打者の実力を明確に示す指標のため、これらを使用する。
3. 上記の3つの指標を「得点力」に換算して最強の打者を決める。

その上で、取得できるデータなどの都合上、以下の条件をつけています。
・カウントするのは、2009年から2018年までの10年間のパリーグの打者成績
・各年において、規定打席の1/3以上の打席に立った選手を対象とする
・リーグ間の移籍をしている選手については、セリーグでの成績は考慮しない
・当該の10年間のうち、4年以上規定打席の1/3以上出場した選手を対象とする

1. 結果!

気の早い方のために、はじめに、結果だけ書いておきます。

選出された50名以上のトップバッターの中で、一位に輝いたのは、ロッテとソフトバンクで活躍のデスパイネ選手
僅差で西武のHR王であるおかわり君こと中村選手と、内川選手(SB時代のみ)が続きます。

ランキングは、”1試合得点”ということで、その選手が9人並んで9イニング戦った時に平均何点取れるか、で計算しています。
もちろん、先に書いたように、運のからむ打率や打点成績は無視しています。

デスパイネ選手と中村選手は、三振は多いものの、HR数と四球数の多さでこの結果につながりました。
3位の内川選手は、そこそこのHR数に、三振数の少なさですね。
他にも、例えば7位の中村(晃)選手はHR数こそ少ないものの、三振率の低さと四球率の高さが強く、この順位になりました。

> simu_points_lists_orderd[,1:2]
選手名 1試合得点
1 デスパイネ 8.407
2 中村 剛也 8.274
3 内川 聖一 8.267
4 柳田 悠岐 7.566
5 糸井 嘉男 7.491
6 浅村 栄斗 7.484
7 中村 晃 7.462
8 島内 宏明 7.426
9 中田 翔 7.369
10 近藤 健介 7.336

以下、参考に今回使用した四球率と三振率とHR率の順位データになります。
見にくいので、実数値は省略しますが、近藤選手と柳田選手は参考に以下になります。

これは、例えば近藤選手は100打席に平均13~4個の四球を選んでいる。柳田選手は、100打席あたり4本程度のHRを打っているということになります。

ーーーーーー四球率ー三振率ーHR率
1 近藤 健介 0.137  0.141   0.013
2 柳田 悠岐 0.124  0.218   0.042

下記では、例えば近藤選手は、四球率が1位なので、四球を選ぶ能力に非常に長けている(もしくは勝負を避けられている)が、三振率とHR率は中程度である、ということが分かります。
※ただし、中程度といっても、四年以上にわたって活躍しているトップクラスの選手の中で、なので上位クラスであるかとは思います。

> tmp[c(1,3,5,7)]
選手名 四球率順位 三振率順位 HR率順位
1 近藤 健介 1 21 29
2 柳田 悠岐 2 51 6
3 栗山 巧 3 25 31
4 サブロー 4 52 12
5 中村 剛也 5 57 1
6 中村 晃 6 6 35
7 糸井 嘉男 7 23 14
8 井口 資仁 8 43 13
9 西川 遥輝 9 42 33
10 嶋 基宏 10 38 52
11 デスパイネ 11 45 2
12 ペーニャ 12 56 7
13 角中 勝也 13 14 34
14 大引 啓次 14 34 44
15 清田 育宏 15 48 30
16 田中 賢介 16 7 51
17 里崎 智也 17 54 16
18 長谷川 勇也 18 36 25
19 福浦 和也 19 27 43
20 中島 裕之 20 30 10
21 岡島 豪郎 21 18 42
22 秋山 翔吾 22 26 19
23 メヒア 23 58 3
24 島内 宏明 24 10 18
25 中島 卓也 25 41 56
26 浅村 栄斗 26 28 9
27 坂口 智隆 27 12 50
28 中田 翔 28 39 5
29 銀次 29 2 46
30 鈴木 大地 30 13 39
31 根元 俊一 31 47 32
32 安達 了一 32 17 38
33 原 拓也 33 35 49
34 稲葉 篤紀 34 24 15
35 松井 稼頭央 35 31 20
36 渡辺 直人 36 11 57
37 本多 雄一 37 19 55
38 大野 奨太 38 33 28
39 金子 侑司 39 32 45
40 鉄平 40 15 36
41 聖澤 諒 41 44 47
42 T−岡田 42 50 8
43 松田 宣浩 43 46 4
44 陽 岱鋼 44 53 17
45 内川 聖一 45 3 11
46 明石 健志 46 37 54
47 荻野 貴司 47 5 37
48 今宮 健太 48 29 26
49 小谷野 栄一 49 22 27
50 駿太 50 40 40
51 伊藤 光 51 49 41
52 牧田 明久 52 9 22
53 岡田 幸文 53 8 58
54 藤田 一也 54 1 48
55 細川 亨 55 55 23
56 今江 敏晃 56 4 24
57 鶴岡 慎也 57 16 53
58 後藤 光尊 58 20 21

2. 四球率

まずは、四球率について解説していきます。

四球率は、以下の式で定義しています。

四球率 = 四球数 / 打席数
※"打数"ではなく"打席数"です

単純に、四球を選ぶ力ですね。

四球率は、強打者なら勝負を避けられて。。ということももちろんありますが、例えば3位の栗山選手や6位の中村(晃)選手は、いわゆる"強打者"とは少し違って、四球が多く、"四球を選ぶ力"があることが伺えます。

これが0.1を超えるということは、単純に打率よりも出塁率が少なくても1分以上高いことになります。

また、0.13を超える一位の近藤選手は7打席に1回は四球で出塁しており、最下位の後藤選手(0.035)と比べると30倍以上も違うことが分かります。
打率が30倍違うと当然話にならないレベルの差になりますが、四球率でそういった話にならないのは、四球率が軽視されている証拠かもしれません。

#四球率上位15名
> head(tmp[1:2], 15)
選手名 四球率
1 近藤 健介 0.137
2 柳田 悠岐 0.124
3 栗山 巧 0.121
4 サブロー 0.116
5 中村 剛也 0.116
6 中村 晃 0.115
7 糸井 嘉男 0.115
8 井口 資仁 0.112
9 西川 遥輝 0.112
10 嶋 基宏 0.111
11 デスパイネ 0.109
12 ペーニャ 0.101
13 角中 勝也 0.101
14 大引 啓次 0.098
15 清田 育宏 0.098

#四球率下位10名
> tail(tmp[1:2], 10)
選手名 四球率
49 小谷野 栄一 0.056
50 駿太 0.055
51 伊藤 光 0.054
52 牧田 明久 0.051
53 岡田 幸文 0.048
54 藤田 一也 0.044
55 細川 亨 0.044
56 今江 敏晃 0.043
57 鶴岡 慎也 0.040
58 後藤 光尊 0.035

3. 三振率

続いて、三振率についてです。

なぜ強打者の基準に三振率を採用しているかというと、とりあえずフェアグラウンドに飛ばせばヒットになるチャンスがあります。
しかし、三振ではヒットにするチャンスは無いため、通常のアウトよりも悪いものとなるためです。
(振り逃げはありますが、あれはエラーなので対象外とします)

三振率の定義は以下になります。

三振率 = 三振数/打席数

三振率を見てみると以下になります。
こちらも、四球率ほどではないですが、1位と最下位で約4倍もの開きがあります。

特徴として上位にロッテの選手と楽天の選手が非常に多いですね。
(楽天:1位・2位・9位・10位・11位・15位)
(ロッテ:4位・5位・8位・13位・14位)
もしかしたら強振よりもミートを重視するチームの方針があるのかもしれません。

#三振率上位10名
> head(tmp2,15)
選手名 三振率
1 藤田 一也 0.073
2 銀次 0.087
3 内川 聖一 0.088
4 今江 敏晃 0.094
5 荻野 貴司 0.097
6 中村 晃 0.099
7 田中 賢介 0.102
8 岡田 幸文 0.103
9 牧田 明久 0.109
10 島内 宏明 0.113
11 渡辺 直人 0.113
12 坂口 智隆 0.114
13 鈴木 大地 0.114
14 角中 勝也 0.124
15 鉄平 0.124
#三振率下位10名
> tail(tmp2,10)
選手名 三振率
49 伊藤 光 0.210
50 T−岡田 0.211
51 柳田 悠岐 0.218
52 サブロー 0.220
53 陽 岱鋼 0.222
54 里崎 智也 0.239
55 細川 亨 0.240
56 ペーニャ 0.258
57 中村 剛也 0.269
58 メヒア 0.283

4. 本塁打率

最後に本塁打率になります。
本塁打率が大事な理由として、フェアグラウンドに飛んだ場合はヒットかアウトかわかりません。
しかし、HRを打てば必ずHRとしてカウントされるため、選手の実力を運なく反映していると考えられるためです。

定義は以下になります。

本塁打率 = 本塁打/打席数

また、結果については以下となります。

#HR率上位15名
> head(tmp3,15)
選手名 HR率
1 中村 剛也 0.066
2 デスパイネ 0.056
3 メヒア 0.055
4 松田 宣浩 0.043
5 柳田 悠岐 0.042
6 中田 翔 0.042
7 ペーニャ 0.039
8 T−岡田 0.035
9 浅村 栄斗 0.031
10 サブロー 0.027
11 井口 資仁 0.027
12 中島 裕之 0.027
13 内川 聖一 0.027
14 糸井 嘉男 0.026
15 稲葉 篤紀 0.022
#本塁打率下位10名
> tail(tmp3,10)
49 聖澤 諒 0.006
50 藤田 一也 0.006
51 嶋 基宏 0.005
52 田中 賢介 0.005
53 鶴岡 慎也 0.005
54 明石 健志 0.003
55 本多 雄一 0.002
56 中島 卓也 0.001
57 渡辺 直人 0.000
58 岡田 幸文 0.000

こちらの上位には、錚々たる選手が並びますね。
上位3人のうち二人が、三振数で下位2名だったことから、三振数と何かしらの相関がありそうなのも伺えます。

試しに、分布図を見てみると以下になります。

全体的に右肩上がり(三振数が増えると、HR数も増える)であることが分かります。
実は相関係数自体は0.55とそれほど高くないのですが、HR数が多くなるにつれて、三振数も多くなっていることが分かります。

逆に、三振率が低い選手でHRの多い打者はいない(図の左上が空いている)ことから、HRを打つには三振を恐れてはいけないことが分かります。
これは、強振をしないとHRが打てない = 三振数も多くなる、ということでイメージの通りかとは思いますが、実際の数値でも示されました。

5. まとめ

如何でしたでしょうか。
四球と三振とHRで結論づけるのは、極論に近いことは承知していますが、これらの指標が運が絡まず実力をリアルに反映しているものとして意義があると考えています。

これは、なにも打率(ヒット)はすべて運だと言っている訳ではなく、どちらかというと、運が絡むため仕方なくデータから排除した上での検討となります。
実際、マネーボールではデータとしてバッターがフィールドのどこに飛ばしたかをデータとして取得し、それらを分析することでヒットを打つ力を測定することができるとしています。

皆さんも、自分の思う最強打者の定義に沿って、該当する選手を考えてみると楽しいかもしれません。

お読み頂きありがとうございました。

6. おまけ ~Rでの得点シミュレーションについて~

今回、得点シミュレーション(その打者が9人並んだ時、9イニングで何点取れるか)を行ったのですが、そのシミュレーションは以下のルールで実施しています。

・三振/四球/HRはそれぞれの打者の値をそのまま使用。
・ヒットを打つと、塁上のランナーは全て帰塁する。
・ダブルプレーやエラー盗塁などは考えない。
・余った割合"1-四球率-三振率-HR率"は、3分の1をヒットに、3分の2をアウトとして計算。
(単純に三振率によっては4割近くになるので、得点は多めに出ます)
例:近藤選手の場合
ーーーーーーー四球率ー三振率ーーHR率ー
1 近藤 健介 0.137  0.141   0.013
ーーーーーーーーーーーーーーーーーーー
1000打席打つと、
四球 :137打席
三振 :141打席
本塁打:13打席
ヒット:(1000-(137+141+13))/3 =約235打席
アウト:(1000-(137+141+13))/3 *2 =約470打席

また、参考までにRでのコードも掲載します。

#インデントが消えてしまい、見づらくてすみません。

simulate_game_point <- function(b4_rate, s3_rate, hr_rate, single_hit_rate=0, out_rate=0){
max_innings <- 9 #イニング数
repeats <- 1000 #シミュレーション回数
sum_score <- c() #各シミュレーション試合ごとの点数を格納for (rep in 1:repeats){
out_count <- 0 #アウトカウント
runnners <- 0 #ランナーの数
now_innings <- 1 #現在のイニング
score <- 0 #得点
batter_result <- "n" #打席結果を格納for (i in 1:max_innings){ #イニングのシミュレーションを9回
out_count = 0
while(out_count < 3){ #イニングのシミュレーション。3アウト取るまでは、while文で続ける
#打席結果を出力
judge_value <- (runif(1) * 1000) %% (b4_rate + s3_rate + hr_rate + single_hit_rate + out_rate)
if(judge_value < b4_rate){batter_result = "4b"}
if(b4_rate < judge_value & judge_value < b4_rate + s3_rate){batter_result = "3s"}
if((b4_rate + s3_rate) < judge_value & judge_value < b4_rate + s3_rate + hr_rate){batter_result = "HR"}
if(b4_rate + s3_rate + hr_rate < judge_value & judge_value < b4_rate + s3_rate + hr_rate + single_hit_rate){batter_result = "S_hit"}
if(b4_rate + s3_rate + hr_rate + single_hit_rate < judge_value & judge_value < b4_rate + s3_rate + hr_rate + single_hit_rate + out_rate){batter_result = "out"}#打席結果が四球の場合
if (batter_result == "4b"){
if(runnners == 3){
score <- score + 1
}else{
runnners <- runnners + 1
}
}#打席結果が三振の場合
if (batter_result == "3s" || batter_result == "out"){
out_count <- out_count+1
if(out_count == 3){runnners <- 0} #イニングが変わる際に、ランナーの数をリセット
}#打席結果がHRの場合
if (batter_result == "HR"){
score <- score + 1 + runnners
runnners <- 0
}#打席結果がヒットの場合
if (batter_result == "S_hit"){
if(runnners == 0){
runnners <- 1
}else{
score <- score + 1 } } if (score > 1000){ #極端に得点が大きくなった時対策
break
}
}
}
sum_score[rep] <- score #i回目のシミュレーション結果を格納
}
sum(sum_score)/repeats #平均得点を戻り値とする
}

-R, 統計学(statistics)

Copyright© 世のため自分のためのアウトプット , 2020 All Rights Reserved Powered by STINGER.