野球データを分析するときにやっている10のこと

プロ野球やMLBが開幕して、はや一ヶ月が経ちましたね。

毎日、私のTLには試合映像や記事、データがたくさん流れてきて、楽しい毎日を送っています。


ただ、体感ですが、野球データに触れる人が増えてきたなーと思うと同時に、分析結果を見て「ホントに合ってる?都合いいデータだけ集めてない?」「データの欠損について詳しく調べたのかな?」などと思うことも多く、結果だけではなくデータの成り立ちや分析過程にも興味を持ってほしいなと思い、私が野球データを分析するときにやっている10のことを書いてみました。


これを読んで、

今度、分析するときは気を付けて見てみよ!


と思っていただければ、嬉しいです。




私が野球データを分析するときにやっている10のコト

■データを探す

1. どのサイトにどんなデータがあるか知っておく

サイトごとにデータの集計単位もバラバラで、申告敬遠や犠打・犠飛の数がわからないから、このサイトのこれとあのサイトのあれを組み合わせて指標を計算して…とやることが多く、どのサイトにどんなデータがあるか知っておくことは分析時間を確保するためにも大変重要です。


データを探すときはだいたい以下の流れで探しています。

  • 基本成績であれば、NPB、MLBの公式サイトを探す
  • (MLB) 公開されているStatcastのデータ定義サイト(後述)から探す
  • (NPB) DELTAやパリーグTVなど有料会員登録が必要なサイトのデータから探す

ここまででたいていの場合、見つかりますが、それでもダメなら以下の方法を試します

  • 日本語(英語)でダメなら、英語(日本語)でググってみる
  • 更新が多いデータはググるときに検索期間を一年以内にしてみる
  • 有志の方が作成しているデータのサイトから探す

有志の方が作成している便利なサイトはなるべく最後の手段として考えたいです。


ちなみに私は基本的に一球データ、トラックマンデータが詳細に公開されているMLBデータを使って分析しています。

NPBのデータもうまいことスクレイピングすれば取得できますが、利用規約等をよく読んでからご利用ください💊。


■データを見る前

2. どのように測定されたデータなのか調べる

データをどのように測定したかによって、データの精度(測定誤差など)、粒度(pitch-by-pitchなど)、種類の豊富さ(カラムの多さ)が変わってきます。

  • スコアブックをパンチングした
  • 入力アプリを使用して手動で取得した
  • (トラックマンなど)トラッキングシステムによって自動で取得した

現存する野球データはたいてい上記のいずれかにあてはまります。下にいくほど状況を精緻に、かつ計測の間違いが起きにくくなっています。


この測定方法についてはほとんどの方が知っているかと思いますが、これを知らずに分析をスタートしてしまうと、問題点を見逃してしまう可能性が高くなります。



そして、蓄積されたデータが手元に届くまでには、大きく以下の2通りの過程があって、

  1. データを手動入力する 
    ⇒ 紙やデータベースに蓄積する 
    ⇒ 出力する(公開する) 
    ⇒ (許可されていれば)スクレイピングで取得
  2. レーダーで計測する  
    ⇒ データベースに蓄積する  
    ⇒ 出力する(公開する) 
    ⇒ API・ダウンロード・(許可されていれば)スクレイピングで取得

ほとんどの方はこの最後の工程のみを実施しています。

便利な一方、手に入ったものが完璧なデータになっていると思ってしまうと思わぬ落とし穴にハマります。


逆にデータ提供者はミスが起きにくいように自動化したり、レーダーの性能をあげようとしていたりと努めているので、その恩恵を受けている利用者もできる限りの確認はした方がよいでしょう。


3. データ定義ファイルがあるか確認する

データ定義が公開されているのはStatcastくらいなので、面倒ですが、データ定義資料がないものやスクレイピングしたデータについては、ちゃんとデータ定義ファイルを作っておくことをおすすめします。時間をおいてもう一度分析に着手しようとしたときに「昔の自分ありがとー!!」と絶対なります。

  • Statcastのデータ定義(ホントはもうちょっと細かく書いてほしい)

baseballsavant.mlb.com


4. 単位はinch, mphなどなにが使われてるか、cm, km/hなど変更が必要か調べる

「mph km/h」など「単位 単位」で検索すれば変換のための値がすぐわかります。

f:id:tsuyu_pon:20210504222118p:plain


■データを見る

5. 集計・分析する前のデータの特徴を把握する

  • データ型(日付、数値、文字列、ID)が認識しているデータ定義に沿っているか確認

ExcelやRなどデータ型を確かめられるツールで確認してください。日付の列に"Total"が入ってて、文字列扱いになってたとかよくあります。

  • 一球ごと、打席ごと、イニングごと、選手ごと、試合ごと、シーズンごとなどどんな粒度のデータになっているか一応確認

「牽制データはなさそう」「責任投手の判別は大変そう」などある程度の感覚がつかめればOKです。

  • 使いたいカラムにどんな値が入っているか確認

特に「投球結果」の列はデータによって粒度がさまざまで(全部英語で)「ボール(バント構え)」「エンタイトルツーベース」「見逃し三振」と細かく書いてあるものもあれば、「ストライク」「安打」「凡打」と粗めのものもあります。

私はExcelであればピボットテーブル、Rであればtable()を使ってよく確認しています。


