概要

本稿はRを学び始めたプログラマが学習中に残したメモ書きです。

4回目の今回は、プロ野球の指標の1つ、XRっぽいものを自前で定義してみようとしています。

Rのバージョンは2.10.1。

@CretedDate 2012/05/10
@Env R2.10.1, Ubuntu10.04

利用データ

今回利用するデータは、その2で利用したものと同じく、2006〜2011年の過去6年分を用います。

XRBについて

XRの計算式は以下。

0.50*単打 + 0.72*二塁打 + 1.04*三塁打 + 1.44*本塁打
  + 0.34*(四球-故意四球+死球) + 0.25*故意四球 + 0.18*盗塁 - 0.32*盗塁死
 - 0.09*(打数-安打-三振) - 0.098*三振 - 0.37*併殺打 + 0.37*犠飛 + 0.04*犠打

三振や併殺なども加味された、そこそこに詳細な指標です。が、今回利用するデータはたった6年分なので得点との相関が低そうなこの辺りの値を使ってもうまく数字は出ないと思われます。

ので、とりあえず簡易版のXRRっぽいものの算出を目指してみます。XRBの計算式は以下。

0.50*単打 + 0.72*二塁打 + 1.04*三塁打 + 1.44*本塁打 + 0.33*(四球+死球)
  + 0.18*盗塁 - 0.32*盗塁死 - 0.098*(打数-安打)

必要なデータの用意

単打と四死球、打数-安打という3つの項目が新たに必要になる。その場で計算しても良いけど見やすいようにあらかじめ作っておく。

# 単打
team_stats["単打"] <- team_stats["安打"] - rowSums( team_stats[c("二塁打", "三塁打", "本塁打")] )

# 四死球
team_stats["四死球"] <- team_stats["四球"] + team_stats["死球"]

# 打数-安打
team_stats["打数-安打"] <- team_stats["打数"] - team_stats["安打"]

重回帰

lmを使って各データと得点の相関を調べてみる。試しに盗塁は除いたデータで実行。

lm( formula = team_stats[,"得点"] ~ ., data = team_stats[c("単打", "二塁打", "三塁打", "本塁打",  "四死球", "打数-安打")] )

上記を実行すると、下記のような結果になった。

今回の値XRRの値
単打0.50750.5
二塁打0.76950.72
三塁打1.74201.04
本塁打1.35521.44
四死球0.35890.33
打数-安打-0.0496-0.098

割といい線いってる数字になった。summaryを見てみると、決定係数も0.9406と高い。

微妙な点として、三塁打が本塁打より価値が高くなってしまっている。三塁打は出現率が低く、今回のデータでは1485回しか起こっていない(本塁打は8471)ので、数値がブレやすい。もう少し少ないデータを使った時は、マイナスになったこともあった。

面倒なので二塁打と三塁打をまとめて二三塁打として分析してみる。

# 二三塁打を生成
team_stats["二三塁打"] <- team_stats["二塁打"] + team_stats["三塁打"]

# 再度計算
lm( formula = team_stats[,"得点"] ~ ., data = team_stats[c("単打", "二三塁打", "本塁打",  "四死球", "打数-安打")] )
今回の値XRRの値
単打0.487230.5
二三塁打0.904610.72/1.04
本塁打1.281051.44
四死球0.357240.33
打数-安打-0.05289-0.098

まずまずの結果になってる気がする。

盗塁も入れてみる

盗塁や盗塁死は得点との相関が低い上に出現数も少ないので、ちゃんとしたデータが出るか少し心配だけど、とりあえずやってみる。

lm( formula = team_stats[,"得点"] ~ ., data = team_stats[c("単打", "二三塁打", "本塁打",  "四死球", "打数-安打", "盗塁", "盗塁死")] )
今回の値XRRの値
単打0.461560.5
二三塁打0.819620.72/1.04
本塁打1.323391.44
四死球0.353150.33
打数-安打-0.04493-0.098
盗塁0.325410.18
盗塁死-0.22679-0.32

XRRと比べると少し離れた数字になってしまったけど(盗塁と四死球がほとんど等価になっている)、最低限、盗塁死がマイナスで出たので良しとする。

尚、盗塁と盗塁死の発生回数は、それぞれ5763回と2560回だった。

作成した式で今年の点数

試しに作成した式(盗塁なし版)を使って、今年(2012年)のXRを計算させてみた。

単打*0.48723 + 二三塁打*0.90461 + 本塁打*1.28105 + 四死球*0.35724 + 打数-安打*-0.05289

適当なXRと今年の得点

今ひとつピンと来ない結果。決定係数も0.7862とあまり高くならなかった。今年はまだ30試合くらいしかしてないので、ブレが大きいということもあるか。