
の続きです。前回は勝率を他の変数で説明する線形モデルを推定しました。あれから一晩たって、よく考えたら、打率と安打数などを一緒にするのは、よくないのでは?と思いました。安打数などを変えずに打率を上げる、下げるのは現実的でないですよね。
同じ理由で、防御率と失点の両方を入れるのもどうかな?と思いなおしました。
そこで、こんなモデルを推定してみます。
勝率 = β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乗(=残差の分散)は説明変数とは関連が無いことが確認できました。今回は以上です。
次回は、
です。
はじめから読むには、
です。
今回のコードは以下になります。
#
# 新しい線形モデル
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 です。)