pandasでMLBの2001年から2010年のシーズンでもっともチームに貢献した打者を決める
こんにちは。
前回(↓)の続きです。 hoture6.hatenablog.com
得点期待値
前回の記事では、MLBの2001年 - 2010年のデータから、アウト数・ランナー状況別の得点期待値を求めました。得点期待値とは、「その状況であとどのくらい得点が入ることが期待できるか」を表す値です。結果のみ再掲します。
0アウト | 1アウト | 2アウト | |
---|---|---|---|
ランナーなし | 0.554 | 0.283 | 0.109 |
1塁 | 0.921 | 0.548 | 0.238 |
2塁 | 1.164 | 0.714 | 0.342 |
3塁 | 1.441 | 0.976 | 0.378 |
1塁・2塁 | 1.528 | 0.944 | 0.459 |
1塁・3塁 | 1.837 | 1.206 | 0.522 |
2塁・3塁 | 2.043 | 1.435 | 0.608 |
満塁 | 2.376 | 1.603 | 0.804 |
今回は、これらの値を使って、MLBの2001年 - 2010年のシーズンでチームにもっとも貢献した打者を決めたいと思います。 前回の記事でも述べましたが、打者としてチームに貢献する≒チームの得点に貢献するということなので、そういう感じでやっていきます。
プレイの価値
ある選手Aが満塁ホームランを打ったとします。このプレイには何点の価値があるでしょうか?
普通に考えると、4点の価値がある気がしますね。なぜなら、満塁ホームランでは得点が4点得点が入りますし、野球において4点得点が入ったとき、4点得点が入っているからです。これで安心ですね。
ちょっと待っ太郎「ちょっと待った」
あれ、突然ですがここでちょっと待っ太郎さんがちょっと待ったと言っていますね。ここはちょっと待って、少し冷静に考え直してみましょう。
Aさんが満塁ホームランを打つ前、当たり前ですが満塁ですよね。ここでAさんが満塁ホームランを打つことによって4点入りますが、これによって塁上のランナーは一人もいなくなってしまいます。つまり、塁上の状況だけを見ると、「満塁→ランナーなし」と得点の可能性が著しく下がっていることがわかります。
野球のルールを無視して仮の話をしますが、もしAさんが満塁の状況でホームランを打つことで4点入り、また満塁のまま次の打者に移ることができればAさんの満塁ホームランには純粋に4点の価値がありそうな気がします。一方、現実にはAさんがホームランを打ったあとはランナーなしの状況になってしまいます。つまり、Aさんの満塁ホームランの得点価値は、4点よりも低いことになります(!)。
大丈夫でしょうか。それでは、どのようにして満塁ホームランの価値を決めれば良いか考えましょう。得点期待値の意味を思い出して、次の式を眺めてみてください。
(満塁ホームランの価値) = 4 + (ランナーなしでの得点期待値) - (満塁での得点期待値)
どう思いますか。これで、いい感じに満塁ホームランの価値が測れていそうな気がしませんか(しない場合は、そういう気がするまで式を眺めて続けているとそういう気がすると思います)。この式の第一項は実際にAさんが入れた得点、第二項と第三項はAさんがランナーの状況を変化させたことにより下げてしまった得点期待値を表しています。これらを足し合わせることにより、プレイの価値がうまく測れていることになります。
具体的に、アウトカウントごとの満塁ホームランの価値を、上の得点期待値の表から計算してみましょう。
- 0アウト: 4 + 0.554 - 2.376 = 2.178
- 1アウト: 4 + 0.283 - 1.603 = 2.680
- 2アウト: 4 + 0.109 - 0.804 = 3.305
なるほど〜。アウトカウントによって同じ満塁ホームランでも価値はけっこう違います。しかし、これらの値は割と直感に合っているのではないでしょうか。0アウトからの満塁ホームランはもちろん嬉しいですが、なんとなくもったいなかったり、ここはヒットで繋いでも良かったのに、という気がしませんか。一方、2アウトからの満塁ホームランはめちゃくちゃ嬉しいですよね。これらは、我々が(データなんて見なくても)なんとなく得点期待値の感覚を持っているからだと思います。
そろそろ満塁ホームランの話も飽きてきたので、話を一般化しましょう。プレイの価値は、以下の式で表されます。
(プレイの価値) = (プレイによって入った得点) + (プレイ後の得点期待値) - (プレイ前の得点期待値)
この式を、MLBの2001年 - 2010年のすべての打席について計算し、打者ごとにその和をとることで、どの打者が一番チームの得点に貢献したか、もっと言うとどの打者が一番いい打者かを決めたいと思います。
計算
pandasでretrosheetのデータを使って計算していきましょう。もしプログラミングの詳細に興味がある人がいれば、前回の記事のコードも参照してみてください。
結果
意外と大変だったので、途中で何回かやめようと思いましたがなんとかなりましたね。
以下、ランキングです。
通算
選手名 | 通算 | 平均 | 打席数 | |
---|---|---|---|---|
1 | Albert Pujols | 571.111 | 0.084 | 6782 |
2 | Barry Bonds | 513.812 | 0.148 | 3465 |
3 | Lance Berkman | 449.121 | 0.071 | 6313 |
4 | Alex Rodriguez | 426.698 | 0.064 | 6691 |
5 | Todd Helton | 415.242 | 0.067 | 6187 |
6 | Manny Ramirez | 413.561 | 0.073 | 5662 |
7 | Jim Thome | 354.302 | 0.066 | 5337 |
8 | Chipper Jones | 348.785 | 0.062 | 5582 |
9 | Bobby Abreu | 347.678 | 0.050 | 6919 |
10 | Jason Giambi | 324.220 | 0.066 | 4945 |
ということで、Albert Pujolsさんが一位になりました。安定して得点を生み出し続けているということですね。10年で571点ですから、1シーズンあたり57点になり、これはとてもすごいです。 2位以下にも好打者が続いていますね。
通算ワースト
選手名 | 通算 | 平均 | 打席数 | |
---|---|---|---|---|
1 | Cesar Izturis | -257.673 | -0.059 | 4331 |
2 | Brad Ausmus | -217.623 | -0.059 | 3692 |
3 | Neifi Perez | -168.160 | -0.056 | 2977 |
4 | Alex Gonzalez | -150.663 | -0.035 | 4320 |
5 | Royce Clayton | -148.448 | -0.044 | 3347 |
6 | David Eckstein | -139.788 | -0.025 | 5705 |
7 | Jack Wilson | -139.522 | -0.028 | 5030 |
8 | Pedro Feliz | -138.668 | -0.031 | 4537 |
9 | Orlando Cabrera | -132.659 | -0.020 | 6612 |
10 | Adam Everett | -130.816 | -0.044 | 3003 |
なるほど〜。ここに並んでいるのは打席に立つたびに得点期待値を下げる(チャンスをつぶしている)選手ですが、その打撃の弱点を補うだけの守備力を持っている可能性が高いということですから、必ずしも不名誉なことではありません。
平均(1000打席以上のみ)
選手名 | 通算 | 平均 | 打席数 | |
---|---|---|---|---|
1 | Barry Bonds | 513.812 | 0.148 | 3465 |
2 | Albert Pujols | 571.111 | 0.084 | 6782 |
3 | Larry Walker | 195.641 | 0.081 | 2401 |
4 | Joey Votto | 138.234 | 0.074 | 1870 |
5 | Manny Ramirez | 413.561 | 0.073 | 5662 |
6 | Lance Berkman | 449.121 | 0.071 | 6313 |
7 | Todd Helton | 415.242 | 0.067 | 6187 |
8 | Jim Thome | 354.302 | 0.066 | 5337 |
9 | Jason Giambi | 324.220 | 0.066 | 4945 |
10 | Alex Rodriguez | 426.698 | 0.064 | 6691 |
1000打席以上の選手の中から、一打席あたりの得点価値が高い選手10人です。とにかくBarry Bondsさんがすごすぎるということがわかりますね。
日本人選手
選手名 | 通算 | 一打席あたり | 打席数 |
---|---|---|---|
Hideki Matsui | 137.979 | 0.032 | 4378 |
Ichiro Suzuki | 79.284 | 0.011 | 7339 |
Kosuke Fukudome | 16.942 | 0.01 | 1622 |
Norihiro Nakamura | -7.66 | -0.187 | 41 |
So Taguchi | -11.885 | -0.008 | 1525 |
Tadahito Iguchi | -19.527 | -0.009 | 2079 |
Akinori Iwamura | -26.607 | -0.015 | 1755 |
Tsuyoshi Shinjo | -28.266 | -0.029 | 960 |
Kenji Johjima | -36.751 | -0.021 | 1722 |
Kazuo Matsui | -54.536 | -0.021 | 2555 |
参考までに、日本人選手だけを集めてみました。松井選手が一位で、全体から見てもかなり優秀な成績です。イチロー選手の得点価値が思ったより低くて悲しいですが、福留選手の価値がプラスだったりするあたり、やはり出塁率が大事ということなんですかね。
まとめ
得点期待値から、一つのプレイの価値を計算し、2001年 - 2010年の10年間でもっとも得点に貢献した打者(≒良い打者)のランキングを作りました。 通算ではPujols選手、一打席あたりではBonds選手が一位でした。
次回以降も、何かしらをやっていこうと思います(今回の結果をもう少しちゃんと考察するかも)。
以上、よろしくお願いします。