2014年4月18日金曜日

野球における打率とサイコロ

去年あたりから、プログラムの練習を兼ねて野球のシミュレータを作っています。
その時改めて野球の結果と偶然とか確率と言ったことについて考えた時に、ふと疑問に思ったことがいくつかあったので、この間Twitterでどばどばと適当に垂れ流した内容をもとにちょっと考えを練りなおしてみました。

1.打者の結果はサイコロとおなじなのか?


例えば出塁率.400のバッターが居たとして、そのバッターが10打席回ってきた時にヒットを打つ本数と、仮に10面あるサイコロが合ったとして(このような過程は乱数を用いれば作ることが可能です)、そのサイコロのうち1~4の面が出れば出塁とする場合とで厳密に言うとヒットの出方が違うのではないか、と言う疑問です。

ちょっとややこしいのですが、野球における打率や出塁率などの率系の指標はあくまで得られた平均値でしかなく、平均的にサイコロとおなじ割合でヒットが出るとしても、そのばらつきまでもおなじであるとするのには、大雑把には近似できるとしても厳密には異なるのではないかということです。
サイコロであれば、その時の出塁の数は二項分布で表現できます。一方現実の野球選手の出塁が決まる過程は、ピッチャーが投げた球がストライクになるかどうかとか、打った球がどこに飛んで行くかとか言ったもっと上位の過程の結果として表されるので、最も確率が高いのはサイコロで表した際の最尤値と一致するとしても、そのまわりの値を取る確率が先の二項分布で表される確率とくらべて高い、もしくは低い可能性は捨て切れません。


図1:N=50,p=0.30の二項分布(青色)と予想した現実の分布の違いのイメージ図。縦軸は確率。

とまあそんなことを考えていたんですが、いろいろと考えた結果これは間違いであるという結論に至りました。結論をいうと

もし図のような確率分布となるとすれば、おなじヒットを打つ能力を持つ打者が二人板として、序盤の打席でたまたまヒットを多く打った選手はもう一人の選手と比べて、その後ヒットを打つ能力が下がる必要がある。ということです。

普通に考えて、おなじ能力の選手が二人いればその二人が現在立っている打席でヒットを打つ確率は全く同じであると考えられます。したがって1打席だけの結果に注目するとその確立はベルヌーイ試行として表すことが出来ます。ベルヌーイ過程とは、コインを一枚投げた時に表が出ると1,裏が出ると0とみなす実験を行うことを意味します。そしてこのベルヌーイ過程がN回行われた時、出た表の数の合計を確率として表すと二項分布となることは証明されています。したがってこれを逆に考えれば、結果が二項分布とならない過程では、一回一回の打席の結果はベルヌーイ過程ではない他の過程によって決定されている事になります。

これは、過程が行われている時にバッターの持つ平均的な出塁割合 :p の値が変わらないということに矛盾するため、打席が増えるに連れて、過去の打席の結果により現在の打席のヒットを打つ能力が上がる、もしくは下がる事となり、これは直感に反します。
(ヒットを打ったからと言って次の打席は打てないだろうというのは、パチンコで負けたからと言って次の日勝てる確率が上がるわけではないことと同じですね)

ちょっとややこしいのは、この議論では、打者が仮に確定された真の実力pの確率でヒットを打てる、ということを仮定していますが、このpの値は必ずしも打率の値ではない(かもしれない)ということです。

ココらへんはベイズの定理が関連するので、どこまで考えるんぞという話であるうえに私自身しっかり理解できていない可能性が高いので微妙ではあるのですが、プロ野球の打者が持つと期待される打率の値は(恐らく)ある値p'を平均とした正規分布のような確率密度関数で表示できるとします。
次に今シーズンである打率pを残した選手が居たとして、その選手が持つであろう実力の打率qを推定することを考えます。

実際の打席に立つと、実際の過程をへることによるぶれが生じてしまうので、pからのずれが生じます。

これは表と裏が出る確率が1/2,1/2のコインを4回振っても毎回2枚が表になるとは限らないことと同じです。

普通に考えると真の打率はpであるとすればよい様に思うかもしれませんが、例えばpが極端な値.500をとった時のことを考えてみます。これは特に打数の少ない選手で起こりがちですが、たまたま数打席ヒットが多く出たからといって、その選手がイチローを超える打率を真の実力として持っているとは考えれない、せいぜい.300ぐらいであろうとかんがえると思います(普通は)。この作業が先のベイズの定理に当たる部分です。

ほとんどの選手は.250~.280ぐらいの間に真の実力があるとかんがえられますから、そもそも.500の実力を持つ選手は殆どいません。したがって、.500をシーズンの記録として残した選手のほとんどは.250~.280の平凡な実力を持った選手がたまたま運良くヒットが多く出た、と考えられます。これを数学的に調べようと思うと、選手がある真の実力を取る確率に、その実力を持ってシーズンを過ごした際に打率.500を取る確率を掛け算することで調べることが出来ます。これがベイズ的な打率へのアプローチです。

したがってシミュレータを作る際も、来シーズンの予想をするシミュレータをつくろうとするならば、このベイズから推定されたXを用いる方が信頼度が上がるのではないかと考えられます。

とはいえそのような処理をすると、例えば.350で首位打者を取ったようなバッターは「たまたま今シーズンは実力以上のちからが発揮されただけで、本当の実力は平均にもっと近い値に違いない」と推定されて平均へと回帰する圧力がかかりますから、全員の能力が平均化されシーズン予測の値も全チーム似たような得点となる可能性があるので、エクストリームな値が得られない分インパクトとしては小さいものになってしまうかもしれません。