パーマーステーションのペンギンたち#3 探索的データ分析(EDA)編 Tokyo.R #108 (2023/09/02)
#TokyoR #R言語 #rstatsj
パーマーステーションのペンギンたち #3探索的データ分析(EDA)編Tokyo.R #108(2023/09/02)@bob3bob3Artwork by @allison_horst
View Slide
このセッションの位置づけ中級者セッションのつもりでやっているシリーズです。1. データセットの紹介(前々回)2. データクリーニング(前回)3. 探索的データ分析(EDA)(今回)4. 分析例○ シンプソンのパラドクス○ 次元縮約○ クラスタリング○ 判別モデル○ などなど
探索的データ分析とは?● Exploratory Data Analysis、EDA。 ● 分析対象であるデータに対する理解を深めるプロセスのことを指す。 ● 個々の変数の特性や変数間の関係を把握することが目的で、その手段として要約統計量や可視化が用いられる。 ● 分析するデータが手に入ったらまずはEDA! ● John Tukey さん(1915 – 2000)が提唱しました。箱ひげ図を提唱したことでも有名。コンピューター用語の bit を作ったことでも知られる。 引用元
パーマーステーションのペンギンたち過去2回に続き、palmerpenguinsパッケージのデータセットを使います。 初回の資料も参考にしてください。 とりあえず、いますぐ install.packages("palmerpenguins")しましょう! Artwork by @allison_horst
どんなデータ?● 南極に生息するペンギンの生態調査。2007年、08年、09年の3回の調査。 ● 南極のビスコー諸島、ドリーム島、トージャーセン島の3か所。 ● アデリーペンギン、ヒゲペンギン、ジェンツーペンギンの3種のペンギン。 ● 嘴の長さ、高さ、翼の長さ、体重、性別などが含まれる。 アデリー(Adelie) ジェンツー(Gentoo) ヒゲ(Chinstrap) Stan Shebs (CC BY-SA 3.0) Andrew Shiva(CC BY-SA 4.0) Stan Shebs (CC BY-SA 3.0)
2つのデータセットpenguins_raw 生のデータ ● 17変数 ● studyName: 研究名(越冬隊ごと?) ● Sample Number: 標本番号(連番) ● Species: ペンギンの種(学名付き) ● Region: 調査した地域 ● Island: 調査した島 ● Stage: 発育段階 ● Individual ID: 個体ID ● Clutch Completion: 巣の完成度 ● Date Egg: 巣に1個以上の卵が確認された日? ● Culmen Length (mm): くちばしの長さ ● Culmen Depth (mm): くちばしの高さ ● Flipper Length (mm): 翼の長さ ● Body Mass (g): 体重 ● Sex: 性別 ● Delta 15 N (o/oo): 窒素同位体比(δ15N) ● Delta 13 C (o/oo): 炭素同位体比(δ13C) ● Comments: コメント penguins 使いやすく加工されたデータ ● 8変数 ● species: ペンギンの種 ● island: 調査した島 ● bill_length_mm: くちばしの長さ ● bill_depth_mm: くちばしの高さ ● flipper_length_mm: 翼の長さ ● body_mass_g: 体重 ● sex: 性別 ● year: 調査した年 Artwork by @allison_horst
2つのデータセットpenguins_raw 生のデータ ● 17変数 ● studyName: 研究名(越冬隊ごと?) ● Sample Number: 標本番号(連番) ● Species: ペンギンの種(学名付き) ● Region: 調査した地域 ● Island: 調査した島 ● Stage: 発育段階 ● Individual ID: 個体ID ● Clutch Completion: 巣の完成度 ● Date Egg: 巣に1個以上の卵が確認された日? ● Culmen Length (mm): くちばしの長さ ● Culmen Depth (mm): くちばしの高さ ● Flipper Length (mm): 翼の長さ ● Body Mass (g): 体重 ● Sex: 性別 ● Delta 15 N (o/oo): 窒素同位体比(δ15N) ● Delta 13 C (o/oo): 炭素同位体比(δ13C) ● Comments: コメント penguins 使いやすく加工されたデータ ● 8変数 ● species: ペンギンの種 ● island: 調査した島 ● bill_length_mm: くちばしの長さ ● bill_depth_mm: くちばしの高さ ● flipper_length_mm: 翼の長さ ● body_mass_g: 体重 ● sex: 性別 ● year: 調査した年 Artwork by @allison_horst今日使うのはこっち。
やること1. データセットの全体像を確認2. 1変量の分析3. 2変量の分析
今回使用する主なパッケージ● サンプルデータ○ palmerpenguins● 要約○ tidyverse○ summarytools● 可視化○ ggplot2○ GGally○ MASS
データセットの全体像を確認library(palmerpenguins) #データセットpenguins #tibble形式palmerpenguinsパッケージ。今回使うデータセットpenguinsを含む。
全体確認library(palmerpenguins) #データセットpenguinspenguins |> str() #オブジェクトの構造を表示。structure
全体確認library(palmerpenguins) #データセットpenguinspenguins |> str() #オブジェクトの構造を表示。structurepenguins |> dplyr::glimpse() #「チラ見する」ぐらいの意味
全体確認penguins |> summary() #とりあえずsummary()
まずはデータを確認# summary()の超強力版library(summarytools)penguins |>dfSummary() |>view()summarytoolsパッケージ。データの概要を確認するのに非常に便利。分布の形、欠損値の有無、名義尺度や順序尺度のカテゴリ数数などを確認しておきたい。
1変数の分析● 気になる変数を個別に確認する● 名義尺度、順序尺度は棒グラフで、比率尺度、比例尺度はヒストグラムで確認するのがいいでしょう。
1変数の分析● 気になる変数を個別に確認する● 名義尺度、順序尺度は棒グラフで、比率尺度、連続変数はヒストグラムで確認するのがいいでしょう。ヒストグラムはMASS::truehist()がおすすめ。
2変数の分析● まずは、GGallyパッケージのggpairs()関数でどの組み合わせが気になるか確認。● ただし、変数が多いと組み合わせ爆発で描画に時間がかかります。penguins |>GGally::ggpairs(aes(colour=species))
2変数の分析(連続変数×連続変数)● 連続変数同士の組み合わせは 散布図で表す。penguins |>ggplot(aes(x = bill_length_mm,y = bill_depth_mm, color =species)) +geom_point()
2変量の分析(名義尺度×名義尺度)● クロス集計表の可視化。● モザイクプロットpenguins |>mosaicplot(~ species + island, data =_, color = TRUE)
2変量の分析(名義尺度×連続変数)● 箱ひげ図、バイオリンプロット、ジッタ ―プロットの重ね書き○ raincloud plot がいいけれど、ちょっと手間なので簡易版として。penguins |>ggplot(aes(x = species, y =body_mass_g)) +geom_violin(aes(fill=species)) +geom_boxplot(width=0.1) +geom_jitter(width=0.2, height=0,alpha=0.3)
ggploylyで対話的に分析● ggplot2のオブジェクトをggplotly()に与えるだけで対話的なグラフができる! library(plotly)p1 <- penguins |>ggplot(aes(x = bill_length_mm,y = bill_depth_mm,color = species)) +geom_point()p1 |>ggplotly()
to be continued...今後の予定:1. データセットの紹介(前々回)2. データクリーニング(前回)3. 探索的データ分析(EDA)(今回)4. 分析例○ シンプソンのパラドクス○ 次元縮約○ クラスタリング○ 判別モデル○ などなど次回はついに分析例だよ!いつになることやら……お楽しみに!