2017年12月30日土曜日

フライとライナーのあいだ

今回は主にフライとライナーの境界について。

野球の解析ではそれぞれの打球はフライ (fly ball; FB)、ライナー (line drive; LD)、ゴロ (ground ball; GB) などに分類されます。この分類は別に解析に限った話ではなく、大昔から使われており、どちらかと言うと人間、あるいは動物の自然な認知みたいなものもあるのかなという感じがします。ライナーとか痛そうですし。で、よく解析に出てくる打球の分類でも、少なくともBaseball Info Soluion (BIS) が提供しているものは、人間が目で判断しているようです。下はFangraphsで示されているMLB全体での打球タイプ別の頻度の推移です。FangraphsはBISからデータの提供を受けています。バントは多分含まない。

図1.

目で見るとかそんないい加減でいいのか、という気もしますが、全体的にみると比率は非常に安定してします (安定しているからいいのかというと、やや怪しいところもありますが)。よくいわれる最近のFBの増加も確認できます。2012年から底をついていたFB%はこの2年間の増加で、過去の平均レベルまで回復しています。図1では頻度を示しましたが、下は打球別の価値をwOBAで示しています。
図2.

これも非常に安定しており、目で見て分類するだけでも全体で見れば良い仕事をしてくれている様子が伺えます。また、この図からは打球種類の間においてその価値にかなりの違いがあり、わざわざ分類することが解析上の有用さを持ちうることも理解しやすいのではないでしょうか。例えば、2017のFBの価値は過去最大だったようですが、LDではむしろ低下傾向を示していますが、それでもFBよりもかなり高い価値があることがわかります。ここではwOBAで示しましたが、FBは安打の比率は低いが長打が出やすいのに対し、LDは安打になりやすい、などといった特徴があり、成績の予測や補正などの目的に利用されています。

しかし、実のところ打球の分類は解析する側にとっては厄介な要素ともなっています。MLBデータの打球分類では、主にBISによる分類とMLBが提供する分類があるようで、色々と違いがあります。表面上の大きな違いとしてはMLB分類ではフライの中に、内野手に取られたフライとしてポップフライ (popup; PU) を加えています (注1)。面倒なことに同じ名前がつけられた分類群における頻度自体やその推移は、BISとMLBで結構一致しないことが知られています。下の記事はこの辺の不一致について色々と示してくれています。
Kevin Ruprecht, Batted balls and source disagreement, SB Nation, 2015.
https://www.beyondtheboxscore.com/2015/5/5/8548129/batted-ball-data-fangraphs-baseball-reference-baseball-savant-statcast

下はFanfraphsでの頻度と、Retrosheetでの頻度を比較しています (Retrosheetでの打球別wOBAは注2に示した)。Ruprechtの記事において、Retrosheetの数値はMLBのものとほぼ一致することが示されています。
図3.

FBがRetrosheetで低いのは、主にPUを別の分類として認めているためのようです。また、GBではRetrosheetがむしろわずかに高い傾向がありますが、これはどうやらFangraphsではバントを含めていないためのようです (Ruprechtの記事のコメント欄参照)。BISの分類ではそれぞれの比率は比較的安定していますが、MLBによる分類ではLDが2013年から数値が突然上昇し、FBが低下しています。異なる打球分類系での比較に注意が必要なことは当然ですが、同じ分類系でもMLBのものは年度間での比較に使う場合にはちょっと心配になるところです。

ではこれらの打球は何にもとづいて分類されており、それがMLBの分類ではどう変化しているのでしょうか?打球の分類を行う上で重要な要素になりそうなパラメータとしては、人間が分類するにせよ、機械的に分類 (クラスタリング?) するにせよ、打球の速度と角度、距離などになりそうです。ありがたいことにMLBが提供しているStatcastではこれらのデータを公開してくれています。ちゃんとしたデータは2015からなので、一番知りたい2013の変化はわかりませんが、15-17年に関してこの辺をぼんやりと眺めていきます。

下は15-17年の全打球を、年度ごとに速度と角度でプロットしています。75度を赤の点線で示していますが、15年には75度を超える打球はほぼ見られなかったのが、16-17年では結構見られるようになっています。これは仕様の変更によるものだと思われます。

図4.

基本的に打球の分布は連続的なものであることがわかります。これを3つなり4つなりに分類するのは、なかなか大変そうです。少なくとも図4で示された情報だけで分けるのは不可能でしょう。下は同じプロットで、色で打球距離を示しています。


図5.

3つくらいなら分類できそうな気がしてきました。真ん中の飛距離が出ている領域と、その上下の飛距離が小さい2つの領域は分けられそうです。また、比較的どうでもいいことですが、毎年似たようなところに飛び地のように距離が大きいデータが散らばっています。仕様上の、あまり重要ではない問題がありそうです。

下はさらに打球の種類ごとに分けて示しています。
図6.

おおざっぱには、図5中央の距離の大きい部分で、角度が大きい部分がFBに、小さい部分がLDに相当しているようです。しかし、この図ではやや見づらいですが、FBとLDは速度、角度、そして恐らく距離でも、ではかなりの重なりを持っています。また、距離が出なかった打球については、下側の領域がGB、上の領域が主にPUとなっているようです。しかし、FBとPUも角度、速度、距離で重なりがあります。この2つの分類は基本的に外野手が取ったか、内野手が取ったか、に依存しているようなので、重なりがあるのは当然といえば当然かもしれません。

図5で見えていた飛び地的な、場違いな飛距離が大きい打球はGBに分類されているようです。下は飛距離の大きなGB打球の説明や、角度、速度などです。
図7.

大部分に関しては、たぶん、野手が触ったところを距離にしてしまっているとかでしょうか。謎です。

図6に戻ると、これ以外にも打球種類ごとのまとまりから離れた打球が結構あるようです。FBを見ると角度0やそれ以下でもまばらに打球が出ています。LDやPUでもGBに含めた方が良さそうな打球が結構あり、年度によって発生の仕方が結構違います。人間が分類していて打球のパラメータがおかしな数値になっているか、機械で分類していて上手く対応できない打球があるか、あたりかなあと思いますが、年度ごとの癖やあとで見るLDとFBの分類のパラメータを見ると後者のような気がしています。

ところで、図6をよく見ると2017年ではLDの範囲が狭くなっているような感じがします。下はStatcastデータでのFBとLDの数を数えています。
図8.

2017年にLDは全体としてはそれほど低下していないようです。基本的に角度が大きい部分で刈り込まれているような印象があり、角度が大きいLDはHRになる確率が高いはずなので、HRに絞って図で示してみます。
図9.

LDが目に見えて減っています。角度が大きく、かつ速度が大きい打球が、2016で少し、2017に大きく、消えていっているように見えます。2015、2016年ではLDでは30度ぐらいの角度が上限になっているように見えますが、2017年ではかなり下がったようです。2017年と2015年を比較すると、2015ではLDに分類されていた打球が、2017ではFBに分類されている可能性は高そうです。実際、FBを見ると、2017では速度が早い (つまりLD的な; 110-120 MPHあたり) 打球が増えて右に広がっている印象があるのではないでしょうか。

