Lean Baseball

No Engineering, No Baseball.

打者の成績を数字で理解する三つの視点 - データサイエンスから学ぶセイバーメトリクス

私達が大好きなプロ野球, どうやら開幕の目処が立ちそうです⚾

www.nikkansports.com

とはいえ(この記事を書いてる5/10時点では)正式発表ではないかつ, 仮に6/19開幕としてもあと一ヶ月と少し時間がありますね...ということでまだまだ #StayHome をやってく必要がありそうです.*1

このエントリーでは前回同様,

「野球データで遊ぶならずっと #StayHome なまま野球ができるじゃん⚾」

というお気持ちの元,

  • 野球の統計学である「セイバーメトリクス」を「データサイエンス」の文脈で解釈しつつ
  • データサイエンスで大事な「特徴量」の事を学びながら
  • 野球をデータという切り口で楽しもう

以上をテーマとして野球のデータ, 特に「セイバーメトリクス」「データサイエンス」の視点で面白さを紹介できたらと思います.

なお, 初回であった前回は「野球のための特徴量エンジニアリング」という話をしました.

shinyorke.hatenablog.com

今回のテーマは,

「打者の成績(打撃成績)を普通の指標・得点能力・LWTSと三つの視点でみてみよう」

です.

このエントリーのダイジェスト

  • 統計的(もしくは特徴量として)打者の成績を数字で解釈するなら, 「平均的な打者と比べてどれだけ貢献してるか」が見えるLWTSが最も筋が良いアプローチであると言えそう
  • 野球の得点構造を, 「(出塁能力 + 進塁能力) / 出塁機会」で表現した「得点能力(RC)」は統計的な野球の数字の読み方の原点
  • とはいえ目的とか好み, そして算出・評価の難易度もあるのでその時々の「程度」で読むのがベスト.

という話を,

  • 世界の野球史に刻まれる大バッターであるIchiro Suzuki氏の通算成績
  • 世界中でよく使われているデータ操作言語であるSQL
  • データ分析を手っ取り早くやる道具として愛用者が多い「BigQuery」「Data Portal(旧データスタジオ)*2

を活用して解説します.

f:id:shinyorke:20200510220825j:plain
本日の教材です

これが理解できたらゴールです.

スターティングメンバー

この連載の対象読者&前提条件

以下は前回と同じです.

  • 何かしらのデータサイエンス・データ分析を自分で考え手を動かしてやっている方. 仕事・学業・趣味問わず.
  • SpreadsheetやSQL, プログラミング言語(Python/Rなど)など何かしらの道具でデータを加工したり抽出できたりできる
  • 野球のルール・記録の意味を把握していること. レベル感的には野球に興味なくても夏の甲子園とか日本シリーズを楽しめればOK

プロ野球やメジャーリーグに対するマニアックな知識は必要ありません.*3

今回に限れば,

「Ichiro Suzukiという大打者を数字という視点で見たらどうなんだろう?」

野球に興味ない方も, この記事を読んでる間は野球の世界のスーパースターに対する興味と関心を持ってもらえればと.*4

打者の成績を数字で理解する三つの視点

ここで言う「打者の成績」は,

打率, 打点, ホームランetc... スコアブックとして成績に残ってるもの

を指します.

「球種」「打球の種別(フライ・ライナー・ゴロ)といった, 投球・打球の記録(Batted Ball)や, 「打球速度」「打球角度」といった, トラッキングデータは含みません.*5

  • 一般的によく知られている成績・指標
  • セイバーメトリクスの代表的な打者評価モデル「得点能力」
  • 得点を起点とし, 各イベント・プレーに対して加重(重み)をつけて評価する「LWTS」

この三つの視点でイチローさんを眺めます.

1. よく知られている成績から眺める

まずは頭の体操がてら, よく知られている

  • 打率(Batting Average)
  • 出塁率(On-Base Percentage)
  • 長打率(Slugging)
  • 本塁打数(Home Run)

