
の続きです。前回は、GAM(Generalized Additive Model)で予測モデルを作成しました。あまり良いモデルではありませんでした。そもそもとして、個人の成績からチームの予測をするモデルは難しそうです。最下位のチームに一番活躍した選手がいる、というケースもありますからね。
そこで、今回は、チームごとに個々の選手の成績をまとめて、平均値を算出して、そのデータフレームで予測モデルを作ってみます。

このように、新しくデータフレームを作りました。targetがチームの順位ですからtargetごとの平均値をとれば、それがチームごとの平均値になりますね。
このデータフレームを使って予測モデルを作ります。
まず、lm()関数で線形モデルをつくります。

Multiple R-squared: 0.9183, p-value: 0.0457 となりましたので、かなり当てはまりが良いモデルになりました。
実際の値と予測値の散布図を描いてみます。


前々回、前回の散布図より当てはまりがよくなったことがわかります。
lm_mod_df2から不要な変数を取り除いて、より単純なモデルを作ります。
update()関数でp値の高い変数を一つずつ外していきます。




goalとnが残りました。成績上位50人に入る人数が多いほど(nが大きいほど)、ゴールの点数の平均値が高いほど(goalが大きいほど)、targetは小さくなる(順位が良くなる)ということですね。
全部の変数を使ったモデルはMultiple R-squared: 0.9183で、Adjusted R-squared: 0.7754、p-value: 0.0457でした。
簡素化したモデルはMultiple R-squared: 0.6404で、Adjusted R-squared: 0.5604で全部の変数を使ったモデルよりは悪い値ですが、p-value: 0.01003 でp値は改善しました。
最後に実際の値と予測値のサンプルを作成します。


こちらの散布図のほうが予測はうまくできていないです。
今回は以上です。
次回は、
です。
はじめから読むには、
です。
今回のコードは以下になります。
#
# targetごとの平均値のデータフレームにする
df2 <- df |>
group_by(target) |>
summarize(
across(rank:pg, mean),
n = n()
) |>
ungroup()
df2
#
# このtargetを被説明変数にする
# 線形モデル
lm_mod_df2 <- lm(target ~ ., data = df2)
summary(lm_mod_df2)
#
# 予測値の実際の値の散布図
tibble(
actual = df2$target,
estimate = predict(lm_mod_df2)
) |>
ggplot(aes(x = actual, y = estimate)) +
geom_point() +
labs(title = "線形モデル") +
geom_abline(color = "red") +
theme_minimal()
#
# より単純なモデル
lm_mod_df2_simple <- update(lm_mod_df2, . ~ . - game)
summary(lm_mod_df2_simple)
#
lm_mod_df2_simple <- update(lm_mod_df2_simple, . ~ . - rank)
summary(lm_mod_df2_simple)
#
lm_mod_df2_simple <- update(lm_mod_df2_simple, . ~ . - point)
summary(lm_mod_df2_simple)
#
lm_mod_df2_simple <- update(lm_mod_df2_simple, . ~ . - try)
summary(lm_mod_df2_simple)
#
lm_mod_df2_simple <- update(lm_mod_df2_simple, . ~ . - pg)
summary(lm_mod_df2_simple)
#
# 予測値の実際の値の散布図
tibble(
actual = df2$target,
estimate = predict(lm_mod_df2_simple)
) |>
ggplot(aes(x = actual, y = estimate)) +
geom_point() +
labs(title = "簡素化線形モデル") +
geom_abline(color = "red") +
theme_minimal()
#
(冒頭の画像は、Bing Image Creator で生成しました。プロンプトは、Landscape of natural vast grass field, full of many AJISAI flowers, close up of one red and blue marble AJISAI flower, photo です。)