減少を数字で確認します。下はStatcastデータにおける、HRに占める打球の種類です。
図10.

LDのHRが半分まで低下しています。

ここまでは角度に関して変更がありそうなことが見えていましたが、距離も変化しているかもしれません。下の図では距離への影響を見やすくするために、横軸を距離に変えて示しています。
図11.

LDに注目すると、角度30度の下の領域で減っているのに加えて、距離の大きい打球 (450 ft前後) では角度が小さくても減っていっているように見えます。

しばらくHRだけを見てきましたが、HR以外の打球は影響がないかというとそうでもないようです。下はHRでない打球について、FBとLDを比較しています。
図12.

2017年では、比較的緩めの打球である速度75前後、角度25-30あたりに謎の刈り込み痕が確認できます。何をしたらこんなことになるんでしょうか。わかりません。

これらのデータはMBLによる分類が変化していっていることを示しているようですが、当然これらの分類を使う場合には解析上の影響が起こりえます。下はFBとLDの平均速度 (Velo), 角度 (Angle), 距離 (Distance) を示しています。
図13.

わかりやすいのは角度でしょうか。2017年では両方の打球の角度が低下しています。LDの角度の大きい、30度弱の打球がFBに分類されたと考えると両方説明できそうです。LDの飛距離の低下も図11をみる限り、分類の影響が大きい可能性がありそうです。

下はLDについて、イベントごとに分けて同様のパラメータを示しています。
図14.

角度の顕著な低下があるのはHRだけのようです。角度が高い部分が刈り込まれているという観察 (図9, 11) や、全体のLDの数はそれほど変動していなかったこと (図8) と、一致する結果だと思います。

ここで図3で示した打球タイプ頻度の推移を再掲します。


MLB系の分類に従っていると思われるRetrosheetの2016→2017の数値は、Fangraphsの傾向と比べて、極端におかしな推移をしているわけではないようです。Fangraphsと明らかな乖離が広がり続けている2013から2015においては、ここで示したよりもかなり大幅な分類の改変が連続的に行われていたはずです。

というわけでHRとLDの境界を中心に、打球種類別の速度、角度などを見てきました。
ざっくりまとめてみます。

  1. FBとLDの間は少なくとも速度、角度、距離については、それぞれ大きな重なりがあり、分類は非常に困難であり、ある意味、かなり恣意的にならざるをえないことが伺える。
  2. MLBの分類では、速度、角度、距離をみる限り、2015年以後でも分類の基準が変化していっているようだった。
  3. 特に角度、距離が大きめのLDがFBに移されているらしい。特に2017年度で顕著。
  4. 緩めの打球でも、速度、角度に関して、FBとLDを分けるような刈り込みが2017年では行われている。

3と4はFBとLDの重なりが減るような方向の操作のように見え、FBとLDの間の境界における、速度と角度の影響を上げて、これらの変数内での重なりを減らすというような意図があるのかもしれません。LDが減るような方向の改変となっていますが、もともと、MLBの分類のLDはBISの分類に比べて最近では5%程度多く (図3, 2013年以後)、この違いを小さくするような意図も、もしかしたらあるのかもしれません。MLBが提供している打球分類を年度間比較で用いる時は、このような変化の影響の大きさを認識しておく必要がありそうです。可能ならどういう分類を使っているのか、今年はどう変えるのか、は公表してくれるとありがたいところです (注3)。

今回はこのへんで。

<参考>
GB%, LD%, FB%@Fangraphs
https://www.fangraphs.com/library/pitching/batted-ball/

打球別wOBAはSplits Leaderboard@Fangraphsで取得した
https://www.fangraphs.com/leaderssplits.aspx?splitArr=&strgroup=season&statgroup=1&startDate=2017-03-01&endDate=2017-11-01&filter=&position=B&statType=player&autoPt=true&players=&sort=22,1&pg=0
_________________________________________________________


注1.
PUに概ね対応するものとして、FangraphsではFBに含まれる打球として内野フライ (IFFB) がありますが、これはプレートから140ft以内であることがKevin Ruprechtの記事へのコメントで確認できます。

注2.
Retrosheetでの打球価値をwOBAで示します。

2002はデータが異常なのか、おかしな結果になっています。本文で示した頻度の比較では2003以後のみを示しました。LDが増えた2013以後にFBの価値が大きく低下していることがわかります。図2で示したFangraphsのデータではこのような大きな落ち込みは見られていません。この違いは、2012年までFBに分類されていた打球の中でもLD的な性質の強い打球 (当然価値が高い) が、LDに分類されたことによると考えると、効果の向きとしては一致しているようです。定量的にはよくわかりませんが。

注3.
キバ○シ「これはあえて使いにくくしているんだ! 角度、速度公開してやったんだから、打球分類などといういかがわしいカテゴリー変数は捨てて、ちゃんと物理的に意味を持つ連続変数でやれ、というメッセージだったんだよ!」

オマケ.
打球分類ごとに、それぞれの主要なイベントについて角度、速度でプロット。

まずはLD。

HR以外ではtripleが減ってる感じがするのと、まとまりから外れた打球は2017年では上手く取り除けているようです。横の赤の点線の上の方は角度30度を示していますが、これをみるとsingleでも30度以上の打球が低下していることがわかります。FBに移されているはずです。

FB。

LDもそうですが、角度、速度だけみるとHRとdoubleは紙一重な感じがします?たぶんspray angleが違うんだと思いますが。field outやsingleでは、低い角度 (約25度前後) の遅めの打球が2017で減っているかもしれません。これらはLDかGBに移ったかも?あとはSingle, Double, Tripleの面積も全体的に狭くなっていっているかも?

GB。

あまりよくわかりません。基本的にFB (外野が触った)でもPU (内野が触った) でもLDでもない、みたいな感じで消去法で決まっているような気もするので、多様すぎてもうちょっと細かくわけないと難しいでしょうか。

2017年12月23日土曜日

xwOBAの中身拝見

xwOBAの記述に関して、幾つかの記事が正確ではないのでは的なツイートがちょっと前にTLに流れていて記事に気づいたので今回はxwOBAについて。

http://column.sp.baseball.findfriends.jp/?pid=column_detail&id=097-20171017-22
https://www.baseballchannel.jp/mlb/41406/
https://full-count.jp/2017/11/22/post94206/

これらの記事ではxwOBAはコンタクトの質を測る指標的な説明がなされていますが、実際にはコンタクトの質も利用しますが、それに加えて非コンタクトの打撃結果を利用している指標です。これはStatcastのデータを利用してMLBが公開しており、現在主流の打撃指標であるwOBAの派生の一つと言っていいと思います。wOBA自体わからん!という場合、1.02の記事などを参照願います。
http://1point02.jp/op/gnav/glossary/gls_explanation.aspx?eid=20004

xwOBAのMLB.comの用語集での説明が↓にあります
http://m.mlb.com/glossary/statcast/expected-woba