から見てみましょう.

f:id:shinyorke:20200510221016p:plain
よく知られている成績から見るイチロー

MLBにおける通算打率.311, 通算出塁率.355. MLB屈指の一番バッターであることを証明するように, (スタメンで出続けていた)2012年までの成績は圧巻の一言です.

一方, 「快速を駆使して内野安打」「ホームランは狙って打つ」スタイルが影響しているのか, 長打率とホームランは控えめな数字です.

ただまあ, MLB通算3089安打(日本を含めると4367本*6), 殿堂入り待ったなしの大打者として十分すぎる成績です.

...という所までは, ウィキペディアを見れば秒でわかる話ではありますが,

圧倒的なヒットメーカーであり, 一番バッターであったイチローはどこまで得点に絡んでいたのか?

という事を理解したい!と思った場合, どうやらこの数字だけでは解釈できそうにありません.

セイバーメトリクスではこのクエスチョンの解き方として,

  • スコアブック上の成績を元に, 「得点能力」を算出し「得点量」として評価する
  • 「プレーから産まれるイベント・事象」を元に, 「得点増加に寄与したかどうか」を積み上げて評価する

という代表的な方法を取ることが多いです(っていうことをこの先の事例で紹介します).

2. 得点能力から眺める

セイバーメトリクスが生まれて間もないころに生まれた指標で, RC(Run Created)というものがあります.

RC (野球) - Wikipedia

考え方の基本は,

RC = (出塁能力 + 進塁能力) / 出塁機会

で, もうちょっと詳しく言うと,

「出塁した機会を分母として, どれだけ出塁(アウトにならず, 塁に出ること)と進塁(一つでも多くの塁に出ること)を決めたか?」

という「野球のスコアブックにある成績を出塁・進塁・出場機会に置き換えてやりました!」という特徴量の作り込みをしています.

なおRCは得点能力という「量」で示します.

RC = (((A + 2.4C) * (B + 3C)) / 9C) - 0.9 * C

※変数A, B, Cは以下の通り

A = 安打 + 四死球 - 盗塁死 - 併殺

B = 塁打 + (0.26 * 四死球) + 0.53 * (犠打 + 犠飛) + 0.64 * 盗塁 - 0.03 * 三振

C = 打数 + 四死球 + 犠打 + 犠飛

  • RCそのものは, 得点に例えている. チーム全員のRCを合計するとチーム総得点に近くなるように調整されている.
  • ただ, RCそのものは出場数が増えると数字も増える*7ので純粋な得点能力は一試合(3アウト×9回 = 27アウト)あたりの数字に均した「RC27」を用いる.

ちなみにRC27の数式はこちらです.

RC27 = (27 * RC) / (打数 - 安打 + 犠打 + 犠飛 + 盗塁死 + 併殺)

そんなRC27と, 同じくセイバーメトリクスが生まれて間もない頃の指標(かつだいぶ一般化した)OPS(On-Base Plus Slugging, 出塁率に長打率を足したもの)でイチローを見るとこんな感じです.

f:id:shinyorke:20200510221151p:plain
OPSとRC(Run Created)から見るイチロー

引退前の2018, 2019がマイナスなのは式の構成上しょうがない感あります.*8

OPSとRC27の推移, ほとんど変わらないのことに皆さんお気づきでしょうか?

これには理由(と同時にRC/RC27を使う際の欠点)があって,

  • すごく雑に言うと, RCもOPSも結局のところ「出場機会に対して, 塁打をどれだけ稼いだか?」という構図である.
  • それぞれを説明すると,
    • OPSは, 長打率が「塁打 / 打数」で表現, 数字の比率的に長打率の方が強めに効くので塁打数の影響を受けやすい.*9
    • RCは, 「進塁能力(数式の変数B)の塁打が大きい比重を占めている(四死球などと異なり減じられていない)

