Excelで始めるMLB投手分析: 変化量グラフの作成
こんばんは。ストライクゾーンのあり方を論じた前回の記事が過去最大規模でハネたのでテンションが上がっていたTJです。読んで下さった方はありがとうございました。読んでない方も是非。以上、ステルスマーケティングでした。
さて、今回はTJがTwitterでちょくちょく垂れ流しているMLB投手分析の作り方を紹介したいと思います。レシピ本的なやつ。
上のツイートにある通り、グラフは各投手の持ち球の変化量をプロットしたものです。得られる情報を明快に可視化するアプローチは、しばしばそれ以外の情報を完全に捨象してしまうというリスクを伴います。「これだけですべてが分かる!」という情報の作成は至難の業ですが、このグラフは変化量の情報を可視化しつつ、色分けによって持ち球、プロットの数によってその使用割合(使い分け)と更に2つの情報を(部分的ながらも)追加できるため、投手分析を考える上では非常に有用なツールの一つと言えます。
ぼくは普段「R」という統計ソフトを用いてグラフを作成しているのですが、いきなり知らんソフトを使ってやれと言われても実践できなくて全然面白くないので、大抵のPCに入っているであろう表計算ソフト「Excel」を利用して作成する方法を紹介します。
あくまで素人による拙い分析ですから、プロフェッショナルの皆さんからしたら大したことはやっていないわけですが、そんな一般人でも手軽にできるツールを紹介するという目的なら多少はバリューを出せるかなということでキーボードを叩いております。
Statcastの導入とその情報公開の進展により、我々のような一般人がMLBのプレーに関する詳細なデータに気軽にアクセスできる時代がやってきました。テレビやTwitterをはじめとするネットメディアで提供されているいわば「既製品」を眺めるのも一興ですが、気になった選手のデータを集め、自分なりの方法で可視化、解釈をするのも達成感があって楽しめると思います。この記事を通して、そんな自家製アナライジングに興味を持って下さる方が1人でも多くいらっしゃれば幸いであります。
それでは手前味噌ですが、以下にその方法を紹介させて頂きます。
①データを持ってくる
まずは分析の材料となる元データを探してこなくてはいけません。MLBでは全30球団が本拠地球場にトラックマンを設置しており、1球ごとの詳細なデータを取得、集積しています。それらを用いた分析や、我々一般人が分析を行うための元データを公開しているサイトがBaseball Savantです。
サイト内で公開されている分析を眺めるだけでも充分楽しめるのでお好きな方はぜひ色々いじってみてほしいのですが、今回はそれらの分析を支えているデータをゲットするのが目的なので割愛します。
一球ごとのデータ(以下「トラッキングデータ」)は2015年以降のほぼ全試合(※)のものが公開されています。これらのデータにアクセスするためには、まず下画像の「Search」から検索画面に入ります。
画面下に取得するトラッキングデータに関する条件を入力する欄が出てくるので、ここに欲しいデータの情報を打ち込んでいきます。今回は今季もワールドシリーズに出場しているアストロズのエース、Justin Verlander投手のデータを使用したいと思います。
上の画面をスクロールしていくと投手名を指定する欄("Pitchers")が出てくるので、ここに選手名を入力します。「(last name), (given name)」の順で入力することになるので注意が必要ですが、途中まで打てば候補が出てくるのでクリックで入力すれば問題ないでしょう。
とりあえず2019年のレギュラーシーズンのデータを取れればいいかなと思うので、「Season」の欄を「2019」、「Season Type」の欄を「Regular Season」としておきます。また、欲しいのはVerlander投手が打席に立った時のトラッキングデータではなく、マウンドに上がった時のデータなので、「Player Type」の欄は「Pitcher」にしておいて下さい。
この他にも、特定の投球結果(空振り、ホームランetc…)のみのデータや特定の1試合のデータ、あるいは内野手のシフトが特殊な場合のデータなど、様々な条件を付して検索を掛けることができます。分析の目的に合わせて条件を指定しましょう。
条件設定が終わったら、下のSearchボタンを押して下さい。画面に当てはまるトラッキングデータが表示されます。
Justin Verlander投手のデータの概要が出てくるので、適当に名前のところをクリックすると、下のような画面が開きます。
これが1球ごとのトラッキングデータです。画面には球種から打席結果まで、10の要素が表示されていますが、元のデータにはさらに詳細なデータが格納されています。ちなみに、右端のカメラマークをクリックすると該当する投球の動画が観られます。一試合のデータを取り出して1球ずつクリックしていけば実質その試合を観戦できる状態になるんですが、ビジネス的に大丈夫なんですかね。
さて、いよいよデータの保存を行いましょう。上画像の右上、「Save Search」をクリックすると、検索に引っ掛かった全ての(この場合は3083球)トラッキングデータをcsvファイルとして保存することができます。ファイルを適当なフォルダに保存すれば、データの取得は完了です。
※トラックマンが設置されていない・使用されていない球場でのゲームや、何らかの不具合でデータが取得できなかった場合、今回の分析に使うデータが欠損していることがあります。これはもうどうしようもないので、分析に致命的な影響を与える可能性があるものでなければ取り除いてしまうのが良いでしょう。
ちなみに、今季はロンドンでもMLB公式戦が行われており、筆者はさすがにトラックマンデータは取得できないと思っていたのですが、試合後に覗いてみたらばっちり変化量データが入っていて驚きました。この辺のデータの扱いに興味のある方は、2つ目のツイートに続く903124(@903124S)さんとのやり取りを参照して頂ければ。
もう一点重要な注意を。「Season」は2008年以降の12年間を選択することが可能になっていますが、現在使用されているトラックマンでのデータの取得が始まったのは2015年シーズンからで、それ以前は測定方法が異なります。2014年以前のデータ同士を比較するのは問題ないでしょうが、両者を一緒にして分析をしてしまうのは大きな誤差を含む可能性があるので、できれば避けた方が良いでしょう。
また来季からは、トラックマンに代わって新たな画像解析システム"Hawk Eye"が導入されることが発表されています。これまでのデータにどのような調整が施されるのかは不明ですが、これも一緒にしてしまうのは避けるべきだと思います。
②データを整理する
次なるステップはデータの整理です。ダウンロードしたデータは分析しやすいように整形されていますが、Excelで可視化するにはもう少しだけ下準備が必要です。まずは保存したファイルを開いてみましょう。
Macはどうか不明ですが、WindowsのPCならcsvファイルは基本的にExcelで開いてくれると思います。一番最初の行がデータのラベルで、以降1行に1球分のデータが格納されている、という状態です。測定機器がトラックマンに切り替わったタイミングで導入された・廃止されたデータがあるので数は厳密ではありませんが、1球につき90の情報が入っています。すごい。どの列がどんなデータを表しているのかについては、こちらのサイトを参照して下さい。そのうちいくつかを紹介すると、
・pitch_type: 球種(アルファベット2文字の略称、pitch_nameは正式名称が格納されている)
・batter/pitcher: 打者・投手それぞれがもつ固有のID
・game_date: 試合が行われた日付
・release_speed: 球速、マイル表示
以降の分析で使用するデータはおいおい説明していきます。
xlsxファイルとして保存し直す
ダウンロードしたcsvファイルは、取得したデータセットを最もシンプルな形で保存する方法の一つです。PC教室じゃないので詳細は省きますが、変化量のグラフを作成したり、それをシートに保存するためには、一旦エクセルファイル(○○.xlsxとなっているもの)としてファイルを保存し直す必要があります。まずは左上の「ファイル」をクリックし「名前を付けて保存」を選択して下さい。
クリックするとフォルダが開き、ファイル名と保存場所を指定する下のような画面が現れるので、「ファイルの種類」(開いた時点での設定は「csv(カンマ区切りファイル)になっていると思います)をクリックして「Excelブック(*.xlsx)」に変更して保存して下さい。ダウンロードしたファイルとは別に、エクセルファイルが保存されていればOKです。
以降の作業は全てcsvではなく、Excelファイル上で行います。同じ名前のファイル名を付けると間違えてcsvファイル上でグラフを作成してしまい、保存ができないということにもなりかねないので注意して下さい。
必要な情報だけを抽き出す
さて、Excelファイルを開いたら、変化量グラフを作るのに必要な情報を引っ張って別のシートに保存しましょう。この操作はマストではありませんが、いかんせん列数が90と多いデータセットで、このグラフを作る上で全く使わない情報も数多く含まれている状態のまま作業を行うのはちょっとやりづらいと思うので、初めのうちは必要最低限の情報を別で作ることをおススメします。新しいシートを作成して、必要な列だけコピーしていけば元のデータに傷をつけることもないのでやり直しも容易です。
列のコピー・貼り付けはそんなに難しい作業じゃないので割愛。上が完成品で、とりあえずは"pitch_name" "pfx_x" "pfx_z" の3列があればOKです。それぞれ「球種の名前」「(無回転のボールを0としたときの)横変化量」「(同)縦変化量」を表しています。
もうひと手間加えて、変化量をcm表記にしてもいいでしょう。空いている4列目の一番上の行に「= b2(pfx_xの入っている行の同じ列) * 30.48」と入力し、全ての行に対して反復計算を行えばcm表記に修正することができます。同じ要領で、5列目には縦変化量のcm表記を入力しておきましょう。
データを球種別に分けて並べる
データ整理も大詰め。最後はデータを球種ごとに並べ直して、グラフを作成しやすいように整形します。ここも新しいシートを追加して、必要なデータをコピーしてくるのがいいと思います。
ゴールは上の画像のような状態です。1行目を球種のラベリングに使い、それぞれの球種に対して2列(横変化量、縦変化量)で1球を表現しています。Verlander投手の持ち球(トラックマン判定)は全部で4つ。多い投手は列数が増えていくことになります。
ただ、3,000以上のデータから特定の球種だけを目視で引っ張ってくるのは日が暮れてしまうどころではありません。はっきり言って愚かです。Excelのフィルター機能を使うと、この整理が簡単に行えるので、ぜひこれを活用して下さい。
右上の「並び替えとフィルター」から「フィルター」をクリックすると、
1行目の各セルにフィルターの条件を選択するボタンが出てくるのでプッシュ。
球種を1つ選択して「OK」をクリックで、上画面のように選択した球種だけが表示されるようになります。あとは変化量の列だけをコピーして、上に球種の名前を入力すれば先に示したゴールと同じものが作成できます。やったぜ。
③グラフを作る!
さて、ついに残る工程はあと一つ。変化量プロットを作成していきましょう。
適当な範囲を選択し、「挿入」タブからグラフ「散布図」を選択すると、適当な散布図が作成されます。
謎のグラフができたらグラフを右クリック。「データの選択」をクリックします。
クリックすると散布図の情報を選択する画面が開くので、ここに球種ごとにデータを指定していきましょう。
こんな感じの画面が開いていると思います。まずは左側の「凡例項目」を「削除」から全部消してしまって下さい。全部消したら、その左「追加」ボタンをクリックします。
「系列名(球種ラベル)」「系列X(横軸)の値(横変化量)」「系列Y(縦軸)の値(縦変化量)」と入力する箇所が3つ開くので、上の画面に従ってそれぞれ対応するセルを指定して下さい。文字で伝わる気が全くしませんが、各入力箇所を選択してセルを直接指定すると入力できます。
こんな感じ。OKをクリックしてうまくいけば、散布図にはフォーシームの変化量がプロットされているはずです。
同じように全ての球種に対して「追加」を入力してできるのが下。
完成。
このままだと軸ラベルやタイトルがないので、適当に追加して下さい。
Excelはグラフのスタイルやプロットの色も簡単に変更できて便利。
上は見にくい可視化の例です。色分けで球種を表現しているのにモノクロにしては全く意味がありません。絶対にマネしないようにしましょう。
というわけで、ここまででグラフの作成方法のレクチャーは終了です。最後にチラッとだけグラフを眺めて考察。
新時代のプロ野球バイブル『セイバーメトリクスの落とし穴』でも触れられている通り、Verlander投手のスライダーはいわゆる「スラッター」に分類されるボールであることが分かります。変化量のプロットはこれと並んで重要な球速に関する情報を落としてしまうのでこの点には注意が必要ですが、ホップ成分の大きなフォーシームに対して左右に落ちるチェンジアップ・スラッターの組み合わせで打者を翻弄していると言えます。チェンジアップの使用比率が比較的低いことから、左打者に対してもスラッターが有効で、実際使用していると考えることもできるでしょう。まあこのあたりは左右別OPSなどを見るなどしてきっちり補完していく必要がありますが、今回は分析そのものが目的ではないのでこの辺にしておきましょう。気になる方はこのnoteを参考にVerlander投手の分析を作成してみることをものすごくオススメします。
おわりに
今回はTJが自分のデータを可視化する方法を他人様にべらべら書き連ねるという非常に恥ずかしいことをやって参りました。ぼく自身プロ野球の世界の内側が覗けているわけではありませんし、ましてプロのアナリストでもありませんから、今回紹介したようなアプローチは基本中の基本未満のものにすぎないと思っていますし、そうした方から見れば無駄なプロセスも多々存在していることと思います。
まあそんな一般人のぼくにもこれくらいの可視化が出来るんだということで、皆さんがご自身でも分析に挑戦する際のとっかかりにでもして頂ければ幸いです。「こうすればもっと楽だぞ」「これいらなくない?」みたいなコメントもどしどしお待ちしておりますので、この記事のコメント欄でもTwitterでもご意見、ご感想を頂ければと思います。同じフォーマットでも、それをどう読むか、読んで何が見えるかは人によって全く異なる可能性が高いでしょうし。
というわけで今回は以上です。せっかくなので以下には思い付きでやったもうちょっとちゃんとした分析を載せておきます。具体的には、ダルビッシュ投手MLBで最も多くの球種を操る投手であることを紹介したこちらの記事を参考に「ホントに10球種も投げてんの??」という疑問を特定する遊びをやっています。
おまけ:ダルビッシュ、ホントに10球種も投げてるの?
せっかくなのでExcelでグラフ作成しようかとも考えたのですが、いかんせん面倒くさいので()、ここからはRで作成したものをご覧下さい。皆さんにReplicateしてもらうのも一興ですし。
先ほどの記事によると、ダルビッシュ投手が操る球種は
①CUT FASTBALL (soft version): カットボール(ソフト)
②CUT FASTBALL (hard version): カットボール(ハード)
③FOUR-SEAM FASTBALL: フォーシーム
④SLIDER: スライダー
⑤TWO-SEAM FASTBALL: ツーシーム
⑥CURVEBALL: カーブ
⑦KNUCKLE-CURVE: ナックルカーブ
⑧SLOW CURVE: スローカーブ
⑨SPLIT-FINGER FASTBALL: スプリット
⑩CHANGEUP: チェンジアップ
の10種類。記事には平均球速も併記されていますが、せっかくなのでこのあたりも自分で可視化してみましょう。まずは今シーズンのダルビッシュ投手の変化量グラフを作成します。
バーランダー投手に比べるとフォーシームのシュート成分が小さく、スライダー方向に変化しているボールも見受けられます。低めのアームアングルから放つカット系のいわゆる「真っスラ」は他の投手と差別化できるポイントの一つでしょう。
で、肝心の球種。1,2,3,...全部で9つしかないんですけど…。カッターはソフト・ハードと分類されていないし、よく見るとカーブとナックルカーブ・イーファスピッチ、ツーシームとチェンジアップ・スプリットなど、変化量だけ見ると被っている球種も見受けられます。本当に10球種も投げ分けているのでしょうか?
変化量と球速による球種の分類
まず怪しいのはカットボール。Statcastによる球種分類ではカッターと一緒くたにされていますが、よく見るとホップ成分が大きめの小さく曲がるものと、ややドロップ成分を含んだ大きめのものと、分布が二つに割れているのが分かります。また元の記事を読んでいくと、ハードカッターは6月以降に投げ出したとあります。そこで、変化量を5月以前と8月以降のものに分けて比較してみましょう。
左右でカッターの色が変わっていて申し訳ないんですが、両者の差は歴然ですね。8月以降のプロットには5月までのカッターには見られなかったホップ気味のボールが含まれています。5月以前のカッターに近い球質のボールも残っていて、両者はStatcast上で分類こそされていませんが、ダルビッシュ投手の中では投げ分けがなされていることが分かります。またよく見ると、元々投げていたソフトカッターも、8月以降はスライダーと共にそのドロップ成分が大きくなっており、ハードカッターのチューニングの過程で、球質にやや変化が起こっていることが分かります。
カッターが2種類に増えて、球種の数は全部で10。この分類の妥当性を裏付けるために、さらに各球種の球速をプロットしてみましょう。
球速はこの変化量グラフを作成する中で「落ちる」最も重要な情報と言えます。ここでは逆に横変化量を落として、横軸に球速を取ったプロットを作成してみます。このグラフは変化量グラフの応用なので、Excelでも簡単に作成できるはずです。
ホップ量が下がるほど球速が落ちるという、綺麗な右下がりのグラフができました。これを見るとカーブ群の違いが見えるようになりますね。ドロップ成分はさほど大きく変化しないものの、130km/h台を中心に分布するナックルカーブ、やや広めの球速帯に分布するカーブ(本人が球速を連続的に調整している可能性も?)、そして100km/hに迫る緩いカーブ(トラックマン上ではEephus: スローボールとしてカウント)がはっきり分類されます。今季途中にカブスに加入したCraig Kimbrel投手にヒントをもらったというナックルカーブの習得で、高い球速で強いドロップ成分を持つカーブが安定して投げられるようになったと言っても良いかも知れません。また、先に変化量で区別していたハード/ソフトカッターもやや球速に違いがあることが分かります。
以上から、「ホントに10球種も投げてるの?」という疑問には自信を持って "Yes!" と回答できることが分かりました。皆さんも投手に関する分析記事やテレビ・YouTubeでの特集を見て「ホントか?」と思ったことを自身で検証してみてはいかがでしょうか。それではここまでご拝読頂き、ありがとうございました!また次回。
例によって以下の有料部分にはぼくが好きな曲のYouTubeリンクを置いときます。記事を読んで「役に立った!」と思った方がいらしたら、TJへのお小遣いをぶん投げて頂けると幸いです。
ここから先は
¥ 100
貨幣の雨に打たれたい