Lean Baseball

Engineering/Baseball/Python/Agile/SABR and more...

プロ野球全球団の得点源な選手(または足を引っ張ってる選手)を野球統計学とPythonで出してみた

f:id:shinyorke:20170507232950p:plain

※2017/5/9 リンク切れを修正

ビール🍻とハンバーガー🍔をたしなみながらブログ書いてました.*1

野球,楽しんでいますかー!?

アスレチックスが「定位置」に下がる中,日ハムが調子戻してきてようやっと野球を見る気になった私ですこんばんは.*2

今年度初の野球ネタです.

PyCon mini Kumamoto 2017のエントリーで紹介させてもらった野球ネタの応用として,

2017年プロ野球,全球団の得点源と足を引っ張ってる選手を可視化

できる何かを作ったので,私の考察とともにお見せしたいと思います.

  • 贔屓チームが強い(弱い)のはなぜ!?
  • 野球統計学なにそれ美味しいの?
  • Pythonでデータをいじりたいのだが!

を直感的に知りたい方はぜひ最後までお付き合いくださいませ.

なお,指標値は私(shinyorke)独自算出のモノであり,他のコピーではないです&他のシンクタンクやMediaで出ている数字とは異なるのでご了承ください.

Starting Member

要約すると…

  • 選手個人の得点能力はwRAA (Weighted Runs Above Average) で説明ができる
  • チームごとにグラフにすると得点傾向がつかめる
  • 角中,大谷翔平が抜けてるロッテと日ハムの現状は残当
  • 糸井が抜けたオリックスは別の得点源でうまい具合にやってる
  • 広島はやっぱり凄い
  • 阪神は福留がよくやっている(凄い)
  • ソフトバンク上林誠知は頑張ればギータになれる

wRAAについて

なるべく簡単に説明している…つもりですが,読むのが面倒だ!という方は,

  • wRAAが10以上:チームの重要な得点源!!!
  • wRAAがプラスの選手は立派なスタメン
  • wRAAがマイナスの選手は守備が下手なら誰かと取り替えるべき!!!(≒足を引っ張っている)

という点だけ覚えておいてくださいm(__)m

wRAAってなに?

ウィキペディア「wOBA (野球) - Wikipedia」の解説より引用.

wRAA (Weighted Runs Above Average) はwOBAを用いて打者の打撃貢献度を測る指標である。平均的な打者が同じ打席数立った場合に比べて増やした得点を示している。

ちょこっとだけ補足をすると,

  • 得点価値*3を元に算出した重み付き出塁率「wOBA (Weighted On-Base Average) 」を元に選手の打撃貢献度(≒得点力)を数値化したのがwRAA
  • プラス10以上で平均以上の強者
  • ゼロ-プラスはスタメンの価値あり
  • マイナスは何かしらの問題がある
  • 計算は若干面倒くさいが成績表から算出が可能

という結構便利かつ直感的に評価がし易い指標となります.

なお,注意しなければいけないポイントとして,

打撃・走塁の評価のみで出しているので,守備貢献は加味していない!

というところです.

なので,

守備が上手い人はwRAAがマイナスでもチームに貢献している可能性が高い

事を頭に入れておきましょう.

数字の読み方

2016年の代表選手は私が独自算出している結果にもとづいています.

評価 wRAA 2016年の選手(日本プロ野球)
素晴らしい 40以上 筒香嘉智,山田哲人,坂本勇人,鈴木誠也,柳田悠岐*4
非常に良い 20-39 丸佳浩,大谷翔平,角中勝也ほか*5
平均以上 10-19 ロペス,菊池涼介,陽岱鋼ほか*6
平均 0-9 松山竜平,ゴメス,大島洋平ほか
平均以下 -1〜-5 田中賢介,上林誠知ほか*7
悪い -6〜-19 清田育宏,松井稼頭央,中島卓也ほか*8
非常に悪い -20以下 小林誠司,中村悠平,炭谷銀仁朗

2016年の傾向だと,やはり「打てる捕手」人材不足問題で捕手の数字が全体的に悪いっぽいです.