「複雑なRCを計算しなくても, OPSで説明できちゃうじゃん」と言われるとぐうの音も出ません.

また, OPSもRCも「どんな場面で点を上げた(もしくはアウトになった)」など, イベント・場面が反映されない欠点もあります.

良くも悪くも塁打に均しちゃうため,

  • ノーアウトランナーなしからツーベースで出塁
  • ツーアウト満塁から走者一掃のツーベースで得点

後者のイベントの方が圧倒的に価値がある(点を上げているから)はずなのに, OPSもRCもすべて「塁打2」で記録されておしまいです.

このクエスチョンに対して答えるものがこの後紹介するLWTSになります.

なお, 「野球の得点のしくみ」を理解する上でRCは欠かせないので覚えておいて損はないでしょう.*10

3. LWTS - 得点価値で評価する

LWTS(Liner Weights)は一言で言うと, 「野球のプレー・イベントに加重を掛けて得点・勝利数に換算して比べるよー」という評価方法・概念です.

数々の書籍で紹介されていますが, ウィキペディアが読みやすいと思います.

Linear Weights - Wikipedia

LWTSはアウトカウント×ランナー状況の24通りごとに得られる平均得点を出した「得点期待値」と, プレーの結果である「得点価値」を元に様々な指標を算出...というアプローチを取ります(なお今回は紹介しません*11).

LWTSを元にした代表的な指標は,

  • wOBA(打席辺りの得点貢献. この後紹介)
  • DIPS(投手の自責と思われるイベント・プレーの特徴量から評価する手法. 次回連載で紹介予定)

があります.

wOBAの特徴は,

  • OPSやRCと異なり, 安打を種類(単打・二塁打・三塁打・本塁打)ごとに係数(加重)を用いて評価
  • 出塁率っぽい数字にスケールするようにできているため, 直感的に評価ができる(見慣れた数字と一緒という意味で)
  • 打席数やリーグ平均値を用いて, 得点(wRAA, wRC)として評価できる

という長所があります.

ちなみに数式はこちらです.

wOBA = (0.7 * (四死球-敬遠) + 0.9 * (単打 + 失策出塁) + 1.3 * (二塁打 + 三塁打) + 2.0 * 本塁打) / (打席 - 敬遠 - 犠打)

論より証拠ということで, wOBA, wRAAのグラフです.

f:id:shinyorke:20200510221315p:plain
LWTSで加重を付けて評価したイチロー

wOBA(折れ線グラフ)は言い方を変えると「プレーの質に合わせて調整した出塁率」なので推移が出塁率に似ています.

面白いのがwRAA(棒グラフ)の方で, (成績が悪化した)2011年から数値がマイナスになっています.

なぜマイナスになるか?のからくりはwRAAの数式にヒントがあります.

wRAA = (自分のwOBA - リーグ平均wOBA) / wOBA Scale) * 打席数

※wOBA Scaleは固定値(MLBの場合は1.15)

上記を見て分かる通り, 自分のwOBAがリーグ平均値を下回るとマイナスになります.

もうちょっというと,

  • 自分のwOBAがリーグ平均値より上回ると, 「平均的な打者より得点を稼いでる」といえる.
  • リーグ平均値と同じであればゼロになる
  • 下回ると, 「リーグ平均打者より下回る攻撃力」という意味になる. 直接的に言えばスタメンで使うのは危険.*12

2011年以降のイチローは様々な衰え?でバットのほうが湿っています(ちなみに守備走塁は現役終盤まで一流だった).

wRAAで見る限り, 徐々に出番がスタメンから控えになるのも理解できます.

どれで見るのが正解なのか?

「打者の成績を数字で理解する三つの視点」ということで,

  • よく知られている成績
  • OPS/RC/RC27
  • LWTS(wOBA, wRAA)

