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

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

UCI Machine Learning Repository の Maternal Health Risk のデータの分析1 - R にデータを取り込み、視覚化する。

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です。これはあきらかにデータの入力ミスでしょうね。脈拍はあまり、リスクと関係ないような気がします。

まとめると、

年齢が高い、血圧が高い、血糖値が高い、体温が高いとリスクが高いようですね。

今回は以上です。

次回は、

www.crosshyou.info

です。

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

#
# 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)
#