まずwOBAについて説明されています。やや見づらいのでまずざっくりした構造にすると以下のようになります。

wOBA = [wOBA分子] / [wOBA分母]

ここで、分子は以下を含む。
非故意四球の係数 x 非故意四球の数 +
死球の係数 x 死球の数 +
単打の係数 x 単打の数 +
二塁打の係数 x 二塁打の数 +
三塁打の係数 x 三塁打の数 +
本塁打の係数 x 本塁打の数

また、分母は以下を含む。
打席数 +
非故意四球の数 +
犠飛の数 +
死球の数

分子には得失点の増加に関連する主要な打席結果が含まれています。それぞれのイベントの係数は、イベントごとの得点期待値の大きさから決定されており、具体例としてはNPBでの上記の1.02での解説を参照のこと。分母はなんかややこしい感じですが、要するに打数 (PA) だと思ってもらえば良いと思います。

さて、ここまではxwOBAの基となるwOBAの説明でしたが、MLBの用語集ではxwOBAについて、打球に関連する結果では実際の結果ではなく、打球データから期待される結果を使うと説明されています。ここで用いる打球のパラメータとしては、打球の速度と角度を利用しています (こことこれ以後では、「角度」は基本的に地面に対する角度のこと。右に打つかとか左に打つか的な左右の角度ではないです)。また、四球、死球、三振に関しては各選手の実データを用いると説明されています。つまり、仮に打球を150個飛ばした打者を考えて、分子を書き改めると、
非故意四球の係数 x 非故意四球の数 +
死球の係数 x 死球の数 +
打球1の期待される価値 + 打球2の期待される価値+ .... +打球150の期待される価値
となります。

四球と死球は分子にも分母にも含まれており、xwOBAでもwOBAでも同様に考慮されていることがわかります。三振については、分母には打席数が入っており、これは三振の数を含んでいます。分子には三振の値は指定されていませんので、増えようが増えまいが0です。分母は増えるので結果、三振が増えるとxwOBAの値は (wOBAでの値と同じだけ) 低下します。イメージとしては、分子では三振の係数が0となっていると想像すればいいかもしれません。

というわけで、打球以外の主要な打席結果も含まれていることが確認できました (注1)。

そもそも、xwOBAが何の略語か、ということを考えると、これらを含めることは必要なことだったと思われます。xwOBAはexpected wOBAの略であり、「本来あるべきだったwOBA」のような意味合いになっています。このため、wOBAが含んでいるイベントであり、またかなり大きい影響を持つ四球や三振を含めないと、あるべきだったwOBAとはとても言えないような指標になるはずです。

ついでなのでMLBとしてはこのxwOBAで何を測定したいと考えているか、あるいは実際の打球の価値がどんな感じになっているかについて、もうちょっと説明します。

wOBAとxwOBAの違いは、打球の評価に打撃結果を使うか、打球の質で結果を予測して使うか、の違いであり、これによって打者や投手の技術をより直接的に測定したい、という意図があるようです (注2)。例えば、打球がフィールド内に飛んでしまえば、その結果は守備などの影響が大きいため、いい当たりを飛ばしてファインプレーでアウトにされても、内野へのポップフライを打っても、取られてしまえば等しくアウトになってしまいます。ここで、打球が発生したところまでが打者や投手の責任範囲だと考えて、打球の速度と角度を打球の質に応じて、それに妥当な価値を与えることができれば守備などの影響を取り除くことができます。

具体的な計算例で確認してみます。下はStatcastデータにおける、とある試合での結果の一部で、wOBAとxwOBAの計算に関連する部分だけ取り出しました。例えば、投球でも打撃結果を生じなかったものは除いています。wOBA値はイベントのwOBAでの計算での価値 (の十分良い近似) を、推定wOBA値は、打球の速度と角度からMLBAMが推定した打球の価値を示しています。
図1. xwOBA計算に関連する項目の具体例

