Slide 1

Slide 1 text

パーマーステーションの ペンギンたち #3 探索的データ分析(EDA)編 Tokyo.R #108 (2023/09/02) @bob3bob3 Artwork by @allison_horst

Slide 2

Slide 2 text

このセッションの位置づけ 中級者セッションのつもりでやっているシリーズです。 1. データセットの紹介(前々回) 2. データクリーニング(前回) 3. 探索的データ分析(EDA)(今回) 4. 分析例 ○ シンプソンのパラドクス ○ 次元縮約 ○ クラスタリング ○ 判別モデル ○ などなど

Slide 3

Slide 3 text

探索的データ分析とは? ● Exploratory Data Analysis、EDA。
 ● 分析対象であるデータに対する理解を 深めるプロセスのことを指す。
 ● 個々の変数の特性や変数間の関係を 把握することが目的で、その手段として 要約統計量や可視化が用いられる。 
 ● 分析するデータが手に入ったらまずは EDA!
 ● John Tukey さん(1915 – 2000)が提唱し ました。箱ひげ図を提唱したことでも有 名。コンピューター用語の bit を作ったこ とでも知られる。
 引用元

Slide 4

Slide 4 text

パーマーステーションのペンギンたち 過去2回に続き、palmerpenguinsパッ ケージのデータセットを使います。
 初回の資料も参考にしてください。
 とりあえず、いますぐ
 install.packages("palmerpenguins") しましょう!
 Artwork by @allison_horst

Slide 5

Slide 5 text

どんなデータ? ● 南極に生息するペンギンの生態調査。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) 


Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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 今日使うのは こっち。

Slide 8

Slide 8 text

やること 1. データセットの全体像を確認 2. 1変量の分析 3. 2変量の分析

Slide 9

Slide 9 text

今回使用する主なパッケージ ● サンプルデータ ○ palmerpenguins ● 要約 ○ tidyverse ○ summarytools ● 可視化 ○ ggplot2 ○ GGally ○ MASS

Slide 10

Slide 10 text

データセットの全体像を確認 library(palmerpenguins) #データセット penguins #tibble形式 palmerpenguinsパッケージ。 今回使うデータセットpenguinsを含 む。

Slide 11

Slide 11 text

全体確認 library(palmerpenguins) #データセット penguins penguins |> str() #オブジェクトの構造を表示。structure

Slide 12

Slide 12 text

全体確認 library(palmerpenguins) #データセット penguins penguins |> str() #オブジェクトの構造を表示。structure penguins |> dplyr::glimpse() #「チラ見する」ぐらいの意味

Slide 13

Slide 13 text

全体確認 penguins |> summary() #とりあえずsummary()

Slide 14

Slide 14 text

まずはデータを確認 # summary()の超強力版 library(summarytools) penguins |> dfSummary() |> view() summarytoolsパッケージ。 データの概要を確認するのに非常に便 利。 分布の形、欠損値の有無、名義尺度や 順序尺度のカテゴリ数数などを確認して おきたい。

Slide 15

Slide 15 text

1変数の分析 ● 気になる変数を個別に確認する ● 名義尺度、順序尺度は棒グラフで、比率尺度、比例尺度はヒストグラムで確認する のがいいでしょう。

Slide 16

Slide 16 text

1変数の分析 ● 気になる変数を個別に確認する ● 名義尺度、順序尺度は棒グラフで、比率尺度、連続変数はヒストグラムで確認する のがいいでしょう。 ヒストグラムは MASS::truehist()が おすすめ。

Slide 17

Slide 17 text

2変数の分析 ● まずは、GGallyパッケージのggpairs()関数 でどの組み合わせが気になるか確認。 ● ただし、変数が多いと組み合わせ爆発で描 画に時間がかかります。 penguins |> GGally::ggpairs(aes(colour=species))

Slide 18

Slide 18 text

2変数の分析(連続変数×連続変数) ● 連続変数同士の組み合わせは 散布 図で表す。 penguins |> ggplot(aes(x = bill_length_mm, y = bill_depth_mm, color = species)) + geom_point()

Slide 19

Slide 19 text

2変量の分析(名義尺度×名義尺度) ● クロス集計表の可視化。 ● モザイクプロット penguins |> mosaicplot(~ species + island, data = _, color = TRUE)

Slide 20

Slide 20 text

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)

Slide 21

Slide 21 text

ggploylyで対話的に分析 ● ggplot2のオブジェクトをggplotly()に与えるだ けで対話的なグラフができる! 
 
 library(plotly) p1 <- penguins |> ggplot(aes( x = bill_length_mm, y = bill_depth_mm, color = species )) + geom_point() p1 |> ggplotly()

Slide 22

Slide 22 text

to be continued... 今後の予定: 1. データセットの紹介(前々回) 2. データクリーニング(前回) 3. 探索的データ分析(EDA)(今回) 4. 分析例 ○ シンプソンのパラドクス ○ 次元縮約 ○ クラスタリング ○ 判別モデル ○ などなど 次回はついに分析例だよ! いつになる ことやら…… お楽しみに!