【後半】パークファクターの算出で大いに躓く②
Page content
前半からの続き。今回で実際にパークファクター(参考値)を算出する。
前半
追加する指標
得点パークファクター
東京ドームのパークファクターであれば、巨人の東京ドームでの成績、及び東京ドーム以外での成績、を用いて計算します。(ホームでの成績、ビジターでの成績ではない)
$\frac{本拠地での得点 + 失点 \div 本拠地での試合数}{本拠地以外での得点 + 失点 \div 本拠地以外での試合数}$
本塁打パークファクター
$\frac{本拠地での本塁打 + 被本塁打 \div 本拠地での試合数}{本拠地以外での本塁打 + 被本塁打 \div 本拠地以外での試合数}$
実装で躓く
前回、(妥協込みで)チームごとに、本拠地/非本拠地での試合数および成績を算出した。
今回はこれをもとにパークファクターを算出したい。
したいところだったが、またもデータ不足で悩まされることに。
問題
- 球場ごと打撃成績で
打点
は分かるが得点
が分からない - 球場ごと打撃成績で投手の打撃成績が含まれない
妥協
あまり妥協したくない問題ではあったものの、やはり取れないものは仕方ない。
本拠地チーム以外11球団の、該当球場での投手成績(失点)
を使おうかとも考えたけど、日本ハムや楽天が東京ドームを使ったり、阪神が京セラドームを使ったりもするので、どうやっても妥協は入ってしまう。
仕方がないので、以下の注釈をつけ、正確ではない参考値のパークファクター
として算出することにする。
- 本パークファクター(参考値)では、該当球場/非該当球場における、該当球場を本拠地とするチームの、打点に含まない得点(併殺の間やエラーによる得点など)は考慮しない
- 本パークファクター(参考値)では、該当球場/非該当球場における、該当球場を本拠地とするチームの、投手の打撃成績は考慮しない
本拠地か非本拠地かで取れる情報が変わるわけではないので、パークファクターの値自体にそこまで深刻な影響を与える妥協ではない…と思いたい。
実装
def park_factor(team_dic, hit_str, pit_str):
home_denominator = Decimal(team_dic['本拠地']['試合'])
visitor_denominator = Decimal(team_dic['非本拠地']['試合'])
if not home_denominator or not visitor_denominator:
return '0'
visitor = (Decimal(team_dic['非本拠地'][hit_str]) + Decimal(
team_dic['非本拠地'][pit_str])) / visitor_denominator
if not visitor:
return '0'
home = (Decimal(team_dic['本拠地'][hit_str]) + Decimal(
team_dic['本拠地'][pit_str])) / home_denominator
pf = home / visitor
return str(park_factor)
...
def update_team_park_records():
...
pf_list = []
for team_dic in team_list:
team = team_dic['チーム']
# team_dic['球場'] = park_dic[team]
team_dic['本拠地'] = park_dic[team][HOME_DIC[team]]
sum_visitor_dic = {}
sum_visitor_park_dick(sum_visitor_dic, park_dic[team], team)
team_dic['非本拠地'] = sum_visitor_dic
fix_rate_records(team_dic)
pf_list.append({
'球場': HOME_DIC[team],
'得点PF': park_factor(team_dic, '打点', '失点'),
'HRPF': park_factor(team_dic, '本塁打', '被本塁打')
})
結果
先に述べたように、妥協を孕んだ参考値であり、正確な値でないことにはご注意ください。
参考程度に。
最新は以下から閲覧できます。
おわり
色々妥協してしまったが、それらしい値を出すことはできた。
次はこれを使ってwRC+
を算出したい。やはり参考値にはなってしまうけど。