三つの例を上げました. じゃあどれが正解なの?っていう話ですが,

  • 「平均的な打者と比べてどれだけ貢献してるか」が見えるLWTS(wOBA, wRAA)が最も筋が良さそう.
  • 他の選手と比べる, みたいな目的じゃなければOPSやRCでもだいぶ説明ができるし良さそう.
  • 自分が何を知りたいか?によって使い分けるのがベスト!

かなと思います.

shinyorke.hatenablog.com

以前こちらでも紹介しましたが,

対象とするもの, ほしい結果に対する「精度」を元に「ほどほど(ある程度)」に測ることも大切.

これに尽きるかなあと思います.

結び&次回予告

今回は打者の成績の視点という紹介をしました.

プロ野球もメジャーリーグも開幕まで少なくとも一ヶ月は時間ありそうなので, 数字で楽しむ野球を知る機会になると嬉しいです.

また, スポーツデータサイエンスをやってるかた, いつかスポーツ業界のデータサイエンスをしたい!というかたへのアドバイスな視点だと,

  • 野球で攻めるならRCにあるような得点構造の理解
  • LWTSの意味と意義
  • これらをSpreadsheetでもSQLでもプログラミング(得意な言語でいい, 無ければRかPythonで)でもなんでもいいので自分で操れる

ようになると良い感じだと思います.

次回は投手編ということで, 先ほど少し紹介したこちらをやります.

DIPS (野球) - Wikipedia

個人的にはセイバーメトリクスで一番好きな考え方であり指標であります.

色々準備してやりたいと思います!

Appendix - 参考書籍

RCは野球本だとマネーボールが初出っぽいです.

ちなみに映画で見てもRCは出てきません.

数式や意味的なモノはこちらを参考にすると良いです(ちょっと古いですが良著です).

LWTSはこの辺を攻めるといい感じです.

*1:個人的にはずっとリモートでイケるのは良かったりしましたが流石に野球が無いのはぼちぼち応えますね. 競馬もダービー終わると一息ついちゃうので...

*2:これは別の機会でエントリーにしようと思いますが, 現在自分の野球データ分析環境はすべてBigQueryに統一, ちょっとした絵図とか可視化はData Portalを活用しています. 雰囲気的には所属しているJX通信社でやってるアプローチとほぼ一緒です.

*3:野球, チーム, 選手などなどから来る「ファン心理」「思い込みというバイアス」を抜くという意味でも重要な条件でございます(と前回も似たような注釈を書いた気が).

*4:念の為断っておくと, 統計とかセイバーメトリクスを使うまでも無く, イチローは大打者すぎます(Disろうとも重箱の隅をつこうとも思わない). データとして程よいサンプルであること, 日本に限らず世界的に有名なつい最近まで現役だったスーパースターということでイチローを選択しました.

*5:トラッキングデータを説明変数として統計的に出せるwOBAなどをチューニングする手段が最近のトレンドですが, 複雑なので今回は解説しません.

*6:これは意味分かんない数字で若干引く. いやホント大打者でした.

*7:数式の構造上, 打数や安打数が増えると上がりやすくなります.

*8:ホントはゼロ基準なのですが, RCおよびRC27の式の構成上, ヒット0本だとマイナスになります(これがRC系の欠点でもある)

*9:もうちょっと詳しく言うと, 出塁率は「出場機会に対して如何にアウトにならなかったか?」というパーセンテージなのに対して, 長打率は「打数に対して塁打をどれだけ稼いだか?率」という4百分率(故に厳密にはパーセンテージではない)の指標の為, このような事態が発生します.

*10:特徴量エンジニアリング, という視点では「分析で使う数字・特徴量がどんなイベントどんな原点で生まれたか?」を知ることはすごく重要じゃないですか, そういうことです.

*11:考え方と数式の意味がわかればこの辺は深堀りしなくても大丈夫だからです. なおデータサイエンス, 特に野球を仕事にする場合は理解したほうが絶対いいやつです.

*12:なぜなら打席に立てば経つほどマイナスが大きくなるからです