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

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

UCI の National Poll on Health Aging (NPHA) のデータの分析 4 - デタラメ予測の平均正解率は51%、95%信頼区間は39%から62%

(Bing Image Creator で生成: プロンプト: Close up of red Gladiolus flowers, background is blue sky, photo.)

 

www.crosshyou.info

の続きです。

前回までで、データセットの調整は終わりました。今回からはいよいよモデルを作成して予測する作業に入ります。

データフレーム、df をトレーニング用とテスト用に分けます。

df_train と df_test の healthy, (これが被説明変数です) の比率に大きな違いが無いことを確認します。

p-value = 0.2185 となりました。0.05 よりも大きな値なので大丈夫です。

一番初めの予測方法として、デタラメ予測をしてみます。df_train の healthy の 1, 0 の割合が df_test でも適用される、と仮定してその割合で、デタラメに 1, 0 を割り振る、ということです。

結果をみてみます。

正解数は、18 + 7 = 25 です。全部で69個のデータがありますから、正解率は36%です。

だいぶ低いですね。

この一連の作業を1000回繰り返して、デタラメ予測の平均正解率を調べてみます。

1000回のデタラメ予測の平均正解率は、51%でした。

ヒストグラムを見てみます。

こうしてヒストグラムを見てみると、はじめに実行したデタラメ予測の平均正解率の36%はかなり悪い時の結果だったことがわかりますね。

95%の信頼区間を求めます。

39%から62%です。

今回は、デタラメ予測で正解率がどのくらいかを調べました。平均で51%の正解率でした。95%の信頼区間は39%から62%でした。

次回以降の予測モデルでは、62%以上の正解率を得ることが目標になりますね。

今回は以上です。

次回は

www.crosshyou.info

です。

 

はじめから読むには、

www.crosshyou.info

です。

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

#
# トレーニング用とテスト用に分ける
set.seed(517)
index <- sample(1:nrow(df), nrow(df) * 0.8, replace = FALSE)
df_train <- df[index, ]
df_test <- df[-index, ]
#
# df_train, df_test の health
t.test(df_train$healthy, df_test$healthy)
#
# df_train の healthy の割合
mean(df_train$healthy)
#
# デタラメ予測
set.seed(1234567)
detarame <- sample(c(0, 1), size = nrow(df_test), replace = TRUE,
                   prob = c(0.634, 0.366))
#
# デタラメ予測の結果
table(detarame, df_test$healthy)
#
# 正解率
(18 + 7) / (18 + 7 + 24 + 20)
#
# 1000個の正解率を入れる箱を作る
kekka <- numeric(1000)
#
# 1000回繰り返す
for (i in 1:1000) {
  set.seed(i)
  detarame <- sample(c(0, 1), size = nrow(df_test), replace = TRUE,
                     prob = c(0.634, 0.366))
  tbl <- table(detarame, df_test$healthy)
  kekka[i] <- (tbl[1, 1] + tbl[2, 2]) / nrow(df_test)
}
# 1000回の平均値
mean(kekka)
#
# ヒストグラム
tibble(kekka) |> 
  ggplot(aes(x = kekka)) +
  geom_histogram(color = "white",
                 binwidth = 0.025)
#
# 95%の信頼区間
quantile(kekka, c(0.025, 0.975))
#