wOBAとxWOBAで与えられる価値は似ているものもあれば、かなり差がある打球もあります。例えば、結果の上から2行目 (AB_#17) では単打が記録されていますが、これはwOBAでは単打の得点期待値から0.9の価値があると計算され、xwOBAでは0.726と計算されており、少し評価が抑えめになっていますが概ね一致しています。

wOBAとxwOBAで大きな違いが見られるのは下から3行目 (AB_#22) で、これは比較的強いあたりのライナー性の打球が、野手に取られたためにアウトになったというイベントです。wOBAではこれはただのアウトとして価値を0としていますが、推定wOBAでは0.667であり、AB_#17の単打とほとんど同じ価値を認めています。同じアウトでも、下から4行目では、角度も上がり過ぎで、速度もそれほどではなく、推定wOBAでも0.108と、wOBAの0とよく似た値になっているのとは対照的です。

実際に投手のxwOBAをStatcastデータから計算してみます。wOBAを計算するときには、定義に従ってwOBAの値を足して分母で割ってやれば出てきますが、xwOBAでは推定wOBA値をそのまま使うことはできません。これは、推定wOBA値は打球に対してのみ適切な数値を割り当てているためです。xwOBAを計算するためには打球 (type = X) では推定wOBA値を、それ以外ではwOBA値を持つような列を作り、それを使って計算すれば良さそうです。これが上の図1の右端のxwOBA値。

こちらの計算結果と、baseballsavantで検索して得られた値を比較してみます。下は、savantでxwOBAを投手ごとに調べた結果 (500打数以上の上位15人)と、それらの投手に関してこちらでの計算した結果を並べました。そのままコピーしたわけではないことをアピるために桁数をあえて変えています。
図2. 2017MLBにおけるxwOBA上位15名 (500PA以上)

ちゃんとあっているようなので、基本的にはここで示した計算方法と同じことをしていると思われます (注3)。

もう少し詳しく、wOBA値と推定wOBA値を比較してみましょう。下は、打球を位置ごとにプロットし、それぞれの打球の価値を色で示しています。色と数値の対応関係については図の右のゲージを参照。打球が多すぎると見づらくなるので適当な期間だけに絞っています。
図3. 野手が打球を捕った位置と打球価値評価の関係

内野と外野の間と思われる領域 (hc_y 100 ~ 150あたり) で値の大きな違いが見られます。wOBAではこの部分で高い価値になっており、外野手の定位置あたりの打球 (hc_y 50 ~ 100あたり) に比べて高いですが、xwOBAでは比較的位置に関係なくそこそこ高い数値で評価されているようです。xwOBAでは、野手のいないところに打球を打つというようなスキルが存在しない、あるいはあっても小さい場合にどうなるかを推定している感じです (注4)。

下はそれぞれの打球の速度、角度についてプロットし、やはり価値を色で示しています。
図4. 打球の速度+角度と打球価値の関係

全体的な傾向としてはよく似ており、打球速度100以上、角度が25~37.5あたりの非常に価値が高い部分 (いわゆるバレル; 注5) と、その下から打球速度60で角度25くらいのあたりへ繋がっていく、比較的価値の高いベルト状の領域 (ほとんどは単打; 注6) と、それ以外の価値が低い領域、の3つの領域が認識できます。しかし、xwOBAではこれらの領域の境界で数値がなだらかに変化する点に差がありそうです。この部分を強調するために打球価値0.3以上0.89以下の打球だけに絞ると以下のようになります。
図5. xwOBAにおける中程度の価値を持つ打球の速度+角度

wOBAではアウトが0、安打が0.9以上の価値になるので、この区間には打球が存在しません。一方、xwOBAではバレルの端や、バレルの下のベルト領域、またその周辺部に多くの打球が存在しています。xwOBAではバレルとベルトの周辺では、離れていくほど価値が低下している様子が見て取れます。また、ベルト領域は基本的に0.9以下の数値になっており、少なくとも該当期間では全ての打球が残っています。これは、xwOBAでは単打性の当たりで運悪くアウトになった打球の価値を認めるのと同時に、単打になりそうな打球が運悪くアウトになる可能性も考慮するため、このゾーンでは0.9より低くなっていのでしょう。

また、図4をみるとwOBAでは価値が低い領域 (例えば打球速度50で角度-50 ~ 50など) でも、価値の高い打球がまばらに存在していますが、xwOBAでは見られません。これらの打球は恐らく内野安打やポテンヒットで、xwOBAではこれらを発生させた打球の価値はかなり低く評価されているということです。xwOBAでは内野安打やポテンヒットが無視されているかというとそういうわけではなく、このような打球がヒットになる確率が低く、類似の打球で平均的に価値をわけるとその値が小さくなっているのだと思われます。これは、既に説明した図1で示した具体例の下から4行目の値などからも確認できます。このような評価基準では、とにかくバットに当てたことが三振よりは高く評価されるようになります。下図は上の図で価値が0.05以上のものだけをプロットしています。
図6. 0.05以上の価値を持つ打球の速度+角度

wOBAの計算ではアウト (価値0) が全て除かれますが、xwOBAでは結構広い領域が残っています。xwOBA値0.5未満の打球の分布をヒストグラムと密度分布で示します。
図7. xwOBAにおける低価値打球の分布

価値の低い打球が多く存在してることがわかります。調べた期間内では価値0の打球は存在せず、とりあえずバットに当てれば価値は正の値にはなっているようでした (注7)。実際には、ピークとなっている0.1前後などは0みたいなものだと思いますが。

この、とりあえず前に飛ばせば三振よりはマシ、というのは直感的にも理にかなっているような感じがしますし、良い点でもあるわけですが、現状では悪い点とも関連があります。問題としては、内野安打は足の早い選手で起こりやすく、全打者に平均的に起こるわけでは無いわけですが、走力を無視しているために、走力と無関係に内野安打の期待値を割り振ってしまっています。内野安打に限らず走力の無視はxwOBAの問題点となりうる部分で、Craig EdwardsはxwOBAはwOBAと比較した時に、走力の高い選手を低く、走力の低い選手を高く評価するバイアスがあると示しています。
Craig Edwards, How to Beat Statcast’s Hitting Metric, Fangraphs, 2017.
https://www.fangraphs.com/blogs/how-to-beat-statcasts-hitting-metric/
それなりに影響の大きいバイアスかもしれないと個人的には思えます (注8)。

まとめると、xwOBAは:

  1. (wOBAと同様に) 打席結果を全体的に評価する
  2. 打球の関連するイベントでは結果を切り離して、角度と速度から推定した期待値を利用する。これは守備など、打球が発生した後の、打者や投手がコントロールできない要因を排除する意図がある
  3. それ以外ではwOBAと同じ数値を利用する
  4. 現状では走力を考慮していないのが欠点かもしれない

といったところです。
<参考>
Statcast search@baseballsavant
https://baseballsavant.mlb.com/statcast_search
____________________________________________________________________
注1.
ちなみに少なくとも元記事の一つでは、KluberのxwOBAが低いことの大きな要因は空振りが取れることだとかなりはっきりと書いています (7番目のパラグラフ)。
https://www.mlb.com/news/statcast-breaks-down-2017-cy-young-finalists/c-261136682

注2.
おそらく打者に関しては、実際に年度間相関はwOBAよりも高いようです。
Craig Edwards, What Can Statcast Tell Us This Early in the Season?, Fangraphs, 2017.
https://www.fangraphs.com/blogs/what-can-statcast-tell-us-this-early-in-the-season/
このことは本人の能力と無関係な影響を取り除けている可能性を示唆していますが、それが指標としていいかどうかはまた別の問題。

注3.
もしかしたらちょっと違うかもしれないのは、ここではイベントが発生した時の投球をした選手にイベントを割り当てていますが、これはMLBの計算とは異なる可能性があります。具体例で示した1番下の行ではAJ Coleが四球を出したことになっていますが、途中までScherzerが投げて複数ボールを出しているため、公式記録ではScherzerの四球になっていると思います (ちなみに2017/9/30の試合)。ウチの計算ではそのへんはルールを良く知らないので対応していませんが、MLBがStatcastの計算でちゃんと対応していれば、ここでの計算と厳密には一致しません。そうそう起こることではないので、ほとんど影響は無いはずですが。他にもこちらで思いつかない細かいルールがあるかも。

注4.
↓の4, 5パラグラフ目にspray angleに関してまとまったコメントあり。
Tango Tiger, Statcast Lab: Was Collin McHugh the unluckiest pitcher in MLB in 2016?, 2016.
http://tangotiger.com/index.php/site/comments/statcastlab-was-collin-mchugh-the-unluckiest-pitcher-in-mlb-in-2016#comments

注5.
Tango Tigerによるバレルの定義は正確には
where (launch_speed * 1.5 - launch_angle) >= 117
and (launch_speed + launch_angle) >= 124
and launch_angle <= 50
and launch_speed >= 98

Tango Tiger, Statcast Lab: Barrels, 2016.
http://tangotiger.com/index.php/site/comments/statcast-lab-barrels

用語集はココ↓
http://m.mlb.com/glossary/statcast/barrel

注6.
打席結果ごとに角度、速度でプロット。
併殺打が打球タイプごとに細かく分けられているので注意。
2017における打球によって生じた各イベントのxwOBA価値の平均とSD。

HRと単打の平均価値は2.45倍で、wOBAでの2.1倍より高くなっている。HRの影響を高く評価するのは、打者では将来のwOBAとの関係を強くしそうですが、投手だと弱くなる可能性もあるかも。
Glenn DuPaul , Reinforcing the power of predictive FIP, The Hardballtimes, 2012.
https://www.fangraphs.com/tht/reinforcing-the-power-of-predictive-fip/

二塁打と三塁打にほとんど差がないとか、バントで0.131の価値が認められているとか、色々興味深いです。二塁打と三塁打は本文でも書いた走力との関係でしょうか。まずはサンプル増やすべきでしょうけど。

分散が非常に大きいのは注目すべきでしょう。打席結果が打球の速度と角度以外の影響をいかに大きく受けているかを示唆しています。上のテーブルでは要約し過ぎでよくわからないので箱ひげ図で。丸は外れ値。
とてつもないバラツキの大きさだと言っていいでしょう。一応書いておくと、バラツキがあるからといってこのパラメータが駄目だとは必ずしも言えないはずです。

注7.
この期間にxwOBA値が0のものが無いのは偶然です (0はほとんど無いので、短い期間をてきとうに取り出した時に存在しないのはある意味偶然ではないですが)。2017全体で調べると価値0とされている打球が13個ありました。一つのグループは、打球の角度か速度がNAになっている打球で、これらは5つありました。これらは全てバントして内野安打になったケースでwOBAでは価値は0.9になっています。これ以外の残りの8つは角度67前後, 速度75弱ぐらいで、MLBAMが打球価値を決める時のデータでこの辺の打球が全てアウトだったんだろうなあと想像。

注8.
wOBAと一致しないから駄目かというとそうとも言い切れない。足の速い選手は内野安打で単打を増やしたり、外野への打球で1つ先の塁を奪って2塁打を増やしたりできますが、こういう足で稼いだ打球が持つ走者を進める効果は、それぞれ他の単打や2塁打より低いはずで、wOBAが過大評価している言えなくもない。逆に足の遅い選手だと、二塁打と同じぐらい走者を進める効果のある打球が単打になって、過小評価されているはず (ただし、少なくとも後者に関しては、以前アマダー (楽天) の年度成績をぼんやり眺めて見積もった感じでは影響はとても小さい気がしている)。

一応書いておくと (2回目)、xwOBAに問題が無いと言っているわけではなくて、その理由はwOBAの数値と一致しないからではなくて、均等に割り当てるべきでないものを均等に割り当てており、かつ、それがまあまあ大きな影響がありうることと考えたほうが適切だろう、ということです。

それ以前に投手では、wOBAが前提としている平均的な得点環境が成立しないことが多いので、wOBA系の指標使ってもあまり旨味 (得失点への変換) が無いような。コンタクトを考えるならxwOBAcon (はじめに引用した日本語の記事がxwOBAだと思っていたもの?) にしてしまうほうがわかりやすいと思う。
Tango Tiger, Barrels and launch characteristics, Or, what about Baez v Kershaw?, 2016.
http://tangotiger.com/index.php/site/article/barrels-and-launch-characteristics-or-what-about-baez-v-kershaw

2017年12月16日土曜日

StatcastデータのHRが2本多い件

今回はstatcastデータで見られるデータの重複について。まれなので、ほとんどの場合、正直どうでもいいのですが。

前回過去3年分のstatcastデータをシーズン終了まで集めたので、ちゃんと揃っているか確認するため、わかりやすいところで本塁打をfangraphsの記録と比較したんですが、なぜか15と16は1本ずつ本塁打が多い。
手元の集計だと、
2015  4910
2016  5611
2017  6105
https://www.fangraphs.com/leaders.aspx?pos=all&stats=bat&lg=all&qual=0&type=8&season=2017&month=0&season1=2015&ind=0&team=0,ss&rost=0&age=0&filter=&players=0
データはbaseballr packageを使って集めているのですが、ダウンロード過程のミスではないようでした (baseball savantの検索で数値を出しても多くなっている)。

前々からデータの一部で重複を起こしているようだったので、これじゃないかと調べてみると、重複っぽい本塁打が2つ (トータル4本) ありました。

一つはDavid Freeseの'15 9/27の本塁打。

同じ試合の5回裏に全く同じ速度・角度の本塁打が2本あることになっています。

もう一つはChris Coghlanの'16 9/17の本塁打。

たぶんこれらが原因だろうと思います。

game_pk (試合のID), at_bat_number, pitch_numberでを使うと、理屈上は1球ごとのIDが得られるはずだと思うので、これを使って重複しているデータを調べると、重複は300球 (トータル600) ありました。200万球以上あることを考えると、かなりまれだと言っていいと思います。 3つ以上の重複を起こしているデータは無し。イベントの内訳としてはこんな感じ (600より明らかに少ないのはイベントが記録されていない重複がほとんどであるため)。

個人の公式記録的なものをどうしても正確に計算したいときには、重複しているイベントは除くような処理が必要になるようです。しかし、微妙に厄介なことに、一部のパラメータはこれらの重複したデータで数値が違うため、どちらを除いていいのかよくわからない。しかし数が少ないので、大抵の目的ではあまり考えないで誤差だと割り切れば良さそう。

<参考>
Statcast Search@baseballsavant
https://baseballsavant.mlb.com/statcast_search

2017年12月9日土曜日

HRの出やすさのシーズン内における変化

今回は主に、MLBにおける1年間でのHRの起こりやすさの変化を見ていきます。またしてもJim Albertからのパクリです。
https://baseballwithr.wordpress.com/2017/12/04/exploring-2017-home-runs-using-retrosheet-data/

Retrosheet2017が公開されたということで、AlbertはHRに関連した図を3つ示してくれているのですが、そのうちの一つが1年間の中でのHR頻度の変化です。
図1. HR/打数の2017 MLBにおけるシーズン内変化。1日ごとにHR/打数を計算してプロットしている。横軸の数値は月を示す。

HR/打席はシーズンの中頃にピークとなり、初めや終わりでは低くなっていました。4月からピークへの変化量の大きさは相対値で15~20%程度です。結構大きな変化と言えるのではないでしょうか。Albertはこのことが気候 (つまり温度) によるかもしれないと指摘しています。温度が上昇すると空気の密度が下がるなどの影響があるので、その分だけ飛距離が伸びるというわけです。

図1ではHR/打席を使っていますが、打席に含まれる他のイベントの確率の変化の影響も受ける可能性があるので、FR/打球で同様のプロットをしてみます (注1)。
図2. HR/打球の2017 MLBにおけるシーズン内変化。横軸の数値は月を示す。

図1と傾向はほとんど変わりませんでした。

温度による打球の飛距離への影響については色々と調べられています。ピークの高さがこれまでの結果から説明できそうか確認してみましょう。

Alan Nathanは2009-2010におけるホームランのHITf/xデータから、温度と打球距離には強い直線的な関係があり、華氏で10度 (10F) 変化するごとに2.5フィート変化することを示しています。また、2.5フィート (≒ 75 cm) の距離の上昇と低下は、それぞれ大体6%程度のHRの上昇あるいは低下に繋がるようです (注2)。
Alan Nathan, Global Warming and Home Runs: Is There a Connection?, Baseball Prospectus, 2012.
https://www.baseballprospectus.com/news/article/17249/baseball-proguestus-global-warming-and-home-runs-is-there-a-connection/

米国での気温は、DCを例に平均気温を見ると、
https://weather.com/weather/monthly/l/USDC0001
7月にピークとなり、4月から20F以上上昇するようなので、予測としては距離にして5フィート、本塁打数にして12%より少し高い程度の上昇となり、図1で見えたピークでの変化量とまあまあ一致しています (タイミングちょっとずれてるかも?)。

図1からさらに調べる事として、Albertは他の年度も調べてみるかもね的なことを書いていますが、こちらで勝手にやってしまいます。2013年以後について調べてみました。
図3. HR/打球のMLBにおけるシーズン内変化。横軸の数値は月を示す。縦軸の数値はそれぞれ異なることに注意。

図3を見ると、2017年と同様、各年でHR/打球はシーズン中で一定というよりは、かなり変化しているようです。各年度内での変化としては、
13: 6月頃からHR/打球が低下して、低いまま。
14: シーズンの初めと終わりが低い。6月頃にもやや大きな落ち込み。
15: 7月以後に上昇、これは5年間で2015だけ。最後少し落ちますがそのまま比較的高い状態で終了。
16: 今年とよく似た傾向。
といったところでしょうか。ただし、16, 17シーズンでも小さな中盤の低下が観察できます。原因はちょっとわかりません。

このようなシーズン中での変化は、13-17年の結果を一つの図でまとめた、長期間の単純なプロットである下の図では長期変化に埋もれて確認できません。
図4. HR/打数のMLBにおける長期変化。横軸の数値は年を示す。

図3の結果から、似たような図を作っても年度によって、必ずしも17年のようなきれいな逆U字型になるわけではないようです。もちろん、これ自体は温度によって打球の飛び方が変化することと矛盾するわけではありません。HR/打球に影響を与えうる要因は温度だけではないため、シーズン中の特定の時期から何らかの要因が強く働くようになると、形状は逆U字型から乱れるはずです。逆に言えば、16, 17年ではシーズン中は温度以外の要因がかなり安定していた、という可能性を示唆しており、むしろきれいな逆U字型になっていたことが驚くべきことかもしれません (注3)。

温度以外に影響を与えうる例としては、2015の後半から2016にかけての上昇について、Alan Nathanはボールの空力的な性質の変化が、HR/打球の上昇のかなりの部分を説明できる可能性を提示しています (注4)。
Alan Nathan, Fly Ball Carry and the Home Run Surge, The Hardball Times, 2017.
https://www.fangraphs.com/tht/fly-ball-carry-and-the-home-run-surge/

ついでに、HR/打球に関連しうるパラメータとして、Statcastデータから打球の速度と打ち出し角度の平均を1日ごとに同様にプロットしてみました。
図5. 打球速度のMLBにおけるシーズン内変化。
図6. 打球角度のMLBにおけるシーズン内変化。

HR/打球で見えたような逆U字型のパターンは見られないようです (注5)。

という感じでHR/打球の年度内での変化を見てみました。期間によって平均的に見て10%以上の変化があり、かなり大きな変化を示していました。これは温度変化から予想される変化量と概ね一致しており、年度内変化で見ると温度はHR/打球に対する主要な影響をもつ要因の一つのようです。HR関連のデータを見るときには、対象期間を合わせる、温度で補正する、といった処理が重要になりそうです。

<参考>
Marchi and Albert, Analyzing Baseball Data with R, 2013, CRC press.
Retrosheet http://retrosheet.org
Statcast  https://www.mlb.com
___________________________________________________________________
注1.
実のところ三振の割合が変化している可能性を考えたんですが、特に大きく変化はしていないようでした。
なぜ考えたかというと、基本的に投球速度がシーズン前半では遅い傾向があるため。これはよく知られていると思います。下はStatcastデータ (4月からシーズン終わり, 15-17) から、FF (フォーシーム) とFT (ツーシーム) の速度を一日ごとに平均をとって示しています。

ついでにFFの回転速度。
回転速度は年度間で形状が違うような感じです。回転速度は投手側の要因だけで決まることから、非常に強く制御できそうな変数であり、速度のようにパターンは年度間である程度一致しても良さそうなものですが🤔 回転速度は球速に比べて、ちゃんと測れて無さそうな外れ値っぽいものや、欠損値が圧倒的に多く、そのへんの事情が影響しているかもしれません (確認はしていない)。

注2.
本文では平均気温から計算していますが、もっと極端な温度変化ならさらに変化は大きくなる可能性が高いです。Nathanは30F (約0℃) から110F (約40℃)に上昇すると50%程度変化するだろうと書いています (当然、外挿気味ですが)。

注3.
実際には注目している時間スケールだと温度の方が影響が大きいので、他の要因がそれなりに大きくてもはっきり見にくいだけかもしれない。また、曲線は局所的な重み付け回帰なので、季節間での気温変化のような長期間続く要因の検出には適していますが、ランダムあるいは飛び飛びに出るような効果は検出しづらくなっているはずです。

注4.
他の候補としてはボールの反発係数や打者のアプローチの変化でしょうか。ボール関係はMLBは否定しているようですが。
Sean Cunningham, A Physicist Explains the Home Run Spikes From Babe Ruth to the 2017 World Series, RealClearLife, 2017.
http://www.realclearlife.com/sports/home-run-spikes-babe-2017/
Ben Lindbergh and MGL, The Juiced Ball Is Back, The Ringer, 2017.
https://www.theringer.com/2017/6/14/16044264/2017-mlb-home-run-spike-juiced-ball-testing-reveal-155cd21108bc
Ben Lindbergh, MLB’s #SlickBall and #JuicedBall Talk Is a PR Problem, The Ringer, 2017.
https://www.theringer.com/2017/10/31/16580364/world-series-astros-dodgers-slick-baseball-claims

ところで本文と全く無関係ですが、少し前のLindberghの記事も非常に良いです。適切な対照群を設定する重要性をよく示している (効果の区間推定が欲しいところですが)。
Ben Lindbergh, Shohei Ohtani and MLB’s Japanese Pitcher Fragility Myth, The Ringer, 2017.
https://www.theringer.com/mlb/2017/12/5/16737454/shohei-ohtani-history-of-japanese-pitchers-in-mlb

注5.
本当のところ、こういうざっくりした平均を測ってちゃんと比較できているのか正直あやしい。Statcastのデータはまだ問題が結構多いような感じで、解釈がなかなか悩ましい。

以前は、Statcastの打球データは欠損値が多く、打球タイプごとの欠損値の割合が結構変化しているため、長期間での単純な比較が難しい状態になっていたようですが、現在では推定値を無理やり入れて、一応欠損値はほとんどない状態になっているようです (手元のデータ [15-17の4月分は今年5月に取得、15-17の5月分は今年の6月に...] だと、ファールを入れないと3年で20ぐらい)。この辺の処理があやしい?
Rob Arthur, MLB’s Hit-Tracking Tool Misses A Lot Of Hits, The Five Thirty Eight, 2016.
https://fivethirtyeight.com/features/mlbs-hit-tracking-tool-misses-a-lot-of-hits/
Tangotiger, Statcast Lab: No Nulls in Batted Balls Launch Parameters, 2017.
http://tangotiger.com/index.php/site/comments/statcast-lab-no-nulls-in-batted-balls-launch-parameters

例えば、比較していいのかどうか悩ませる例としては下図。

15年9月と16年4月の打球を、年度ごと+打球種別 (ここではファールを含めていて、NAは多分ファール) にプロットしています。15年には75° (赤の破線) を超える打球は計測されていなかったのが、16年に入ると突然計測されるようになっている。

オマケ
いろいろな打撃成績の2017の1年間での変化も計算したので貼っておきます。コメントは特に無いです。
要約統計量は下の論文で色々と出してくれています。
Koch, B.L. and A.K. Panorska, The Impact of Temperature on Major League Baseball, Weather, Climate, and Society 2013 5:4, 359-366.
https://doi.org/10.1175/WCAS-D-13-00002.1


2017年12月2日土曜日

カウント毎の得点価値の解釈

3週にわたってカウント毎の得点価値の可視化をやってきましたが、最後によくあるカウント毎の打撃成績との関係を整理しておきます。

カウント毎の打撃成績で最もよく見るのが、そのカウントで生じた打席結果、例えば打率、を計算したものではないかと思います。下はMLB 2013-2016のカウント別打率。
表1. カウント別打率。1列目はストライクカウントを、2-4列の上の数字はボールカウントを示す。

だいぶ遠回りになりますが、まずはこれを例にカウント別成績の基本的な性質を確認します。

上の例では以下のことが見て取れます。

  1. ストライクが増えると打率が下がる。2ストライクで特に下がる。
  2. ボールが増えると打率があがる。

何となくいかにもありそうな話ですが、これらの事実はどのようにして説明できるでしょうか?打席結果の内訳がどう変化しているのか、もう少し細かく見ていきます。


打率は安打数/打席によって計算されますが、定義上3つの要因に分解できることが知られています (注1)
  1. 三振率
  2. HR以外の打球あたりの安打率 (いわゆるBABIP) 
  3. HR率
打率の変化は、これらの数値の変化によって起きているはずです。これらのボール・ストライクのカウントによる変化を調べるため、それぞれ表にしました。

表2. カウント別の三振/打席。

あたりまえですが三振はルール上は2ストライク以後でのみ記録されます。2ストライクで特に打率が低い大きな要因は、このルールのためです。さらに、ボールカウントが少ない状態では特に三振が起こりやすくなっているようです。これは投手がボール球を投げられる余裕があるためだろうと推測できます。この計算方法では、3ボール以外でボール球を投げて打者が振らなかった場合、打席結果が生じないので、計算に含められまずに次のカウントへ移行します。そのため、ボール球を投げられる有利さを表現している一方で、ボールカウントが増加するコストは考慮できていません。

次に、カウント別BABIPを示します。
表3. カウント別のBABIP。

1, 2ストライクではストライクが増えると低下し、ボールが増えると上昇していますが、変化としてはあまり大きくはないようです。0ストライクではなぜかこの関係があまりみられません (実はこれは過去に調べられた結果と一致していない, 注2, 注3)。

表1で0ストライクでボールカウントの増加に伴って打率が上昇していましたが、これらのカウントでは三振が記録されず、また、調べた年度ではBABIPはむしろ低下していたことから、打率の上昇は本塁打の増加で起きていることがこの時点で予想できます。

下は、比較的よく使われるHR率に関連した指標としてHR/打球を示しています。

表4 カウント別のHR/打球。

ありがたいことに非常にわかりやすい傾向が出ました。ストライクが増えると低下し、ボールが増えると上昇しています。変化は絶対値で見てもBABIPに比べて非常に大きく、相対的な変化率として見ると0→2ストライクで約半分に、0→3ボールで約二倍になっています。13-16年に起こった0, 1ストライクでのボールによる打率の変化は、本塁打率の変化の影響が大きいことがわかります。

ただ、この結果はそのまま解釈すると多少問題が起こりえます。これはカウントによって、打席に立っている打者の能力が異なる可能性があるためです。例えば、3-0で考えると、振らなくても最終的に四球になる確率がかなり高いため、それを捨ててまで打ちにいけるのは相当に優れた打者だと思われます。打力の劣る打者がストライクを見逃した場合、このストライクは打席結果を生じないので、計算には含められません。結果として、打席結果を残す打者は、打者全体よりも能力が高くなると予想されます。

確認してみます。下は、3-0からのスイング率とHR/打球の関係を示しています。データはStatcastからで、15-17のデータかを使用。

図5. 3-0におけるスイング率はHR/打球と相関する。直線は単純回帰直線を示す。

そこまで顕著な傾向とは言えませんが、やはり、HR/打球が高い打者がスイング率がある程度高い傾向があるようです。

下は、各カウントについて、打席結果が生じた、かつ打者がスイングした投球について、打者の能力から期待される打撃成績を示しています。
図6. 各カウントでスイングした打者の期待打撃成績。左のBS_CTがボール-ストライクカウント。HR_bbがHR/打球。

BABIPはほとんど変わりませんが、HR/打球は特に3-0においてはかなり高くなりました。0-0と比較した時の、3-0で計測されたHR/打球の高さ (もちろん打率も) は、カウントの効果に加えて、このサンプリングバイアスの影響があり、バイアスの影響が30%程度、という感じでしょうか。 実際には投手の能力もバイアスがある可能性がありますが、どうやらHR/打球やBABIPについては影響はほとんどないです (注4)。

ここまでの結果をまとめると、カウント別打率においては、
  1. 2ストライクでは三振が記録されるので、打率が大きく下がる。
  2. HRとBABIPはおそらく全体的に影響を与えていて、どちらかというとHRの変化の影響が大きい。
  3. ただし、HRについてはバイアスが起こりやすいので要注意
といったところです。

ここまでのことから、カウント別の成績には、野球のルールの定義上、いくつかのイベントの起こる確率が全く異なること、あるいは打席結果を生じない場合は計算上カウントされないためにバイアスが生じやすいこと、などが大きく影響を与えていることがわかります。また、打席結果を生じない場合はボールやストライクは無視されることも重要な性質かもしれません。

同様に、カウントで頻度が大きく変化する特定のイベントとしては、三振以外に四球があります。下は、カウント別の出塁率を示しています。
表7. カウント別の出塁率。

0から2ボールの出塁率は打率 (表1) とほとんど変わりませんが、3ボールでは四球が記録されうるというルールによって、数値が大きく変化しています。

いろいろな打撃成績を表にまとめてみました (注5)。

表8. カウント別の打撃成績のまとめ。

三振と四球 (BB, IBB) が記録されうるかどうかによって、カウント別の成績が大きく影響を受けるというのがわかるのではないかと思います。また、故意四球が出るのはほとんど3-0からであり、3-0からの出塁率が極端に高いのは、この影響がありそうです。

これまでよくあるカウント別打撃成績の計算を見てきました。これを、カウント別得点価値の計算過程とを比較すると、一つ大きく違う点としては、得点価値の計算ではそのカウントを経由した打席における最終的な結果を評価している、という点が挙げられます。このような、最終的なイベントを考慮する計算方法では、特定のカウントでのみ起こる三振や四球の影響も、どのカウントでも取り込むことができます。また、見逃した投球を含めた全ての投球を評価対象にしているため、打席結果に直接関係しない投球も評価でき、また、ややサンプリングバイアスが生じにくくなっているはずです。

もちろん、あるカウントから最終的にどうなったか?ということを計算するのは、別に得点価値だけでなく、もっと一般的な打撃成績でも計算が可能です。実際の所、上で計算したタイプのものに比べると珍しい気がしますが、たまに見かけるのではないかと思います。

というわけで、各カウントからの最終的な打席結果を集計してみました。

表9. 各カウントにおける最終的な打撃結果のまとめ。

この場合、最終的な結果を計算するため、0ストライクでも三振が記録されますし、0ボールからでも四球が記録されます。全体的に、カウント毎の個性は、上で計算したカウント別の打席結果の計算よりも、小さくなっています。

カウント毎の打席結果に対する2つの計算方法の違いを見てきました。これらはどちらが優れている、というよりは、目的が違う、ということだろうと思います。カウントによって、その時にどういう打席結果が起こったのか、を考えるのであれば前者えばいいでしょうし、最終的に各イベントの頻度がどう変わったか、ということを考えたいのであれば、後者の計算方法を採ったほうが良さそうです。問題は、自分が何を知りたいのか、ということだろうと思います。

さて、本題は、カウント毎の得点価値とよく見る打撃成績との関係がどうなっているのか、ということでした。基本的には、表9のwOBAが、先週まで計算していた得点価値とかなり近いものだと思います。大きな違いとしては、得点価値は「状況に中立」ではないというぐらいでしょうか (注6)。サンプルサイズが十分に大きければほとんど同じと言っていいと思います。個人成績に得点価値を適用する場合にはサンプルサイズがそれほど大きくはならないので、本人の責任とはみなしにくいような、状況からの影響が大きいかもしれません。

<参考>
Marchi and Albert, Analyzing Baseball Data with R, 2013, CRC press.
Retrosheet http://retrosheet.org
Statcast  https://www.mlb.com
_________________________________________________________________________
注1.
Jim Albert, A Graph of a Batting Average, 2015.
https://baseballwithr.wordpress.com/2015/01/05/a-graph-of-a-batting-average/
このエントリで示したHR率やBABIPは向こうの計算方法には合わせていないですが、だいたい同じようなもののはずです。

注2.
実はMLBの08-10のデータを使った過去の報告では、0ストライクでもボールが増えると上昇し、1, 2ストライクよりも高いというが確認されています。
Derek Carty , How much do counts affect BABIP?, The Hardball Times, 2010.
https://www.fangraphs.com/tht/how-much-do-counts-affect-babip/
13-16のBABIP計算結果がこの記事の結果と0ストライクで一致しなかったので、これの再現を試みました。08-10の途中まで、ということだったので、近づけるために08-10全体のデータで計算した結果。
数値はリンク先の記事と結構違いますが、傾向は概ね再現できていると思います。13-16と08-10で結果が一致しなかったのが、そもそも効果が小さいのでサンプル数が足りなくて一致しなかったのか、あるいは傾向自体が変化したのか、不明です。もっと長く傾向を確認したほうが良さそうです。

向こうの記事とコチラの再計算のBABIPの値が多少違う原因は謎です。向こうの計算だと全体の平均が0.306になっているんですが、これはFangraphsの数値と比べると、ちょっと高すぎる。定義が違うとか、投手を除いている、とかかもしれない。
http://www.fangraphs.com/leaders.aspx?pos=all&stats=bat&lg=all&qual=0&type=8&season=2010&month=0&season1=2008&ind=0&team=0,ss&rost=0&age=0&filter=&players=0
こちらの計算方法はFangraphsのものに従い、投手も含めており、08-10の全体では0.299となり、また、個人成績を計算するとFangraphsのものと一致することを確認済み。

注3.
NPB2015での結果は、そすだんさんがツイートしてくれています。
https://twitter.com/sos_mei/status/837702165669916672

注4.
図6の投手版。
K/ABはちょっとバイアスめいたものがあるかもしれない。ただし、ここでは図5と同様に打者がスイングした場合に絞っているので、全体的な傾向から乖離しているかも。いずれにせよ、表2のボールカウントの増加によってK/ABが高くなっていく効果の大きさを考えると、効果全体に占めるバイアスの割合はかなり小さいでしょう。

ついでに書いておくとウチのコードでは、Statcastデータを使ったPAとABの集計は少し誤差が生じています。ほとんど影響は無いと思いますが。

注5.
ごくごくまれに、1ストライクから三振が記録されたり、2ボールから四球が記録されたりしています。これが試合中に勘違いが起きたためなのか、Retrosheetがおかしいのか不明。実は4ボールからプレイが行われていることになっている打席もある。まあ、誤差。表8と9の3-2の結果がごくわずかに一致しない (理屈から言うと一致するはず) のも、多分こういうよくわからないイベントのせい、だと思う、多分。

注6.
一応「状況に中立」かどうか、という意味をざっくり書いておきます。
下は、とあるイニングでの得点価値の計算例を示しています。

左の2列: 打席開始前と終了後のランナーとアウトカウント (110 1であれば1アウト1, 2塁)
イベント: 打席結果
RE_前: 打席開始前のランナーとアウトカウントから決まる状況の得点期待値
得点: その打席で記録された得点
RE_後: 打席終了後のランナーとアウトカウントから決まる状況の得点期待値
得点価値: [RE_後] +  [得点] - [RE_前]
データの1行目を例に説明すると、ノーアウトランナー無しから打席の結果がアウト (Generic out) だったので、1アウトランナー無しとなり、得点期待値が0.468から0.247に低下しています。このアウトの価値は
0.247 - 0.468 ≈ -0.22
となります。

データ2行目でもアウトになっていますが、ここでの得点価値は打席前後の得点期待値がアウトカウントが増えたことで変化しており、得点価値は-0.152です。これは、アウトカウントという状況によって、アウトの価値が変動した例になっています。最下段のデータでもアウトになっていますが、ここでは2アウト満塁からのアウトで、得点価値は-0.707とかなり大きなマイナスになっています。これは、ランナーが溜まっていることで上昇した得点期待値がイニングが終わって0になったことを反映しており、ランナーの影響の大きさが見て取れます。

また、データの5-8行目で単打が3つ続いていますが、それぞれの得点価値は大きく異なります。これは様々な状況の違いによって生じている可能性と考えられます。例えば、各塁のランナーの有無やアウトカウントの違い、あるいはランナーが本塁に帰ってきたかどうか (ランナーの走力の違いかもしれないし、守備の違いかもしれない) などが原因として考えられます。
(実際には、打席の結果で考慮されていないような、打球における質の違いのせいかもしれなくて、この場合なら状況のせいではないと考えた方がいい可能性はある。)

wOBAは各イベントに関して、全ての記録された得点価値を平均化したものを重み付けに使っており、それぞれのイベントの価値はランナーやアウトの状況に関わらず一定で計算します。ここで扱った期間では、平均得点価値は単打であれば0.44、アウトであれば-0.253なので、実際に動いた得点価値とは関係なく、全てのイベントの重み付けにこの数値が利用されます。これが「状況に中立」ということです。