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



Page content

リーグ平均と比較したOPSにパークファクター補正を加えたOPS+を算出する。




OPS+は、平均的打者が100とし、それと比べて何%の得点応力を持つかを表す。


追加する指標

OPS+ (On-base Plus Slugging Plus)

  • 得点力の傑出度(パーセント)、平均的打者が100

計算式

$A \div 補正係数 \times 100$

$A = \frac{出塁率}{リーグ出塁率} + \frac{長打率}{リーグ長打率} - 1$

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


実装

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 ops_plus(hitter, league, cor_pf):
    lg_obp = Decimal(league['出塁率'])
    lg_slg = Decimal(league['長打率'])
    if not lg_obp * lg_slg * cor_pf:
        return '0'
    ops_plus = Decimal('100') * (Decimal(hitter['出塁率']) / lg_obp + Decimal(
        hitter['長打率']) / lg_slg - Decimal('1')) / cor_pf
    return str(ops_plus)

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



おわり

ここまで書いておいて何だが、結局wOBAの記事で書いた「長打力を過大に、出塁力を過小に評価する」というOPSの欠陥が解消されたわけではない。

結局の所wRC+の方がより参考になるかと思います。