もしかして今年のオチも(ry

データについて(前提条件とか)

どういう条件で出したか,を出さないと信憑性に欠けそうなので一応載せておきます.

  • 2017年5月6日時点で30打席以上出場している選手を対象
  • wOBAscaleは規定打席を「30(試合) * 3.1」と仮定した上で算出.約.330(wOBA平均よりやや高い)で収まりが良さそうなのでこの数字を採用.

wRAAランキング

お待たせしました,ランキングと各球団の傾向です!

手始めに,Top 10とWorst10から.

Top 10

まずは上位10傑から.

f:id:shinyorke:20170507224425p:plain

好調オリックスを支えるT-岡田が堂々の一位.

OPS*9やRC27*10でわかるとおり,主力打者らしいパフォーマンスを出しているのが伺えます.

二位の近藤健介もアベレージ(打率)の良さがそのままwRAAの高さに紐付いているっぽいです.

なのに何故日ハムは弱いのか…というのは後ほど触れます.

個人的には茂木英五郎がどこまで伸びるか気になります!

Worst 10

下位10人もみてみましょう.

f:id:shinyorke:20170507224535p:plain

なんと,最下位は侍ジャパン正捕手のあの方でした(震え声)

見た目の数字が低空飛行しているかつ,巨人でもスタメン出場している(≒成績が悪くても出場せざるをえない)が関係して数字が悪化しています.

まあ2016年も下の方だったので例年通りなのかもしれませんが…

個人的には(アイコンのユニフォーム的な意味で)大好きな中島卓也が今年はずっと低空飛行しているのが辛いです.

そりゃ鎌ヶ谷に戻されますよ…ええorz

全部見せます!12球団wRAAの傾向!

このブログのメインコンテンツです.

  • 誰がチームの得点源として貢献しているか
  • 誰が(攻撃力的な意味で)足を引っ張っているか

がひと目でわかるグラフを12球団分準備しました.

考察と共におたのしみください!

なおコンテンツの都合上,セパともに下位のチーム(5/7時点の順位表より)から紹介します.

パ・リーグ

ロッテ

f:id:shinyorke:20170507235213p:plain

大事な得点源の角中が故障離脱,デスパイネをソフトバンクにとられた結果,

  • 鈴木大地が唯一の得点源に
  • 他は…あっ(察し

という状況になっています.

打撃で期待されている(ハズ)の井上や田村がどこまで伸びるかによって変わりそうですが,伊東監督が嘆いていたとおり,デスパイネの代わりの攻撃力を得る必要がありそうです.

その答えがマニー・ラミレスかどうかは別として.*11

日本ハム

f:id:shinyorke:20170507235508p:plain

近藤健介がプロ野球全体二位のwRAAを叩き出している分を他の選手が帳消し…どころかマイナスにしちゃっています.

というのもありますが,

  • リーグトップクラスの得点力をもつ大谷翔平が離脱
  • レアードが冷温停止
  • 活躍が期待されていた岡大海が(ry

というあたりの影響が大きそうです.

特に大谷翔平は本当に痛い.

なお,中田翔さんは多分こんなもんだろうと思ってました(棒読み)*12

西武

f:id:shinyorke:20170508000016p:plain

今年は謎に投手陣が健闘している印象がありますが,グラフから見る限り例年通り秋山・浅村・おかわり君・メヒアがしっかり仕事をしている印象です.

(これは例年通りの傾向なのですが)ライトにスタメンクラスがいない,栗山と併用している田代などレフトが脚を引っ張っているのが若干もったいないです.

外野の両翼は基本的に得点を稼げるポジションなのでここでどれだけ踏ん張れるかが勝負かなと.

あと,守備で貢献している源田がwRAA0近くまで持ってこれるといいチームになりそうです.

オリックス

f:id:shinyorke:20170508000345p:plain

wRAAリーグ一位のT-岡田のみならず,小谷野&中島の復活,ロメロ大健闘で今のポジションをキープできている感があります.

あと,守備走塁職人の駿太が思ったよりマイナスが少ないのも◎

安達が大きく足を引っ張っているのが気になりますが,おそらく守備貢献と足すとトントンかと思うのであとは日本を代表する大砲となりえる逸材・吉田正尚の復活が待たれます.

吉田が復活したら一気に上まで行きそうな予感…

あと,このグラフだけ見ると糸井が抜けた穴はさほど影響ないように見えます.

ソフトバンク

f:id:shinyorke:20170508000710p:plain

プラスの面々は一人を除き順当です.

「一人を除き」は勿論この方,絶賛売り出し中の上林誠知で,ギータを超えるwRAA(5.4,ギータは5.0)を叩き出しています!

上林は三振が若干多いのが気になりますが,BABIP*13が思ったより低く,運ではなく実力で稼いでるっぽいので,

上林は四球が増えてきたら第二のギータになってもおかしくなさそうです!

楽天

f:id:shinyorke:20170508001114p:plain

茂木とペゲーロが素晴らしいですね.

ウィーラーとアマダーが作ってる借金を他の選手がいい感じに押さえています.

ショートという守備上の重責を担ってるポジションに居ながら得点源になってるのはメジャーのショートみたいで素晴らしいです.

守備指標も良好なのでコンバートは不要,このまま行くとホントに和製カルロス・コレアもしくはコーリー・シーガーまったなし!*14だと思いますが,裏を返すと茂木が抜けると結構ヤバい感じになるので,ぜひぜひ大切に起用してもらいたいですね.

セ・リーグ

中日

f:id:shinyorke:20170508001755p:plain

大島洋平の孤軍奮闘状態です.

というかオフェンスな選手の平田,ビシエド,ゲレーロ他の数字がアレで泣けます.

まだ開幕一ヶ月なので揺り戻しがあることを期待しましょう(小並感)

ヤクルト

f:id:shinyorke:20170508001916p:plain

キャッチャーの中村悠平がまさかの一位w

守備ポジションでこの数字は立派の一言です,ホントに素晴らしい!

山田哲人大統領は多分この後温まってくると思うので今月の動向に期待したいです.

DeNA

f:id:shinyorke:20170508002110p:plain

チーム全体数字が低い感じですが,その中でも筒香がTopに.

石川の頑張りもありますが,この数字を見るとチームの得点的な欠点が二遊間にあるなあというのがよくわかります.

巨人

f:id:shinyorke:20170508002259p:plain

坂本勇人すごい.坂本勇人is神.

マギーも日本球界復帰後しっかりチームに貢献している感があります.

阿部慎之助はこれから温まると思いますが,日替わりになってる一番に外野の全ポジション,去年好調だった村田修一がアレ?ってなってるのがどうなるかが見ものですね.

個人的には長野と中井もっと頑張れよといいたい.

なお侍ジャパン正捕手は…先程触れたとおりです(察し

広島

f:id:shinyorke:20170508002536p:plain

「日本一過小評価されているセンター」かもしれない丸の頑張りが良いですねー.

守備貢献含めるともっと評価されていい,何故侍ジャパンに選ばれなかったのか謎です.*15

以外にもチームで足を引っ張ってるのが菊池涼介ですね.

ただ先程触れたとおり,wRAAで守備は評価できないため,実際は守備分含めるとプラスかと思います.

そりゃ今年も強いわけだ.

阪神

f:id:shinyorke:20170508002809p:plain

真打ちはそんな広島を9点差大逆転勝利でひっくり返したタイガース.

糸井の加入は得点源という意味で大きなプラスだったようです!*16

福留孝介が相変わらず好調,上本もよく頑張っているなど,元々守り要素が強いタイガースに攻撃のアクセントがいい感じに入ってるのがこのグラフで読み取れます.

高山・原口・北條はこの位置で収まる選手ではないと思うので,この辺の数字が上がるとタイガースファンはいい夢見ていいんじゃないかと思います.

鳥谷さんはオフェンスも去ることながら守備が(ryなので,使い方に迷う日々が続きそうです.

まとめ

  • wRAAをグラフにしてチームごとに並べると得点傾向がわかる
  • 強みと弱みをまとめて可視化すると,チームの強み・弱みがひと目でわかる
  • この手の分析と可視化はやっぱPython便利

wRAA…というより得点価値という考え方自体が野球の得点と勝利の考え方にピッタリ合っており,これを出して可視化するだけでいろんな考察が出来ることがわかりました.

ぶっちゃけ最近野球をしっかり追えていないのですが,wRAAを追いかけるだけで現在順位とその理由がふんわり見える,というのは面白いと思いました.

最後のPythonの件はこの後のコードスニペットをご覧いただければわかると思います.

大したコード書いてません(pandasとmatplotlibを使えたら誰でも出来る).

苦戦したのはwRAAとwOBAの計算ですね…結果が合うまで大変でした.

そんな楽しい野球統計学ですが,この手の数字を毎日出せるように現在分析基盤を開発してます(余暇の時間を使って).

成果はきっとPyCon JP 2017で出せると思うので「面白い!」と思った方は是非シェアとかいいねしてくれると嬉しいですm( )m

pycon.jp

最後までお付き合いいただきありがとうございました!

【オマケ】Pythonで可視化した時に使ったコード

データの取得については察してください(秘密で)

ここにはありませんがScrapy*17でスクレイピングしてMySQLに保存しています.

概念的なコードになることをご了承ください.

なお,使ったライブラリは

となります.

日本プロ野球wOBA&wRAA算出サンプル&ランキング

【補足】参考資料

真似するのにはちょっとむずかしいかもですが,一応載せておきます.*23

ブログなど

今回はこちらのネタを元に作成しました(手前味噌)

speakerdeck.com

また,ウィキペディアも結構参考にしています.

wOBA (野球) - Wikipedia

Linear Weights(各種プレーを得点単位で評価する手法)

書籍

過去エントリーにも上げている書籍ですが改めて紹介.

勝てる野球の統計学――セイバーメトリクス (岩波科学ライブラリー)

勝てる野球の統計学――セイバーメトリクス (岩波科学ライブラリー)

プロ野球を統計学と客観分析で考えるセイバーメトリクス・リポート5

プロ野球を統計学と客観分析で考えるセイバーメトリクス・リポート5

  • 作者: 岡田友輔,道作,三宅博人,蛭川皓平,高多薪吾,Student,水島仁,神事努,森下義隆,神原謙悟,竹下弘道,市川博久,大南淳
  • 出版社/メーカー: 水曜社
  • 発売日: 2016/05/25
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログ (1件) を見る

*1: こちらで味わってました(手前味噌)→ ヴィレッジヴァンガード ダイナー 荻窪 (Village Vanguard DINER) (荻窪/ハンバーガー) - Retty

*2:4Aみたいなアスレチックスさんだから残当.日ハムは流石に巻き戻すと思ってました(今日5/7は負けましたが)

*3:プレーの結果がどれだけ得点に対する価値を出したか?を算出&評価する考え方のこと.Linear Weights(各種プレーを得点単位で評価する手法)を元に,各シチュエーション(3アウト×ランナー状況8種類=24ケース)毎の「得点期待値」を算出,それぞれのシチュエーションから足し引きして得点価値を出す…と,言うことがリンク先のウィキペディアに書いてある内容の概要です(ちょっと難しいかも)

*4:この辺は流石としか言いようがないメンバー,説明不要

*5:規定打席未満でランク入りしたのは大谷翔平のみ.バケモノかっ

*6:守備貢献を加味すると菊池すごすぎ

*7:スタメンの田中賢介がこの位置にいるのはちょっと.なお守備を含めると選手としてはプラス評価

*8:この辺になると守備がうまく出来ないと速攻スタメン落ちorクビの危機

*9:On Base Plus Slugging.出塁率と長打率を足した値でこれでおおよその攻撃力が把握できる

*10:Run Create per 27 outs.得点を作る能力のこと.最近のセイバーメトリクスではあまり使われないが,得点構造を指し示している数式「(出塁能力+進塁能力)/出塁機会」がとても美しく,セイバーメトリクス上では基礎として抑えておきたい数字でもある.

*11:流石に無理やろw

*12:中田翔は日本の四番一塁としては珍しく、守備で価値を稼ぐタイプなのです.それがいいかどうかは別として(主力として恥ずかしくない成績ではある)

*13:インプレー打率.これの数字が高いと「運が強い」可能性があるので,高すぎる打者は要注意

*14:二人共メジャーを代表する攻守ともにイケてるショートです

*15:個人的にはアストロズのレフトより選ばれる権利あったと思う.

*16:ただし守備はひどいです,センターどころか外野をやらせちゃいけない,一塁にしましょうよ

*17:Webクローラー&スクレイパーをいい感じにつくるFramework.もちろんPython製

*18:ブラウザ上でコーディングしたりデータを可視化するためのライブラリ.PyDataやる人にとって必須の道具

*19:SQLの結果やファイルなど,あらゆるデータソースからデータセット(pandas的にはデータフレーム)を作ってデータの前処理をしたり可視化ができる神ライブラリ.スプレッドシートやExcelっぽい事をPythonのコードで出来ちゃう.Pythonを使う人の33.4%くらいはこれを使うために使ってるのでは説ある.

*20:グラフ描画ライブラリ

*21:これもグラフ描画ライブラリ.matplotlibのラッパー的に使う&デザインかっこよくなったりI/Fが洗練されたりとメリット多い

*22:O/Rマッパー.pandasでSQLを扱う時はSQLAlchemyのコネクションを食わせるのが定番の手段(その方がかなり楽)

*23:過去ネタと比べ,結構難易度高いと思います.