Rで何かをしたり、読書をするブログ

政府統計の総合窓口のデータや、OECDやUCIやのデータを使って、Rの練習をしています。ときどき、読書記録も載せています。

2010年から2024年のプロ野球の成績データの分析 5 - 盗塁のほうがヒットよりも勝率が上がる。

www.crosshyou.info

の続きです。前回は勝率を他の変数で説明する線形モデルを推定しました。あれから一晩たって、よく考えたら、打率と安打数などを一緒にするのは、よくないのでは?と思いました。安打数などを変えずに打率を上げる、下げるのは現実的でないですよね。

同じ理由で、防御率と失点の両方を入れるのもどうかな?と思いなおしました。

そこで、こんなモデルを推定してみます。

勝率 = β0 + β1*安打 + β2*二塁打 + β3*三塁打 + β4*本塁打 + β5*盗塁 + β6*三振 + β7*失点 + u

このモデルなら、他の変数とは独立して値が変化することを考えることができます。

Rのlm()で推定します。lm_newと名付けます。

summary()関数で結果を見てみます。

どの変数の係数の符号は期待される符号です。つまり、sitten: 失点はマイナスで、他はプラスです。two_base: 二塁打とthree_base: 三塁打はp値が10%以上なので、有意ではなさそうです。

two_base, three_baseを除外したモデルを作って、lm_newとanova()関数で比較してみます。

p値が0.2897と有意な値ではないので、lm_r でいいようです。

summary()関数でlm_rをみてみます。

1試合当たり、ヒットを1本多く打てば、勝率は 0.041上がります。

1試合当たり、ホームランを1本多く打てば、勝率は0.087上がります。

1試合当たり、盗塁を1つ増やせば、勝率は0.060上がります。

1試合当たり、奪三振を1つ増やせば、勝率は0.010上がります。

1試合当たり、失点を1点減らせば、0.068上がります。

盗塁1つのほうが、ヒット1つよりも勝率が上がるのですね。

この lm_r のモデルでheteroskedasticityが見られるかどうか、確認しておきましょう。

p値が0.724なので、残差の2乗(=残差の分散)は説明変数とは関連が無いことが確認できました。今回は以上です。

次回は、

www.crosshyou.info

です。

 

はじめから読むには、

www.crosshyou.info

です。

今回のコードは以下になります。

#
# 新しい線形モデル
lm_new <- lm(win_rate ~ hit + two_base + three_base + hr + steal + sanshin +
               shitten, data = df)
#
# 結果
summary(lm_new)
#
# two_base, three_baseを除外したモデル
lm_r <- lm(win_rate ~ hit + hr + steal + sanshin + shitten, data = df)
#
# lm_newとlm_r
anova(lm_new, lm_r)
#
# lm_rのサマリー
summary(lm_r)
#
# lm_rの残差
u <- resid(lm_r)
#
# 残差の2乗と説明変数の回帰分析
lm(I(u^2) ~ hit + hr + steal + sanshin + shitten, data = df) |> 
  summary()
#

(冒頭の画像は Bing Image Creator で生成しました。プロンプトは Close up of yellow Justicia brandegeeana flowers. flowering on the green grass fields under the blue sky.  Photo です。)