6. 欠損値がどれだけあるか確認

欠損値がどれだけあるか、それはデータ定義上欠損にしかなり得ないのか、データが取得出来なかったから欠損しているのかをわかる範囲で確認します。


ここの確認をすっとばしてやりたい集計をしてしまう人が多い気がします。平均値ひとつ出すにしても、「欠損値を除外した平均値で問題ないのか?」と一度立ち止まって考えることが重要です。


ケース1:
初回1番打者への投球で一塁走者が欠損(空白)だった

これは野球のルール上、欠損にしかなり得ないのでそのままでOK


ケース2:
打球結果が邪飛で、打球速度・打球角度が欠損だった

これは打った結果なので欠損であることはおかしいです。レーダーで正しく値を取得できなかったのが原因かもしれません。


さらに、データが欠損するタイミングに規則性があるかどうかも知っておいた方が良いです。欠損はランダムに発生しているのか、ゴロフライ・打球位置・打球角度・コンタクトポイントなどある条件を満たすと欠損するのかなど、どのように欠損しているかで正しい欠損値処理は変わってきますので、むやみに除外せず欠損値補完の方法があるか考えてみましょう。

↓欠損値補完について書いた過去記事

tsuyupon.hatenablog.com

tsuyupon.hatenablog.com

tsuyupon.hatenablog.com


■分析設計

7. 何を知りたいのか考える

ここはそのままの意味です。

  • 「A選手はチャンスに強いイメージがあるな。得点圏打率を見てみよう」
  • 「B投手はここ最近連投してる気がする。登板試合日を見てみよう」

仮説から問いをたてて、データの視点からひも解いていく。


8. ↑を知るためには何を調べれば良いか考える

ここも考えずに知りたいことに直進してしまうと、結果の解釈を間違えてしまうので、何を調べればいいかはちゃんと考えておくべきです。

例えば、得点圏打率が高いか知りたいとき。

直接、得点圏打率を調べても得点圏打率が高いか低いかしかわかりません。

普段から試合を見ている人にはこれだけで十分かもしれませんが、全員に同じく伝わるかというとそうではありません。

「得点圏打率が高い」といういうと自然と「得点圏打率 > 打率」を思い浮かべますが、得点圏打率だけ調べてもこの関係はわかりませんよね。

得点圏打率が高い ⇒ なぜ?

  • そもそも打率が高いから得点圏打率も高くでている?
  • 前のバッターがチャンスをつくってくれるので、チャンスばかりで打席がまわってくる?
  • 後続のバッターがホームランバッターなので、ゾーン内で勝負されることが多い?

おそらく、この記事をここまで読んでくださるような方は「得点圏打率が高いかどうかが知りたい」のではなく、「なぜ得点圏打率が高いのか知りたい」と思うタイプの人が多いはずです。知りたいことの背景をどれだけ深く考えられるかが良い分析のカギになってくるので、いきなり目的に猪突猛進するのではなく、視野を広げるクセをつけると自然と良い分析設計になると思います。


9. どんな可視化をしたらわかりやすいか考える

分析は値を知って終わりではなく、友達でもTwitterでも論文でも誰かに正しくわかりやすく伝えるまでが分析だと思います。

そして、わかりやすく伝えるためのツールとしてグラフは非常に役に立ちます。
散布図、棒グラフ、折れ線グラフ、ヒートマップで可視化したり、特に野球であればパワプロのようにS,A,B,...,Gで表現したりすることで短時間で必要な情報を伝えることが出来ます。


ただ、一から自分でわかりやすい可視化を考えるのは大変なので、Savant Illustrarorでいろいろ試してみたり、Twitterでわかりやすい可視化をしている人を探したりしながらコツをつかんでいってください。

  • Savant Illustraror

baseballsavant.mlb.com


■さいごに

10. 適宜、1〜9を振り返って必要に応じて修正する

一回でパーフェクトなものは出来ないですし、反復することで新たに気づくこともあります。

集計後、可視化後など適宜振り返って見落としがないか確かめてみましょう。

(たいていの人がここでデータ定義ファイルやメモ、プログラムのコメントのありがたみに気づきます。)


試行錯誤を繰り返して自信を確信に変えていきましょう!



まとめ

列挙した以外にもやるべきことがあるかと思いますが、上記を最初から全部知った上で分析を始められるとデータ分析に対するアンテナが敏感になります。

データを開いて、確認していくときに「手動だからここの値、ずれてる可能性あるかも」「合計打席数ずれてるから数打席まるまる抜けちゃってるかも」「データにたくさん欠測があるけど、そもそもこのシーズンは取得できてないのかも」といったデータを見る勘所を持った上でデータを見られるようにぜひなってください!


「そこまで気にしなきゃだめなの…?!」

という声が聞こえてきそうですが、分析するなら確かめておいて損はないですし、間違えた解釈をしたまま公開して、その断片的な情報だけがひとり歩きする方がよっぽどコワイです。出来る限り、やりましょう。



(いろんなリスクがあることは承知の上ですが、NPBのデータももっと公開してもらえると、今回書いたような注意点を知っている人がスポーツ界にも増えてくると思うんですけどね。。。)



それでは今日はこのへんで。



最後までお読みいただきありがとうございました。