$30 off During Our Annual Pro Sale. View Details »

パーマーステーションのペンギンたち#3 探索的データ分析(EDA)編

bob3bob3
September 02, 2023

パーマーステーションのペンギンたち#3 探索的データ分析(EDA)編

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

#TokyoR
#R言語
#rstatsj

bob3bob3

September 02, 2023
Tweet

More Decks by bob3bob3

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

  3. 探索的データ分析とは?
    ● Exploratory Data Analysis、EDA。

    ● 分析対象であるデータに対する理解を
    深めるプロセスのことを指す。

    ● 個々の変数の特性や変数間の関係を
    把握することが目的で、その手段として
    要約統計量や可視化が用いられる。

    ● 分析するデータが手に入ったらまずは
    EDA!

    ● John Tukey さん(1915 – 2000)が提唱し
    ました。箱ひげ図を提唱したことでも有
    名。コンピューター用語の bit を作ったこ
    とでも知られる。

    引用元

    View Slide

  4. パーマーステーションのペンギンたち
    過去2回に続き、palmerpenguinsパッ
    ケージのデータセットを使います。

    初回の資料も参考にしてください。

    とりあえず、いますぐ

    install.packages("palmerpenguins")
    しましょう!

    Artwork by @allison_horst

    View Slide

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

    View Slide

  6. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  20. 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)

    View Slide

  21. ggploylyで対話的に分析
    ● ggplot2のオブジェクトをggplotly()に与えるだ
    けで対話的なグラフができる! 


    library(plotly)
    p1 <- penguins |>
    ggplot(aes(
    x = bill_length_mm,
    y = bill_depth_mm,
    color = species
    )) +
    geom_point()
    p1 |>
    ggplotly()

    View Slide

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

    View Slide