Bing Image Creator で生成: Close up of Oxalis bowiei flowers, background is large fall, blue sky and white clouds
今回からしばらくは、UCI Machine Learning Repository にある Maternal Health Risk のデータを分析しようと思います。
Ahmed, M. (2020). Maternal Health Risk [Dataset]. UCI Machine Learning Repository. https://doi.org/10.24432/C5DP5D.
ダウンロードした CSV ファイルはこんな感じでした。
RiskLevel が high risk, mid risk, low risk と3種類あって、これを残りの変数で予測する、という classification のためのデータセットです。
R で分析したいので、はじめに tidyverse パッケージを読み込みます。
read_csv() で CSV ファイルを読み込みます。
glimpse() でデータセットの様子を確認します。
Rows 1014 とあるので、1014の観測データがあります。
Age は年齢、SystolicBP は血圧の上のレベル、DiastolicBP は血圧の下のレベル、BS は血糖値、BodyTemp は体温、HeartRate は脈拍ですね。
summary() で各変数の統計値を確認します。
Age の最大値が70というのは本当ですかね?70歳で妊娠とは普通考えられないですよね。。。謎です。NAの観測はありませんね。
RiskLevel は high が272、mid が 336、low が 406 です。
各変数のヒストグラムを描いて分布を確認しましょう。
Age から始めます。
ピンクは high risk です。年齢が高いほど、ピンクが多いように見えます。
次は血圧の上のレベル、SystolicBP です。
血圧が高いほうが high risk が多いですね。
次は、血圧の下のレベル、DiastolicBP です。
血圧の下のレベルも高いほうがリスクが高い人が多いですね。
次は、BS 血糖値です。
血糖値が高い人はほとんどの人が high risk の人ですね。
次は、体温 BodyTemp です。
体温は、 98~99の人がほとんどです。体温が100以上だと high risk の人が多いようです。
最後は脈拍、HeartRate です。
あら、脈拍が極端に少ない人がいますね。summary() の結果を見ると、最小値が7です。これはあきらかにデータの入力ミスでしょうね。脈拍はあまり、リスクと関係ないような気がします。
まとめると、
年齢が高い、血圧が高い、血糖値が高い、体温が高いとリスクが高いようですね。
今回は以上です。
次回は、
です。
今回のコードは以下になります。
#
# tidyverse パッケージを読み込む
library(tidyverse)
#
# CSV ファイルを読み込む
df_raw <- read_csv("uci_maternal_health_risk.csv")
#
# データセットの様子
glimpse(df_raw)
#
# 各変数の統計値
df_raw |>
mutate(RiskLevel = factor(RiskLevel)) |>
summary()
#
# Age のヒストグラム
df_raw |>
ggplot(aes(x = Age)) +
geom_histogram(aes(fill = RiskLevel), binwidth = 5,
boundary = 20, color = "white")
#
# SystolicBP のヒストグラム
df_raw |>
ggplot(aes(x = SystolicBP)) +
geom_histogram(aes(fill = RiskLevel), color = "white",
boundary = 100, binwidth = 10)
#
# DiastolicBP のヒストグラム
df_raw |>
ggplot(aes(x = DiastolicBP)) +
geom_histogram(aes(fill = RiskLevel), color = "white",
boundary = 100, binwidth = 10)
#
# BS のヒストグラム
df_raw |>
ggplot(aes(x = BS)) +
geom_histogram(aes(fill = RiskLevel), color = "white",
boundary = 10, binwidth = 2)
#
# BodyTemp のヒストグラム
df_raw |>
ggplot(aes(x = BodyTemp)) +
geom_histogram(aes(fill = RiskLevel), color = "white",
boundary = 100, binwidth = 1)
#
# HeartRate のヒストグラム
df_raw |>
ggplot(aes(x = HeartRate)) +
geom_histogram(aes(fill = RiskLevel), color = "white",
boundary = 80, binwidth = 10)
#