⚖️

イロレーティングにおいて勝率が五分五分ではない場合の計算方法

2022/09/19に公開

野球での選手間のイロレーティング適用方法を考える

課題

  • 勝率(対戦結果)が片方に偏っている(打率 2 割 5 分ぐらいが普通)
  • 試行(試合/打席)回数が人によって異なる(年数)
  • 同じレート変動率では、打者が負ける回数が多いため、試行回数が多いと好打者でもレートが下がり続ける

最適化のために試したこと その ①

感覚で係数を調整する

  • 練習試合を除外する
  • 四死球を除外する
    • 対戦成績的にはどちらかに軍配が上がるが、純粋な投手と打者の関係性に影響されない(投手の制球力に依存するところが大きい)
  • レート変動率を調整する
    • 打者が負けるパターンが多いので、負けたときの変動幅を小さく、勝った時の変動幅を大きく
    • 投手有利なので打者の変動幅に対する比率を抑える
//投手の勝ち
rateMap[store[row][col].player_id].battingRate =
  rateMap[store[row][col].player_id].battingRate - 4 * wba;
rateMap[store[row][col].pitcher_id].pitchingRate =
  rateMap[store[row][col].pitcher_id].pitchingRate + 16 * wba;
//打者の勝ち
rateMap[store[row][col].player_id].battingRate =
  rateMap[store[row][col].player_id].battingRate + 32 * wba;
rateMap[store[row][col].pitcher_id].pitchingRate =
  rateMap[store[row][col].pitcher_id].pitchingRate - 16 * wba;

最適化のために試したことその ②

期待値を求める

数あるデータの中から、平均付近にいる打者モデルをもとに、
その打者が平均を維持すると仮定する。

三振 振り逃げ 四死球 安打 ゴロ・フライ
打者から見た確率 0.512 0.048 0.048 0.195 0.243
レート変動 -2B +A +A +2A -B

レート上昇/下降の係数を A,B とおくと、平均を維持する場合の期待値は 0 であるから、

0.048 \times A -0.512 \times 2B + 0.195 \times 2A -0.243 \times B = 0.486A -1.267B = 0
A = 2.6B

つまり、打者に関してはこの比率でレート変動を行えばよい。

同様に、捕手の場合はこのような捕手モデルを使用し、

三振 振り逃げ 四死球 安打 ゴロ・フライ PB
捕手から見た確率 0.372 0.047 - - - 0.186
レート変動 +C -C 0 0 0 -2D
0.325 \times C - 0.372 \times D = 0

が成り立つので、

C \fallingdotseq D

と見做せる。

同様に、投手の場合はこのような投手モデルを使用し、

三振 振り逃げ 四死球 安打 ゴロ・フライ
投手から見た確率 0.406 0.047 0.171 0.233(50%/30%/6%/12%) 0.189
レート変動 +E 0 -F 1塁打のとき-F,2塁打以上は-1.5F E
-0.233(0.5+0.48*1.5)\times F -0.171\times F +0.406 \times E +0.189 \times E = 0.595 \times E -0.455 \times F = 0

同様に

1.3E \fallingdotseq F

と見做せる。

この比を用いてレート計算を行うと、
打者レートの平均: 1512、投手レートの平均: 1494、捕手レートの平均: 1515となった。

まとめ

イロレーティングにおいて、勝率の前提が五分にならない場合、構築したレート加減算モデルで平均的なモデルをもとに期待値0になるようなレート変動を行えば、ある程度確からしい結果を得ることができる。

Discussion