2014年5月7日水曜日

複数の可能性がある確率でのOddsRatioの使い方

前回に引き続いて、OddsRatioのお話

OddsRatioが勝率の違うチーム同士の対戦成績や、ある打者と投手が対戦した時の打率や奪三振がどの程度の確率で起こるのかを計算する際にとても有効であることについて書きました。

今回考えて見たいのは、確率の分岐先が複数存在する場合です。

確率の分岐先が複数存在する場合

現実の打席を考えると一目瞭然ですが、打席の結果は三振、単打、二塁打、三塁打、本塁打、フォアボール、デッドボール、とその分岐先は様々です。この場合にちゃんとOddsRatioが使えるの?というのが今回の疑問です。なぜこんなことを考えてるのかというと、この間紹介した記事の最後の方に意味深な記述があったからです。

…… I split each plate appearance into a “decision tree” of sorts, so that each time I used the Odds Ratio method, it was on an “A or not-A” set of outcomes, rather than “A or B or C or D”. In this case, that means I used pitcher and batter statistics to choose contact or no-contact, then if contact, home run or no-home run, then if no-home run, hit or not-hit, and so on. In the end, I came up with probabilities for each event that added up to 1.

……それぞれの打席を決定木に分割することにしました。したがって、oddsRatioを「A,もしくはAではない」という結果を持つものに用い、「AもしくはBもしくはCもしくはD」というものには使いませんでした。具体的には、ピッチャーがなげたボールがバットに当たるかどうか、に使い、もしあたったならそれがホームランになるかならないか、もしホームランにならなければヒットになるかならないか、と言った感じです。結局、全ての可能性の確率を足し合わせるとちゃんと1になるように考えたわけです。(訳適当)

最初読んだ時なんでこんな面倒な方法で確率計算をしてるんだろう?と疑問でした。だってOddsRatioを用いれば、各々の事象の起こる確率を合理的に算出できるんだから、あとは[0,1]のrandomな数字$x$をつくって

  1. $0<=x<P_a$ならaが起こる
  2. $P_a<=x<P_b+P_a$ならbが起こる…(以下同様
みたいにすればいいんでは?と思いませんか?そうすればサイコロ振るのも一回でいいし(決定木を用いると決定を行う際に毎回ふらなくてはならない)計算コストは減っていいじゃん!(と最初考えました)

実はこの考えは、分岐が2つ以上ある場合に対して用いると理論的におかしくなります。なぜかというと、実はOddsRatioを用いて計算した対戦した際のその事象が起こるを全て足しても1にならないからなのです。ちょっと具体的な数字で試してみましょう。

OddsRatioの欠点

今、2013年シーズン中にたまたま広島東洋カープ広瀬と横浜DeNA三嶋が対戦したとしましょう。この時に、三嶋がどのぐらいの確率で広瀬を三振に抑えるか、はたまたフォアボールを出して自壊するのかを知ることは、割合興味のあることです。下にあるのは2013年の広瀬、三嶋の成績とセリーグの打撃成績平均です。Field_Out,Field_Hit はバットにボールが当たりフィールド上でアウトになった数とヒットになった数を、Allは犠牲フライとバントを除いた打席数を表しています。

Field_Hit HR Field_Out K BB All
Batter(広瀬) 65 9 148 51 52 325
Pitcher(三嶋) 118 20 280 145 79 642
LG(2013年セリーグ平均) 263 29 617 225 116 1250

これではちょっと見にくいので、全打席数を分母とした各結果の起こる確率を求めて書き直します。すると以下のようになります。(この時P_bbやP_fhitとP_hrの和が出塁率や打率とは違うことに注意してください。打率は打席数から四死球を除いて除算した数値ですから、そもそも計算方法が違います。そのため今回の数値は打率よりも小さい値となります)

P_fhit P_hr P_fout P_k P_bb All
Batter(広瀬) 0.200 0.028 0.455 0.157 0.160 1.000
Pitcher(三嶋) 0.184 0.031 0.436 0.226 0.123 1.000
LG(2013年セリーグ平均) 0.210 0.023 0.494 0.180 0.093 1.000

広瀬が三振数は少ないのにフォアボールの稼げるタイプであること、三嶋が典型的なストライク入らないけどキレはいいから三振は取れる&一発病なのがなんとなくわかると思います。また当たり前ですが、それぞれの起こる結果の確率の和は1です。

ではこのデータを用いてそれぞれのOdds,OddsRatio,そして最終的に得られる確率P を出してみます。

Odds_fhit Odds_hr Odds_fout Odds_k Odds_bb All
Batter(広瀬) 0.250 0.028 0.836 0.186 0.190
Pitcher(三嶋) 0.225 0.032 0.773 0.292 0.140
LG(2013年セリーグ) 0.266 0.024 0.975 0.220 0.102
OddsRatio(each) 0.211 0.039 0.664 0.247 0.261
P(each) 0.174 0.037 0.399 0.198 0.207 1.016

全打席の2割がフォアボールとかえらいことになってるのは別として、根本的におかしいところがあります。よく見ると確率の合計値が1を超えてしまっています!!これはかなりどえらいことです。なんて言ったって今まで完璧にそれっぽい数値を出していたOddsRatioが突然確率がみたすべき「全ての事象の確率の総和は必ず1となる」を破ってしまっているわけですから。

応急処置としては、それぞれの確率を$1/All$倍すれば総和は1になるし比率は維持されるからいいんじゃないの、という方法も考えられます。がそんな取って付けたような意味のない式変形をしてしまうのも(式にはある程度の意味合いを持たせたいということなんですが)また考えもので、つまるところ結構困ってしまうわけです。

またこの値はいつも1を超えるわけではなく、場合によっては1を下回る場合もあります。いろいろな比率で試してみた結果、どうも投手と打者との率とに大きな乖離がある場合、極端に1を超えたり、0に近づいたりしてしまうようです。また打者投手の片方のパラメータをいじるだけだと、然程大きな変動をしないので、$P_{Batter}*P_{Pitcher}$のような相互作用の項の影響力が大きいのかなぁといった雰囲気はあるのですが、数式に書き下すと結構な量の式になってしまうので定量的にどのていどずれてしまうのかはわかっていません。

まあしかし現実に考えられうる極端な成績を代入しても、概ね$1\pm0.10$程度では収まるので、先の全体に補正係数を掛けてごまかすのもありかもしれません

それがどうしてもいや!と言う場合は先のブログでも紹介されていた決定木を用いる必要があります。それについてはまた次回。

0 件のコメント:

コメントを投稿