(Bing Image Creator で生成: プロンプト: Close up of Philadelphia fleabane flowers, flowering on the small green hill, background is blue sky, photo)
今回は、UCI Machine Learning Repository のデータ、National Poll on Health Aging (NPHA) のデータを分析しようと思います。
National Poll on Healthy Aging (NPHA) [Dataset]. (2017). UCI Machine Learning Repository. https://doi.org/10.3886/ICPSR37305.v1.
CSVファイルはこのようなものでした。
2行目は私が追加した変数名です。
このデータは classification のためのデータで、被説明変数は、Number of Doctors Visited: NDV です。何人のお医者さんに診てもらったか、という変数で 1:0~1人、2:2~3人、3:3人以上、という3つの値をとるカテゴリカル変数です。
このデータを R に取り込むます。まずは、tidyverse パッケージの読み込みです。
read_csv() 関数でデータを読み込みます。
各変数の説明はおいおいするとして、とりあえず、NDV: Number of Doctors Visited の分布を確認します。
NDV が 1、つまり 0 人か、1 人のお医者さんに診てもらった人は 131 人で全体の 18% でした。NDV が 2、つまり 2 人か 3人のお医者さんに診てもらった人は 372 人で全体の 52% でした。NDV が 3、つまり 4人以上のお医者さんに診てもらった人は 211人で全体の 30% でした。
私の技術では 3 つのカテゴリカル変数の分類は難しいので、NDV が 1 と 3 だけにして、0 人か 1 人のお医者さんに診てもらった健康な人と、4 人以上に診てもらった不健康な人の 2 択のデータにしてしまいます。
filter() 関数で、NDV が 2 の観測データは削除して、mutate() 関数の中で if_else() 関数をつかって、NDV == 1 なら 1, そうでないなら 0 の値を取るダミー変数を healthy という名前で作成しました。select() 関数で NDV を削除して、relocate() 関数で healthy を一番左にもってきました。
healthy の度数を確認します。
healthy が 0 の人は、診てもらったお医者さんの人数は 4 人以上です。これが 211 人で全体の 61.7% です。healthy が 1 の人は、診てもらったお医者さんの人数は 0 か 1 です。131 人で全体の 38.3% です。
今回はここまでにします。
次回は
です。
今回のコードは以下になります。
#
# tidyverse パッケージの読み込み
library(tidyverse)
#
# CSV ファイルの読み込み
df_raw <- read_csv("NPHA.csv", skip = 1)
#
# NDV: Numbers of Doctors Visitedの度数
df_raw |>
count(NDV) |>
mutate(prop = n / sum(n))
#
# NDV == 2 を削除して、NDV == 1 か NVD == 3 かだけにする
df <- df_raw |>
filter(NDV != 2) |>
mutate(healthy = if_else(NDV == 1, 1, 0)) |>
select(-NDV) |>
relocate(healthy)
df
#
# healthy の度数
df |>
count(healthy) |>
mutate(prop = n / sum(n))
#