【RCWIN, XRWIN】NPB(2019)セイバーメトリクス野手指標の算出⑥



Page content

得点力指標RC, XRに、リーグ平均と比較する観点を加味した、RCAA, RCWIN, XR+, XRWINを算出する。




追加する指標

今回算出するのは、RCおよびXRの応用指標。

RCAA/RC+ (Runs Created Above Average)

  • リーグの平均的打者と比較してどれだけ多くRCを稼いだか
計算式

$RC - リーグRC \times \frac{打席}{リーグ打席}$


RCWIN

  • リーグの平均的打者と比較して何勝多く貢献したか
  • RCAARPW(Runs Per Win)で割ったもの
計算式

$\frac{RCAA}{RPW}$

$RPW = 10 \times \sqrt{\frac{リーグ得点 + リーグ失点}{リーグ投球回}}$


XR+ (eXtrapolated Runs Plus)

  • リーグの平均的打者と比較してどれだけ多くXRを稼いだか

※ 関係ないですが、XRAA (eXtrapolated Runs Above Average) という呼び方はしないんですかね?そう呼んでるのを見たことないです。

計算式

$XR - リーグXR \times \frac{打席}{リーグ打席}$


XRWIN

  • リーグの平均的打者と比較して何勝多く貢献したか
  • XR+RPW(Runs Per Win)で割ったもの
計算式

$\frac{XR+}{RPW}$

$RPW = 10 \times \sqrt{\frac{リーグ得点 + リーグ失点}{リーグ投球回}}$


RPWってなんぞ…?

RCWINXRWINの計算式に出てきたRPW(Runs Per Win)。

これは、1勝積み上げるのに何点必要か、を表す値。

野球のリーグ戦においては基本的に「得失点差が10積み重なると、1勝上積みされる」という考え方(つまり、RPW=10)。ただこれはあくまで「基本的に」であって、打高投高などによって変化する。

それらを加味して、「統計学的に、該当リーグでは何点で1勝と換算するか」を表すのがRPWで、以下の式で表される。

$RPW = 10 \times \sqrt{\frac{リーグ得点 + リーグ失点}{リーグ投球回}}$

第二項の分数は、イニングあたりの得点と失点の合計(の平方根)、ということになる。点が入りやすいほど、1点が勝敗に与える影響は小さくなり、RPWは大きくなる。

ここでモヤモヤしたのは、交流戦は考慮しなくていいの?という点。

ただ、交流戦を考慮しなければ、リーグ得点とリーグ失点は一致するはず。$2 \times リーグ得点$とかにはなっていないので、交流戦も含めて正直に計算していいだろう、と判断しました。


実装

def rc_xr_plus(hitter, league, rc_xr, league_rc_xr):
    on_base = Decimal(hitter['打席'])
    league_on_base = Decimal(league['打席'])
    if not league_on_base:
        return 0, Decimal('0')
    rc_xr_plus = rc_xr - league_rc_xr / league_on_base * on_base
    return str(rc_xr_plus), raw_rc_xr_plus


def rc_xr_win(hitter, full_league, rc_xr_plus):
    league_pitcher = full_league['Pitcher'][hitter['League']]
    league_hitter = full_league['Hitter'][hitter['League']]
    outcounts = return_outcounts(Decimal(league_pitcher['投球回']))
    if not outcounts:
        return '0'
    runs_per_inning = Decimal('3') * (Decimal(
        league_hitter['得点']) + Decimal(league_pitcher['失点'])) / outcounts
    runs_per_win = Decimal('10') * math.sqrt(runs_per_inning)
    rc_xr_win = rc_xr_plus / runs_per_win
    return str(rc_xr_win)

おわり

RC系の指標とXR系の指標って並べて使う必要あるんですかね?改良というならXR系だけでいいような。



CodeCampGATE
CodeCampGATE