(Bing Image Creator で生成: プロンプト: Close up of Houttuynia cordata flowers fields under the blue sky, photo.)
の続きです。今回は線形モデルをOLSで推定して予測してみます。
summary() 関数で結果をみてみます。
STR, PH4, hispanic などが有意な変数のようですね。step() 関数で有意でない変数は除外してみます。
summary() 関数で結果を見てみます。
だいぶ変数が減りました。hispanicのp値は0.11となって有意でない変数となっていますね。ここからは、update()関数で手作業で有意でない変数を削除していきます。
MH3を除外します。
MH1を除外します。
PH3を除外します。
MH2を除外します。
MEDを除外します。
これで全ての変数のp値が0.05以下になりました。
healthy = 0.62 - 0.16 * STR - 0.17 * PH4 - 0.26 * DH1 - 0.16 * EMP3 - 0.33 * PSP1 + u というのが推定式です。
この式を使って、df_test のデータから healthy を予測します。
結果を確認します。
正解率は、(36 + 2) / (36 + 2 + 29 + 2) = 55% でした。
デタラメ予測の平均正解率は51%でしたので、それよりは良いですが、デタラメ予測の95%信頼区間の上限は62%ですので、この目標には達しなかったですね。
今回は以上です。
次回は
です。
はじめから読むには、
です。
今回のコードは以下になります。
#
# 線形モデルをOLSで推定
lm_OLS <- lm(healthy ~ ., data = df_train)
#
# summary()
summary(lm_OLS)
#
# 有意でない変数を除外
lm_OLS2 <- step(lm_OLS, trace = FALSE)
#
# summary()
summary(lm_OLS2)
#
# hispanicを削除
lm_OLS3 <- update(lm_OLS2, . ~ . - hispanic)
summary(lm_OLS3)
#
# MH3を除外
lm_OLS4 <- update(lm_OLS3, . ~ . - MH3)
summary(lm_OLS4)
#
# MH1を除外
lm_OLS5 <- update(lm_OLS4, . ~ . - MH1)
summary(lm_OLS5)
#
# PH3を除外
lm_OLS6 <- update(lm_OLS5, . ~ . - PH3)
summary(lm_OLS6)
#
# MH2を除外
lm_OLS7 <- update(lm_OLS6, . ~ . - MH2)
summary(lm_OLS7)
#
# MEDを除外
lm_OLS8 <- update(lm_OLS7, . ~ . - MED)
summary(lm_OLS8)
#
# lm_OLS8で予測
lm_OLS8_result <- predict(lm_OLS8, newdata = df_test)
lm_OLS8_result <- if_else(lm_OLS8_result > 0.5, 1, 0)
#
# 結果
table(lm_OLS8_result, df_test$healthy)
#
# 正解率
(36 + 2) / (36 + 2 + 29 + 2)
#