【wRC+】NPB(2019)セイバーメトリクス野手指標の算出⑦



Page content

wRCにパークファクターを加味し、リーグ平均と比較して打者の価値を表現するwRC+を算出する。




パークファクターも算出できたので、打撃指標wRC+を計算するプログラムを実装する。


追加する指標

wRC+ (weighted Runs Created Plus)

  • 1打席あたり得点力の傑出度(パーセント)、平均的打者が100
  • 打席あたりのwRCにパークファクター補正を加え、リーグ平均と比較する
計算式

$\frac{wRC\_pf \div 打席}{リーグ得点 \div リーグ打席}$

$wRC\_pf = wRC + (1 - 補正係数) \\\ \times 打席 \times \frac{リーグ得点}{リーグ打席} \div 補正係数$

※補正係数の算出は以下の記事に記載


実装

def correct_pf(hitter, pf_list):
    correct_pf = Decimal('0')
    for key, value in hitter.get('球場', {}).items():
        pf = pick_dick(pf_list, '球場', key).get('得点PF', '1')
        correct_pf += Decimal(pf) * Decimal(value['試合']) / Decimal(
            hitter['試合'])
    return correct_pf


def wrc_plus(hitter, league, pf_list, raw_wrc):
    if not Decimal(hitter['打席']) * Decimal(league['打席']):
        return '0'
    cor_pf = correct_pf(hitter, pf_list)
    correct_wrc = raw_wrc + (Decimal('1') - cor_pf) * Decimal(
        league['得点']) / Decimal(league['打席']) * Decimal(hitter['打席']) / cor_pf
    numerator = correct_wrc / Decimal(hitter['打席'])
    denominator = Decimal(league['得点']) / Decimal(league['打席'])

    wrc_plus = numerator / denominator * Decimal('100')
    return str(wrc_plus)

最新の成績は以下から閲覧できます。



おわり

自分一人で計算できるレベルの指標は、単独ではこれが一番だと思っている。




CodeCampGATE
CodeCampGATE