Day 1

RとRStudio環境の準備

準備サイト を参考に,必要なプログラム,パッケージを準備しましょう。

Rの関数とデータの型

四則演算

1+3
## [1] 4
3-5
## [1] -2
5*7
## [1] 35
8/2
## [1] 4

関数を使おう

sqrt(4)
## [1] 2
help(sqrt)

代入

obj <- 2
obj
## [1] 2
obj2 <- 2
obj3 <- 3
obj2 + obj3
## [1] 5
obj <- 1:10
obj
##  [1]  1  2  3  4  5  6  7  8  9 10
obj * 2
##  [1]  2  4  6  8 10 12 14 16 18 20
obj <- matrix(c(1:10),nrow=5)
obj
##      [,1] [,2]
## [1,]    1    6
## [2,]    2    7
## [3,]    3    8
## [4,]    4    9
## [5,]    5   10
代入したものの操作
obj * 2
##      [,1] [,2]
## [1,]    2   12
## [2,]    4   14
## [3,]    6   16
## [4,]    8   18
## [5,]   10   20
obj[1,]
## [1] 1 6
obj[,2]
## [1]  6  7  8  9 10

なんでも入れれるlist型

obj<-list(name=c("kosugi","tanaka","suzuki"),
          gender=c("male","female","male"),
          height=c(170,160),
          weight=c(70.6,80.9,90.6,40.3))
obj
## $name
## [1] "kosugi" "tanaka" "suzuki"
## 
## $gender
## [1] "male"   "female" "male"  
## 
## $height
## [1] 170 160
## 
## $weight
## [1] 70.6 80.9 90.6 40.3
代入したものの操作
obj$name
## [1] "kosugi" "tanaka" "suzuki"

データの型

str(obj)
## List of 4
##  $ name  : chr [1:3] "kosugi" "tanaka" "suzuki"
##  $ gender: chr [1:3] "male" "female" "male"
##  $ height: num [1:2] 170 160
##  $ weight: num [1:4] 70.6 80.9 90.6 40.3
数字,文字,factor型
obj$gender <- as.factor(obj$gender)
str(obj)
## List of 4
##  $ name  : chr [1:3] "kosugi" "tanaka" "suzuki"
##  $ gender: Factor w/ 2 levels "female","male": 2 1 2
##  $ height: num [1:2] 170 160
##  $ weight: num [1:4] 70.6 80.9 90.6 40.3

データフレーム型

obj<-data.frame(
  list(name=c("kosugi","tanaka","suzuki"),
       gender=c(1,2,1),
       hight=c(170,160,170),
       weight=c(70.6,80.9,90.6)
  )
)
代入したものの操作
str(obj)
## 'data.frame':    3 obs. of  4 variables:
##  $ name  : Factor w/ 3 levels "kosugi","suzuki",..: 1 3 2
##  $ gender: num  1 2 1
##  $ hight : num  170 160 170
##  $ weight: num  70.6 80.9 90.6
obj$gender<-factor(obj$gender,labels=c("male","female"))
obj
name gender hight weight
kosugi male 170 70.6
tanaka female 160 80.9
suzuki male 170 90.6
パッケージの利用
library(tidyverse)
## ─ Attaching packages ────────────────────────────────────── tidyverse 1.2.1 ─
## ✔ ggplot2 3.1.0     ✔ purrr   0.3.0
## ✔ tibble  2.0.1     ✔ dplyr   0.7.8
## ✔ tidyr   0.8.2     ✔ stringr 1.3.1
## ✔ readr   1.3.1     ✔ forcats 0.3.0
## ─ Conflicts ──────────────────────────────────────── tidyverse_conflicts() ─
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()

ファイルの読み込み

M1 <- read_csv("M1score.csv",na=".")
## Parsed with column specification:
## cols(
##   .default = col_double(),
##   演者 = col_character()
## )
## See spec(...) for full column specifications.
head(M1)
年代 演者 ネタ順 立川志らく 塙宣之 上沼恵美子 松本人志 博多大吉 春風亭小朝 中川礼二 渡辺正行 オール巨人 増田英彦 岩尾望 吉田敬 徳井義実 富澤たけし 石田明 佐藤哲夫 哲夫 島田紳助 南原清隆 大竹まこと 宮迫博之 中田カウス 東国原英夫 ラサール石井 島田洋七 西川きよし 立川談志 鴻上尚史 青島幸男
18 見取り図 1 85 85 88 83 NA NA 91 NA 88 NA NA NA NA 86 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
18 スーパーマラドーナ 2 88 89 89 85 NA NA 90 NA 87 NA NA NA NA 89 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
18 かまいたち 3 88 92 94 90 NA NA 92 NA 89 NA NA NA NA 91 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
18 ジャルジャル 4 99 93 88 92 NA NA 93 NA 93 NA NA NA NA 90 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
18 ギャロップ 5 86 89 89 86 NA NA 90 NA 87 NA NA NA NA 87 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
18 ゆにばーす 6 87 82 84 80 NA NA 91 NA 84 NA NA NA NA 86 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
summary(M1)
##       年代            演者               ネタ順         立川志らく   
##  Min.   : 1.000   Length:129         Min.   : 1.000   Min.   :85.00  
##  1st Qu.: 4.000   Class :character   1st Qu.: 3.000   1st Qu.:87.25  
##  Median : 8.000   Mode  :character   Median : 5.000   Median :88.50  
##  Mean   : 8.721                      Mean   : 5.093   Mean   :90.50  
##  3rd Qu.:15.000                      3rd Qu.: 7.000   3rd Qu.:93.00  
##  Max.   :18.000                      Max.   :10.000   Max.   :99.00  
##                                                       NA's   :119    
##      塙宣之       上沼恵美子       松本人志        博多大吉    
##  Min.   :82.0   Min.   :81.00   Min.   :70.00   Min.   :50.00  
##  1st Qu.:89.0   1st Qu.:89.00   1st Qu.:85.00   1st Qu.:70.00  
##  Median :91.0   Median :90.00   Median :89.00   Median :84.00  
##  Mean   :90.5   Mean   :91.16   Mean   :88.13   Mean   :79.13  
##  3rd Qu.:93.0   3rd Qu.:95.00   3rd Qu.:93.00   3rd Qu.:91.00  
##  Max.   :98.0   Max.   :98.00   Max.   :97.00   Max.   :97.00  
##  NA's   :119    NA's   :73      NA's   :46      NA's   :82     
##    春風亭小朝       中川礼二        渡辺正行       オール巨人   
##  Min.   :65.00   Min.   :87.00   Min.   :75.00   Min.   :79.00  
##  1st Qu.:80.00   1st Qu.:89.25   1st Qu.:87.00   1st Qu.:86.00  
##  Median :88.00   Median :91.00   Median :89.00   Median :88.50  
##  Mean   :84.28   Mean   :91.05   Mean   :88.16   Mean   :88.55  
##  3rd Qu.:90.00   3rd Qu.:93.00   3rd Qu.:90.50   3rd Qu.:91.00  
##  Max.   :95.00   Max.   :96.00   Max.   :95.00   Max.   :96.00  
##  NA's   :100     NA's   :91      NA's   :74      NA's   :73     
##     増田英彦       岩尾望          吉田敬         徳井義実    
##  Min.   :85    Min.   :85.00   Min.   :83.00   Min.   :88.00  
##  1st Qu.:87    1st Qu.:89.00   1st Qu.:85.00   1st Qu.:89.00  
##  Median :89    Median :90.00   Median :89.00   Median :89.00  
##  Mean   :89    Mean   :90.67   Mean   :87.56   Mean   :90.56  
##  3rd Qu.:91    3rd Qu.:92.00   3rd Qu.:90.00   3rd Qu.:91.00  
##  Max.   :93    Max.   :96.00   Max.   :93.00   Max.   :96.00  
##  NA's   :120   NA's   :120     NA's   :120     NA's   :120    
##    富澤たけし        石田明       佐藤哲夫          哲夫      
##  Min.   :86.00   Min.   :83    Min.   :88.00   Min.   :87.00  
##  1st Qu.:89.00   1st Qu.:87    1st Qu.:89.00   1st Qu.:88.00  
##  Median :91.00   Median :88    Median :90.00   Median :90.00  
##  Mean   :90.42   Mean   :89    Mean   :90.56   Mean   :89.78  
##  3rd Qu.:92.00   3rd Qu.:92    3rd Qu.:92.00   3rd Qu.:91.00  
##  Max.   :94.00   Max.   :94    Max.   :93.00   Max.   :93.00  
##  NA's   :110     NA's   :120   NA's   :120     NA's   :120    
##     島田紳助         南原清隆       大竹まこと       宮迫博之  
##  Min.   : 50.00   Min.   :76.00   Min.   :75.00   Min.   :88   
##  1st Qu.: 80.25   1st Qu.:84.75   1st Qu.:82.00   1st Qu.:90   
##  Median : 86.00   Median :88.00   Median :85.00   Median :91   
##  Mean   : 84.77   Mean   :87.78   Mean   :85.18   Mean   :92   
##  3rd Qu.: 90.00   3rd Qu.:90.25   3rd Qu.:89.00   3rd Qu.:93   
##  Max.   :100.00   Max.   :98.00   Max.   :97.00   Max.   :98   
##  NA's   :47       NA's   :93      NA's   :57      NA's   :120  
##    中田カウス      東国原英夫     ラサール石井      島田洋七    
##  Min.   :79.00   Min.   :85.00   Min.   :68.00   Min.   :75.00  
##  1st Qu.:86.00   1st Qu.:86.00   1st Qu.:82.00   1st Qu.:84.00  
##  Median :90.00   Median :88.00   Median :86.00   Median :90.00  
##  Mean   :89.98   Mean   :87.67   Mean   :86.84   Mean   :88.09  
##  3rd Qu.:95.00   3rd Qu.:89.00   3rd Qu.:92.00   3rd Qu.:92.00  
##  Max.   :98.00   Max.   :92.00   Max.   :96.00   Max.   :98.00  
##  NA's   :48      NA's   :120     NA's   :74      NA's   :84     
##    西川きよし       立川談志      鴻上尚史        青島幸男    
##  Min.   :75.00   Min.   :50    Min.   :73.00   Min.   :75.00  
##  1st Qu.:80.00   1st Qu.:70    1st Qu.:82.25   1st Qu.:76.25  
##  Median :86.00   Median :70    Median :83.50   Median :80.00  
##  Mean   :85.68   Mean   :70    Mean   :81.80   Mean   :81.50  
##  3rd Qu.:90.00   3rd Qu.:70    3rd Qu.:84.00   3rd Qu.:85.00  
##  Max.   :97.00   Max.   :80    Max.   :85.00   Max.   :90.00  
##  NA's   :110     NA's   :120   NA's   :119     NA's   :119
str(M1)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 129 obs. of  32 variables:
##  $ 年代        : num  18 18 18 18 18 18 18 18 18 18 ...
##  $ 演者        : chr  "見取り図" "スーパーマラドーナ" "かまいたち" "ジャルジャル" ...
##  $ ネタ順      : num  1 2 3 4 5 6 7 8 9 10 ...
##  $ 立川志らく  : num  85 88 88 99 86 87 89 97 93 93 ...
##  $ 塙宣之      : num  85 89 92 93 89 82 90 93 98 94 ...
##  $ 上沼恵美子  : num  88 89 94 88 89 84 98 86 97 98 ...
##  $ 松本人志    : num  83 85 90 92 86 80 88 91 94 93 ...
##  $ 博多大吉    : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ 春風亭小朝  : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ 中川礼二    : num  91 90 92 93 90 91 93 90 96 94 ...
##  $ 渡辺正行    : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ オール巨人  : num  88 87 89 93 87 84 90 87 93 92 ...
##  $ 増田英彦    : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ 岩尾望      : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ 吉田敬      : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ 徳井義実    : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ 富澤たけし  : num  86 89 91 90 87 86 90 89 91 92 ...
##  $ 石田明      : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ 佐藤哲夫    : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ 哲夫        : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ 島田紳助    : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ 南原清隆    : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ 大竹まこと  : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ 宮迫博之    : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ 中田カウス  : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ 東国原英夫  : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ ラサール石井: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ 島田洋七    : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ 西川きよし  : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ 立川談志    : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ 鴻上尚史    : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ 青島幸男    : num  NA NA NA NA NA NA NA NA NA NA ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   年代 = col_double(),
##   ..   演者 = col_character(),
##   ..   ネタ順 = col_double(),
##   ..   立川志らく = col_double(),
##   ..   塙宣之 = col_double(),
##   ..   上沼恵美子 = col_double(),
##   ..   松本人志 = col_double(),
##   ..   博多大吉 = col_double(),
##   ..   春風亭小朝 = col_double(),
##   ..   中川礼二 = col_double(),
##   ..   渡辺正行 = col_double(),
##   ..   オール巨人 = col_double(),
##   ..   増田英彦 = col_double(),
##   ..   岩尾望 = col_double(),
##   ..   吉田敬 = col_double(),
##   ..   徳井義実 = col_double(),
##   ..   富澤たけし = col_double(),
##   ..   石田明 = col_double(),
##   ..   佐藤哲夫 = col_double(),
##   ..   哲夫 = col_double(),
##   ..   島田紳助 = col_double(),
##   ..   南原清隆 = col_double(),
##   ..   大竹まこと = col_double(),
##   ..   宮迫博之 = col_double(),
##   ..   中田カウス = col_double(),
##   ..   東国原英夫 = col_double(),
##   ..   ラサール石井 = col_double(),
##   ..   島田洋七 = col_double(),
##   ..   西川きよし = col_double(),
##   ..   立川談志 = col_double(),
##   ..   鴻上尚史 = col_double(),
##   ..   青島幸男 = col_double()
##   .. )

データの操作1;列選択

M1 %>% dplyr::select(松本人志,富澤たけし) %>% head()
松本人志 富澤たけし
83 86
85 89
90 91
92 90
86 87
80 86

データの操作2;行選択

M1 %>% dplyr::filter(年代==18) %>% head()
年代 演者 ネタ順 立川志らく 塙宣之 上沼恵美子 松本人志 博多大吉 春風亭小朝 中川礼二 渡辺正行 オール巨人 増田英彦 岩尾望 吉田敬 徳井義実 富澤たけし 石田明 佐藤哲夫 哲夫 島田紳助 南原清隆 大竹まこと 宮迫博之 中田カウス 東国原英夫 ラサール石井 島田洋七 西川きよし 立川談志 鴻上尚史 青島幸男
18 見取り図 1 85 85 88 83 NA NA 91 NA 88 NA NA NA NA 86 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
18 スーパーマラドーナ 2 88 89 89 85 NA NA 90 NA 87 NA NA NA NA 89 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
18 かまいたち 3 88 92 94 90 NA NA 92 NA 89 NA NA NA NA 91 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
18 ジャルジャル 4 99 93 88 92 NA NA 93 NA 93 NA NA NA NA 90 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
18 ギャロップ 5 86 89 89 86 NA NA 90 NA 87 NA NA NA NA 87 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
18 ゆにばーす 6 87 82 84 80 NA NA 91 NA 84 NA NA NA NA 86 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
M1 %>% dplyr::filter(年代<10) %>% head()
年代 演者 ネタ順 立川志らく 塙宣之 上沼恵美子 松本人志 博多大吉 春風亭小朝 中川礼二 渡辺正行 オール巨人 増田英彦 岩尾望 吉田敬 徳井義実 富澤たけし 石田明 佐藤哲夫 哲夫 島田紳助 南原清隆 大竹まこと 宮迫博之 中田カウス 東国原英夫 ラサール石井 島田洋七 西川きよし 立川談志 鴻上尚史 青島幸男
9 パンクブーブー 8 NA NA 98 93 NA NA NA 91 90 NA NA NA NA NA NA NA NA 94 NA NA NA 97 88 NA NA NA NA NA NA
9 笑い飯 5 NA NA 98 95 NA NA NA 92 93 NA NA NA NA NA NA NA NA 100 NA NA NA 98 92 NA NA NA NA NA NA
9 NON STYLE 9 NA NA 98 92 NA NA NA 90 87 NA NA NA NA NA NA NA NA 90 NA NA NA 95 89 NA NA NA NA NA NA
9 ナイツ 1 NA NA 93 85 NA NA NA 91 90 NA NA NA NA NA NA NA NA 91 NA NA NA 96 88 NA NA NA NA NA NA
9 ハライチ 6 NA NA 91 88 NA NA NA 89 89 NA NA NA NA NA NA NA NA 90 NA NA NA 95 86 NA NA NA NA NA NA
9 東京ダイナマイト 3 NA NA 90 88 NA NA NA 90 86 NA NA NA NA NA NA NA NA 85 NA NA NA 90 85 NA NA NA NA NA NA
M1 %>% dplyr::filter(年代<10) %>% dplyr::select(年代,演者,松本人志) %>% head()
年代 演者 松本人志
9 パンクブーブー 93
9 笑い飯 95
9 NON STYLE 92
9 ナイツ 85
9 ハライチ 88
9 東京ダイナマイト 88

データの操作3;変数の作成

M1 %>% mutate(松本上沼=松本人志+上沼恵美子) %>% head()
年代 演者 ネタ順 立川志らく 塙宣之 上沼恵美子 松本人志 博多大吉 春風亭小朝 中川礼二 渡辺正行 オール巨人 増田英彦 岩尾望 吉田敬 徳井義実 富澤たけし 石田明 佐藤哲夫 哲夫 島田紳助 南原清隆 大竹まこと 宮迫博之 中田カウス 東国原英夫 ラサール石井 島田洋七 西川きよし 立川談志 鴻上尚史 青島幸男 松本上沼
18 見取り図 1 85 85 88 83 NA NA 91 NA 88 NA NA NA NA 86 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 171
18 スーパーマラドーナ 2 88 89 89 85 NA NA 90 NA 87 NA NA NA NA 89 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 174
18 かまいたち 3 88 92 94 90 NA NA 92 NA 89 NA NA NA NA 91 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 184
18 ジャルジャル 4 99 93 88 92 NA NA 93 NA 93 NA NA NA NA 90 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 180
18 ギャロップ 5 86 89 89 86 NA NA 90 NA 87 NA NA NA NA 87 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 175
18 ゆにばーす 6 87 82 84 80 NA NA 91 NA 84 NA NA NA NA 86 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 164

データの操作4;LONG型への変換

とにかく二列にする関数。

M1 %>% tidyr::gather(key,val) %>% head()
key val
年代 18
年代 18
年代 18
年代 18
年代 18
年代 18

二列にしてほしくないところはマイナス。

M1 %>% tidyr::gather(key,val,-年代,-演者,-ネタ順) %>% head()
年代 演者 ネタ順 key val
18 見取り図 1 立川志らく 85
18 スーパーマラドーナ 2 立川志らく 88
18 かまいたち 3 立川志らく 88
18 ジャルジャル 4 立川志らく 99
18 ギャロップ 5 立川志らく 86
18 ゆにばーす 6 立川志らく 87

欠損値を除く。

M1 %>% tidyr::gather(key,val,-年代,-演者,-ネタ順) %>% na.omit %>% head()
年代 演者 ネタ順 key val
18 見取り図 1 立川志らく 85
18 スーパーマラドーナ 2 立川志らく 88
18 かまいたち 3 立川志らく 88
18 ジャルジャル 4 立川志らく 99
18 ギャロップ 5 立川志らく 86
18 ゆにばーす 6 立川志らく 87

データの操作5;グループ化と要約

M1 %>% tidyr::gather(key,val,-年代,-演者,-ネタ順) %>% 
  group_by(key) %>% head()
年代 演者 ネタ順 key val
18 見取り図 1 立川志らく 85
18 スーパーマラドーナ 2 立川志らく 88
18 かまいたち 3 立川志らく 88
18 ジャルジャル 4 立川志らく 99
18 ギャロップ 5 立川志らく 86
18 ゆにばーす 6 立川志らく 87
M1 %>% tidyr::gather(key,val,-年代,-演者,-ネタ順) %>% na.omit %>% 
  group_by(key) %>% summarise(mean(val)) %>% head()
key mean(val)
オール巨人 88.55357
ラサール石井 86.83636
岩尾望 90.66667
吉田敬 87.55556
宮迫博之 92.00000
鴻上尚史 81.80000

Rによるグラフィックス

「キャンバスに重ね描きする」という考え方をベースにした,グラフィックスの文法を学ぼう。

キャンバスの準備

g <- ggplot()

print(g)

サンプルデータセットの活用

iris %>% head()
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
5.1 3.5 1.4 0.2 setosa
4.9 3.0 1.4 0.2 setosa
4.7 3.2 1.3 0.2 setosa
4.6 3.1 1.5 0.2 setosa
5.0 3.6 1.4 0.2 setosa
5.4 3.9 1.7 0.4 setosa

書き方の例2

iris %>% ggplot()  + geom_point(data = iris,
                                mapping = aes(x = Sepal.Length, y = Sepal.Width))

#### 書き方の例3

こちらはキャンパスをirisデータ,x軸をSepal.Length,y軸をSepal.Widthに固定しているので,縦・横軸が異なる図を重ねることができない。

iris %>% ggplot( aes(x = Sepal.Length, y = Sepal.Width))  + geom_point()

あまり使うシーンはないかもしれないが,geom_の中で軸を指定しておくと,異なる軸データをプロットすることもできる。

iris %>% ggplot()  + geom_point( aes(x = Sepal.Length, y = Sepal.Width)) +
   geom_point(aes(x = Petal.Length, y = Petal.Width,color="red"))

色分け

色を分ける変数を指定する。

iris %>% ggplot() + geom_point(aes(x = Sepal.Length, y = Sepal.Width, color=Species))

連続値だとグラデーションになる。

iris %>% ggplot() + geom_point(aes(x = Sepal.Length, y = Sepal.Width, color=Sepal.Length))

aesで表現するのは変数である。つまり,値に応じて変わる場合はaesで指定する。そうでない場合は,aesの外で指定する。

iris %>% ggplot(aes(x = Sepal.Length, y = Sepal.Width)) + 
  geom_point(colour = "blue", size = 3, shape = 5)

実験・調査などで使いそうなデータプロット

ヒストグラム

データ全体の分布を見るためにはヒストグラムを使う。y軸の指定はいらない。

iris %>% ggplot(aes(x = Sepal.Width)) +geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

binwidthで幅を決める。

iris %>% ggplot(aes(x = Sepal.Width)) +geom_histogram(binwidth=1)

群ごとのデータをポイントする

横軸がfactor型だと,群ごとのデータになる。

iris %>% ggplot(aes(x = Species, y = Sepal.Width)) + geom_point()

少し装飾。

iris %>% ggplot(aes(x = Species, y = Sepal.Width)) + 
  geom_point(aes(color=Species,alpha=0.3,size=3))

boxplotはわかりやすい
iris %>% ggplot(aes(x = Species, y = Sepal.Width,fill=Species)) + geom_boxplot()

violin plotは分布が見れるよ
iris %>% ggplot(aes(x = Species, y = Sepal.Width,fill=Species)) + geom_violin()

棒グラフをかいてみよう
iris %>% ggplot(aes(x = Species, y = Sepal.Width,fill=Species)) + 
  geom_bar(stat = "summary", fun.y = mean)

別解

iris %>% ggplot(aes(x = Species, y = Sepal.Width,fill=Species)) + 
  stat_summary(geom="bar",fun.y=mean)

かき分ける;ファセット

グラフを分割するときはファセットを使う。

iris %>% ggplot(aes(x = Sepal.Width,y=Petal.Length)) +geom_point()+
  facet_wrap(~Species)

データが集計済みだったら?or集計した後でプロットする技術

実験などでありがちな,平均値に標準偏差のバーをつけて表示する方法などがこちら。

iris %>% 
  # データを縦長にする
  tidyr::gather(key,val,-Species) %>% print %>% 
  # グルーピングしておく
  group_by(Species,key) %>% 
  # 平均値などの統計量を計算する
  summarise(M=mean(val),U95=quantile(val,probs=0.975),L95=quantile(val,probs=0.025)) %>% 
  print() %>% 
  # 変数を限定する
  dplyr::filter(key=='Sepal.Length') %>% 
  # キャンパスの準備
  ggplot(aes(x=Species,y=M,fill=Species)) +
    # 棒グラフに点をつけて
    geom_bar(stat='identity') + geom_point(stat='identity') +
    # エラーバーを描く
    geom_errorbar(stat='identity',aes(ymin=L95,ymax=U95,width=0.2))
##        Species          key val
## 1       setosa Sepal.Length 5.1
## 2       setosa Sepal.Length 4.9
## 3       setosa Sepal.Length 4.7
## 4       setosa Sepal.Length 4.6
## 5       setosa Sepal.Length 5.0
## 6       setosa Sepal.Length 5.4
## 7       setosa Sepal.Length 4.6
## 8       setosa Sepal.Length 5.0
## 9       setosa Sepal.Length 4.4
## 10      setosa Sepal.Length 4.9
## 11      setosa Sepal.Length 5.4
## 12      setosa Sepal.Length 4.8
## 13      setosa Sepal.Length 4.8
## 14      setosa Sepal.Length 4.3
## 15      setosa Sepal.Length 5.8
## 16      setosa Sepal.Length 5.7
## 17      setosa Sepal.Length 5.4
## 18      setosa Sepal.Length 5.1
## 19      setosa Sepal.Length 5.7
## 20      setosa Sepal.Length 5.1
## 21      setosa Sepal.Length 5.4
## 22      setosa Sepal.Length 5.1
## 23      setosa Sepal.Length 4.6
## 24      setosa Sepal.Length 5.1
## 25      setosa Sepal.Length 4.8
## 26      setosa Sepal.Length 5.0
## 27      setosa Sepal.Length 5.0
## 28      setosa Sepal.Length 5.2
## 29      setosa Sepal.Length 5.2
## 30      setosa Sepal.Length 4.7
## 31      setosa Sepal.Length 4.8
## 32      setosa Sepal.Length 5.4
## 33      setosa Sepal.Length 5.2
## 34      setosa Sepal.Length 5.5
## 35      setosa Sepal.Length 4.9
## 36      setosa Sepal.Length 5.0
## 37      setosa Sepal.Length 5.5
## 38      setosa Sepal.Length 4.9
## 39      setosa Sepal.Length 4.4
## 40      setosa Sepal.Length 5.1
## 41      setosa Sepal.Length 5.0
## 42      setosa Sepal.Length 4.5
## 43      setosa Sepal.Length 4.4
## 44      setosa Sepal.Length 5.0
## 45      setosa Sepal.Length 5.1
## 46      setosa Sepal.Length 4.8
## 47      setosa Sepal.Length 5.1
## 48      setosa Sepal.Length 4.6
## 49      setosa Sepal.Length 5.3
## 50      setosa Sepal.Length 5.0
## 51  versicolor Sepal.Length 7.0
## 52  versicolor Sepal.Length 6.4
## 53  versicolor Sepal.Length 6.9
## 54  versicolor Sepal.Length 5.5
## 55  versicolor Sepal.Length 6.5
## 56  versicolor Sepal.Length 5.7
## 57  versicolor Sepal.Length 6.3
## 58  versicolor Sepal.Length 4.9
## 59  versicolor Sepal.Length 6.6
## 60  versicolor Sepal.Length 5.2
## 61  versicolor Sepal.Length 5.0
## 62  versicolor Sepal.Length 5.9
## 63  versicolor Sepal.Length 6.0
## 64  versicolor Sepal.Length 6.1
## 65  versicolor Sepal.Length 5.6
## 66  versicolor Sepal.Length 6.7
## 67  versicolor Sepal.Length 5.6
## 68  versicolor Sepal.Length 5.8
## 69  versicolor Sepal.Length 6.2
## 70  versicolor Sepal.Length 5.6
## 71  versicolor Sepal.Length 5.9
## 72  versicolor Sepal.Length 6.1
## 73  versicolor Sepal.Length 6.3
## 74  versicolor Sepal.Length 6.1
## 75  versicolor Sepal.Length 6.4
## 76  versicolor Sepal.Length 6.6
## 77  versicolor Sepal.Length 6.8
## 78  versicolor Sepal.Length 6.7
## 79  versicolor Sepal.Length 6.0
## 80  versicolor Sepal.Length 5.7
## 81  versicolor Sepal.Length 5.5
## 82  versicolor Sepal.Length 5.5
## 83  versicolor Sepal.Length 5.8
## 84  versicolor Sepal.Length 6.0
## 85  versicolor Sepal.Length 5.4
## 86  versicolor Sepal.Length 6.0
## 87  versicolor Sepal.Length 6.7
## 88  versicolor Sepal.Length 6.3
## 89  versicolor Sepal.Length 5.6
## 90  versicolor Sepal.Length 5.5
## 91  versicolor Sepal.Length 5.5
## 92  versicolor Sepal.Length 6.1
## 93  versicolor Sepal.Length 5.8
## 94  versicolor Sepal.Length 5.0
## 95  versicolor Sepal.Length 5.6
## 96  versicolor Sepal.Length 5.7
## 97  versicolor Sepal.Length 5.7
## 98  versicolor Sepal.Length 6.2
## 99  versicolor Sepal.Length 5.1
## 100 versicolor Sepal.Length 5.7
## 101  virginica Sepal.Length 6.3
## 102  virginica Sepal.Length 5.8
## 103  virginica Sepal.Length 7.1
## 104  virginica Sepal.Length 6.3
## 105  virginica Sepal.Length 6.5
## 106  virginica Sepal.Length 7.6
## 107  virginica Sepal.Length 4.9
## 108  virginica Sepal.Length 7.3
## 109  virginica Sepal.Length 6.7
## 110  virginica Sepal.Length 7.2
## 111  virginica Sepal.Length 6.5
## 112  virginica Sepal.Length 6.4
## 113  virginica Sepal.Length 6.8
## 114  virginica Sepal.Length 5.7
## 115  virginica Sepal.Length 5.8
## 116  virginica Sepal.Length 6.4
## 117  virginica Sepal.Length 6.5
## 118  virginica Sepal.Length 7.7
## 119  virginica Sepal.Length 7.7
## 120  virginica Sepal.Length 6.0
## 121  virginica Sepal.Length 6.9
## 122  virginica Sepal.Length 5.6
## 123  virginica Sepal.Length 7.7
## 124  virginica Sepal.Length 6.3
## 125  virginica Sepal.Length 6.7
## 126  virginica Sepal.Length 7.2
## 127  virginica Sepal.Length 6.2
## 128  virginica Sepal.Length 6.1
## 129  virginica Sepal.Length 6.4
## 130  virginica Sepal.Length 7.2
## 131  virginica Sepal.Length 7.4
## 132  virginica Sepal.Length 7.9
## 133  virginica Sepal.Length 6.4
## 134  virginica Sepal.Length 6.3
## 135  virginica Sepal.Length 6.1
## 136  virginica Sepal.Length 7.7
## 137  virginica Sepal.Length 6.3
## 138  virginica Sepal.Length 6.4
## 139  virginica Sepal.Length 6.0
## 140  virginica Sepal.Length 6.9
## 141  virginica Sepal.Length 6.7
## 142  virginica Sepal.Length 6.9
## 143  virginica Sepal.Length 5.8
## 144  virginica Sepal.Length 6.8
## 145  virginica Sepal.Length 6.7
## 146  virginica Sepal.Length 6.7
## 147  virginica Sepal.Length 6.3
## 148  virginica Sepal.Length 6.5
## 149  virginica Sepal.Length 6.2
## 150  virginica Sepal.Length 5.9
## 151     setosa  Sepal.Width 3.5
## 152     setosa  Sepal.Width 3.0
## 153     setosa  Sepal.Width 3.2
## 154     setosa  Sepal.Width 3.1
## 155     setosa  Sepal.Width 3.6
## 156     setosa  Sepal.Width 3.9
## 157     setosa  Sepal.Width 3.4
## 158     setosa  Sepal.Width 3.4
## 159     setosa  Sepal.Width 2.9
## 160     setosa  Sepal.Width 3.1
## 161     setosa  Sepal.Width 3.7
## 162     setosa  Sepal.Width 3.4
## 163     setosa  Sepal.Width 3.0
## 164     setosa  Sepal.Width 3.0
## 165     setosa  Sepal.Width 4.0
## 166     setosa  Sepal.Width 4.4
## 167     setosa  Sepal.Width 3.9
## 168     setosa  Sepal.Width 3.5
## 169     setosa  Sepal.Width 3.8
## 170     setosa  Sepal.Width 3.8
## 171     setosa  Sepal.Width 3.4
## 172     setosa  Sepal.Width 3.7
## 173     setosa  Sepal.Width 3.6
## 174     setosa  Sepal.Width 3.3
## 175     setosa  Sepal.Width 3.4
## 176     setosa  Sepal.Width 3.0
## 177     setosa  Sepal.Width 3.4
## 178     setosa  Sepal.Width 3.5
## 179     setosa  Sepal.Width 3.4
## 180     setosa  Sepal.Width 3.2
## 181     setosa  Sepal.Width 3.1
## 182     setosa  Sepal.Width 3.4
## 183     setosa  Sepal.Width 4.1
## 184     setosa  Sepal.Width 4.2
## 185     setosa  Sepal.Width 3.1
## 186     setosa  Sepal.Width 3.2
## 187     setosa  Sepal.Width 3.5
## 188     setosa  Sepal.Width 3.6
## 189     setosa  Sepal.Width 3.0
## 190     setosa  Sepal.Width 3.4
## 191     setosa  Sepal.Width 3.5
## 192     setosa  Sepal.Width 2.3
## 193     setosa  Sepal.Width 3.2
## 194     setosa  Sepal.Width 3.5
## 195     setosa  Sepal.Width 3.8
## 196     setosa  Sepal.Width 3.0
## 197     setosa  Sepal.Width 3.8
## 198     setosa  Sepal.Width 3.2
## 199     setosa  Sepal.Width 3.7
## 200     setosa  Sepal.Width 3.3
## 201 versicolor  Sepal.Width 3.2
## 202 versicolor  Sepal.Width 3.2
## 203 versicolor  Sepal.Width 3.1
## 204 versicolor  Sepal.Width 2.3
## 205 versicolor  Sepal.Width 2.8
## 206 versicolor  Sepal.Width 2.8
## 207 versicolor  Sepal.Width 3.3
## 208 versicolor  Sepal.Width 2.4
## 209 versicolor  Sepal.Width 2.9
## 210 versicolor  Sepal.Width 2.7
## 211 versicolor  Sepal.Width 2.0
## 212 versicolor  Sepal.Width 3.0
## 213 versicolor  Sepal.Width 2.2
## 214 versicolor  Sepal.Width 2.9
## 215 versicolor  Sepal.Width 2.9
## 216 versicolor  Sepal.Width 3.1
## 217 versicolor  Sepal.Width 3.0
## 218 versicolor  Sepal.Width 2.7
## 219 versicolor  Sepal.Width 2.2
## 220 versicolor  Sepal.Width 2.5
## 221 versicolor  Sepal.Width 3.2
## 222 versicolor  Sepal.Width 2.8
## 223 versicolor  Sepal.Width 2.5
## 224 versicolor  Sepal.Width 2.8
## 225 versicolor  Sepal.Width 2.9
## 226 versicolor  Sepal.Width 3.0
## 227 versicolor  Sepal.Width 2.8
## 228 versicolor  Sepal.Width 3.0
## 229 versicolor  Sepal.Width 2.9
## 230 versicolor  Sepal.Width 2.6
## 231 versicolor  Sepal.Width 2.4
## 232 versicolor  Sepal.Width 2.4
## 233 versicolor  Sepal.Width 2.7
## 234 versicolor  Sepal.Width 2.7
## 235 versicolor  Sepal.Width 3.0
## 236 versicolor  Sepal.Width 3.4
## 237 versicolor  Sepal.Width 3.1
## 238 versicolor  Sepal.Width 2.3
## 239 versicolor  Sepal.Width 3.0
## 240 versicolor  Sepal.Width 2.5
## 241 versicolor  Sepal.Width 2.6
## 242 versicolor  Sepal.Width 3.0
## 243 versicolor  Sepal.Width 2.6
## 244 versicolor  Sepal.Width 2.3
## 245 versicolor  Sepal.Width 2.7
## 246 versicolor  Sepal.Width 3.0
## 247 versicolor  Sepal.Width 2.9
## 248 versicolor  Sepal.Width 2.9
## 249 versicolor  Sepal.Width 2.5
## 250 versicolor  Sepal.Width 2.8
## 251  virginica  Sepal.Width 3.3
## 252  virginica  Sepal.Width 2.7
## 253  virginica  Sepal.Width 3.0
## 254  virginica  Sepal.Width 2.9
## 255  virginica  Sepal.Width 3.0
## 256  virginica  Sepal.Width 3.0
## 257  virginica  Sepal.Width 2.5
## 258  virginica  Sepal.Width 2.9
## 259  virginica  Sepal.Width 2.5
## 260  virginica  Sepal.Width 3.6
## 261  virginica  Sepal.Width 3.2
## 262  virginica  Sepal.Width 2.7
## 263  virginica  Sepal.Width 3.0
## 264  virginica  Sepal.Width 2.5
## 265  virginica  Sepal.Width 2.8
## 266  virginica  Sepal.Width 3.2
## 267  virginica  Sepal.Width 3.0
## 268  virginica  Sepal.Width 3.8
## 269  virginica  Sepal.Width 2.6
## 270  virginica  Sepal.Width 2.2
## 271  virginica  Sepal.Width 3.2
## 272  virginica  Sepal.Width 2.8
## 273  virginica  Sepal.Width 2.8
## 274  virginica  Sepal.Width 2.7
## 275  virginica  Sepal.Width 3.3
## 276  virginica  Sepal.Width 3.2
## 277  virginica  Sepal.Width 2.8
## 278  virginica  Sepal.Width 3.0
## 279  virginica  Sepal.Width 2.8
## 280  virginica  Sepal.Width 3.0
## 281  virginica  Sepal.Width 2.8
## 282  virginica  Sepal.Width 3.8
## 283  virginica  Sepal.Width 2.8
## 284  virginica  Sepal.Width 2.8
## 285  virginica  Sepal.Width 2.6
## 286  virginica  Sepal.Width 3.0
## 287  virginica  Sepal.Width 3.4
## 288  virginica  Sepal.Width 3.1
## 289  virginica  Sepal.Width 3.0
## 290  virginica  Sepal.Width 3.1
## 291  virginica  Sepal.Width 3.1
## 292  virginica  Sepal.Width 3.1
## 293  virginica  Sepal.Width 2.7
## 294  virginica  Sepal.Width 3.2
## 295  virginica  Sepal.Width 3.3
## 296  virginica  Sepal.Width 3.0
## 297  virginica  Sepal.Width 2.5
## 298  virginica  Sepal.Width 3.0
## 299  virginica  Sepal.Width 3.4
## 300  virginica  Sepal.Width 3.0
## 301     setosa Petal.Length 1.4
## 302     setosa Petal.Length 1.4
## 303     setosa Petal.Length 1.3
## 304     setosa Petal.Length 1.5
## 305     setosa Petal.Length 1.4
## 306     setosa Petal.Length 1.7
## 307     setosa Petal.Length 1.4
## 308     setosa Petal.Length 1.5
## 309     setosa Petal.Length 1.4
## 310     setosa Petal.Length 1.5
## 311     setosa Petal.Length 1.5
## 312     setosa Petal.Length 1.6
## 313     setosa Petal.Length 1.4
## 314     setosa Petal.Length 1.1
## 315     setosa Petal.Length 1.2
## 316     setosa Petal.Length 1.5
## 317     setosa Petal.Length 1.3
## 318     setosa Petal.Length 1.4
## 319     setosa Petal.Length 1.7
## 320     setosa Petal.Length 1.5
## 321     setosa Petal.Length 1.7
## 322     setosa Petal.Length 1.5
## 323     setosa Petal.Length 1.0
## 324     setosa Petal.Length 1.7
## 325     setosa Petal.Length 1.9
## 326     setosa Petal.Length 1.6
## 327     setosa Petal.Length 1.6
## 328     setosa Petal.Length 1.5
## 329     setosa Petal.Length 1.4
## 330     setosa Petal.Length 1.6
## 331     setosa Petal.Length 1.6
## 332     setosa Petal.Length 1.5
## 333     setosa Petal.Length 1.5
## 334     setosa Petal.Length 1.4
## 335     setosa Petal.Length 1.5
## 336     setosa Petal.Length 1.2
## 337     setosa Petal.Length 1.3
## 338     setosa Petal.Length 1.4
## 339     setosa Petal.Length 1.3
## 340     setosa Petal.Length 1.5
## 341     setosa Petal.Length 1.3
## 342     setosa Petal.Length 1.3
## 343     setosa Petal.Length 1.3
## 344     setosa Petal.Length 1.6
## 345     setosa Petal.Length 1.9
## 346     setosa Petal.Length 1.4
## 347     setosa Petal.Length 1.6
## 348     setosa Petal.Length 1.4
## 349     setosa Petal.Length 1.5
## 350     setosa Petal.Length 1.4
## 351 versicolor Petal.Length 4.7
## 352 versicolor Petal.Length 4.5
## 353 versicolor Petal.Length 4.9
## 354 versicolor Petal.Length 4.0
## 355 versicolor Petal.Length 4.6
## 356 versicolor Petal.Length 4.5
## 357 versicolor Petal.Length 4.7
## 358 versicolor Petal.Length 3.3
## 359 versicolor Petal.Length 4.6
## 360 versicolor Petal.Length 3.9
## 361 versicolor Petal.Length 3.5
## 362 versicolor Petal.Length 4.2
## 363 versicolor Petal.Length 4.0
## 364 versicolor Petal.Length 4.7
## 365 versicolor Petal.Length 3.6
## 366 versicolor Petal.Length 4.4
## 367 versicolor Petal.Length 4.5
## 368 versicolor Petal.Length 4.1
## 369 versicolor Petal.Length 4.5
## 370 versicolor Petal.Length 3.9
## 371 versicolor Petal.Length 4.8
## 372 versicolor Petal.Length 4.0
## 373 versicolor Petal.Length 4.9
## 374 versicolor Petal.Length 4.7
## 375 versicolor Petal.Length 4.3
## 376 versicolor Petal.Length 4.4
## 377 versicolor Petal.Length 4.8
## 378 versicolor Petal.Length 5.0
## 379 versicolor Petal.Length 4.5
## 380 versicolor Petal.Length 3.5
## 381 versicolor Petal.Length 3.8
## 382 versicolor Petal.Length 3.7
## 383 versicolor Petal.Length 3.9
## 384 versicolor Petal.Length 5.1
## 385 versicolor Petal.Length 4.5
## 386 versicolor Petal.Length 4.5
## 387 versicolor Petal.Length 4.7
## 388 versicolor Petal.Length 4.4
## 389 versicolor Petal.Length 4.1
## 390 versicolor Petal.Length 4.0
## 391 versicolor Petal.Length 4.4
## 392 versicolor Petal.Length 4.6
## 393 versicolor Petal.Length 4.0
## 394 versicolor Petal.Length 3.3
## 395 versicolor Petal.Length 4.2
## 396 versicolor Petal.Length 4.2
## 397 versicolor Petal.Length 4.2
## 398 versicolor Petal.Length 4.3
## 399 versicolor Petal.Length 3.0
## 400 versicolor Petal.Length 4.1
## 401  virginica Petal.Length 6.0
## 402  virginica Petal.Length 5.1
## 403  virginica Petal.Length 5.9
## 404  virginica Petal.Length 5.6
## 405  virginica Petal.Length 5.8
## 406  virginica Petal.Length 6.6
## 407  virginica Petal.Length 4.5
## 408  virginica Petal.Length 6.3
## 409  virginica Petal.Length 5.8
## 410  virginica Petal.Length 6.1
## 411  virginica Petal.Length 5.1
## 412  virginica Petal.Length 5.3
## 413  virginica Petal.Length 5.5
## 414  virginica Petal.Length 5.0
## 415  virginica Petal.Length 5.1
## 416  virginica Petal.Length 5.3
## 417  virginica Petal.Length 5.5
## 418  virginica Petal.Length 6.7
## 419  virginica Petal.Length 6.9
## 420  virginica Petal.Length 5.0
## 421  virginica Petal.Length 5.7
## 422  virginica Petal.Length 4.9
## 423  virginica Petal.Length 6.7
## 424  virginica Petal.Length 4.9
## 425  virginica Petal.Length 5.7
## 426  virginica Petal.Length 6.0
## 427  virginica Petal.Length 4.8
## 428  virginica Petal.Length 4.9
## 429  virginica Petal.Length 5.6
## 430  virginica Petal.Length 5.8
## 431  virginica Petal.Length 6.1
## 432  virginica Petal.Length 6.4
## 433  virginica Petal.Length 5.6
## 434  virginica Petal.Length 5.1
## 435  virginica Petal.Length 5.6
## 436  virginica Petal.Length 6.1
## 437  virginica Petal.Length 5.6
## 438  virginica Petal.Length 5.5
## 439  virginica Petal.Length 4.8
## 440  virginica Petal.Length 5.4
## 441  virginica Petal.Length 5.6
## 442  virginica Petal.Length 5.1
## 443  virginica Petal.Length 5.1
## 444  virginica Petal.Length 5.9
## 445  virginica Petal.Length 5.7
## 446  virginica Petal.Length 5.2
## 447  virginica Petal.Length 5.0
## 448  virginica Petal.Length 5.2
## 449  virginica Petal.Length 5.4
## 450  virginica Petal.Length 5.1
## 451     setosa  Petal.Width 0.2
## 452     setosa  Petal.Width 0.2
## 453     setosa  Petal.Width 0.2
## 454     setosa  Petal.Width 0.2
## 455     setosa  Petal.Width 0.2
## 456     setosa  Petal.Width 0.4
## 457     setosa  Petal.Width 0.3
## 458     setosa  Petal.Width 0.2
## 459     setosa  Petal.Width 0.2
## 460     setosa  Petal.Width 0.1
## 461     setosa  Petal.Width 0.2
## 462     setosa  Petal.Width 0.2
## 463     setosa  Petal.Width 0.1
## 464     setosa  Petal.Width 0.1
## 465     setosa  Petal.Width 0.2
## 466     setosa  Petal.Width 0.4
## 467     setosa  Petal.Width 0.4
## 468     setosa  Petal.Width 0.3
## 469     setosa  Petal.Width 0.3
## 470     setosa  Petal.Width 0.3
## 471     setosa  Petal.Width 0.2
## 472     setosa  Petal.Width 0.4
## 473     setosa  Petal.Width 0.2
## 474     setosa  Petal.Width 0.5
## 475     setosa  Petal.Width 0.2
## 476     setosa  Petal.Width 0.2
## 477     setosa  Petal.Width 0.4
## 478     setosa  Petal.Width 0.2
## 479     setosa  Petal.Width 0.2
## 480     setosa  Petal.Width 0.2
## 481     setosa  Petal.Width 0.2
## 482     setosa  Petal.Width 0.4
## 483     setosa  Petal.Width 0.1
## 484     setosa  Petal.Width 0.2
## 485     setosa  Petal.Width 0.2
## 486     setosa  Petal.Width 0.2
## 487     setosa  Petal.Width 0.2
## 488     setosa  Petal.Width 0.1
## 489     setosa  Petal.Width 0.2
## 490     setosa  Petal.Width 0.2
## 491     setosa  Petal.Width 0.3
## 492     setosa  Petal.Width 0.3
## 493     setosa  Petal.Width 0.2
## 494     setosa  Petal.Width 0.6
## 495     setosa  Petal.Width 0.4
## 496     setosa  Petal.Width 0.3
## 497     setosa  Petal.Width 0.2
## 498     setosa  Petal.Width 0.2
## 499     setosa  Petal.Width 0.2
## 500     setosa  Petal.Width 0.2
## 501 versicolor  Petal.Width 1.4
## 502 versicolor  Petal.Width 1.5
## 503 versicolor  Petal.Width 1.5
## 504 versicolor  Petal.Width 1.3
## 505 versicolor  Petal.Width 1.5
## 506 versicolor  Petal.Width 1.3
## 507 versicolor  Petal.Width 1.6
## 508 versicolor  Petal.Width 1.0
## 509 versicolor  Petal.Width 1.3
## 510 versicolor  Petal.Width 1.4
## 511 versicolor  Petal.Width 1.0
## 512 versicolor  Petal.Width 1.5
## 513 versicolor  Petal.Width 1.0
## 514 versicolor  Petal.Width 1.4
## 515 versicolor  Petal.Width 1.3
## 516 versicolor  Petal.Width 1.4
## 517 versicolor  Petal.Width 1.5
## 518 versicolor  Petal.Width 1.0
## 519 versicolor  Petal.Width 1.5
## 520 versicolor  Petal.Width 1.1
## 521 versicolor  Petal.Width 1.8
## 522 versicolor  Petal.Width 1.3
## 523 versicolor  Petal.Width 1.5
## 524 versicolor  Petal.Width 1.2
## 525 versicolor  Petal.Width 1.3
## 526 versicolor  Petal.Width 1.4
## 527 versicolor  Petal.Width 1.4
## 528 versicolor  Petal.Width 1.7
## 529 versicolor  Petal.Width 1.5
## 530 versicolor  Petal.Width 1.0
## 531 versicolor  Petal.Width 1.1
## 532 versicolor  Petal.Width 1.0
## 533 versicolor  Petal.Width 1.2
## 534 versicolor  Petal.Width 1.6
## 535 versicolor  Petal.Width 1.5
## 536 versicolor  Petal.Width 1.6
## 537 versicolor  Petal.Width 1.5
## 538 versicolor  Petal.Width 1.3
## 539 versicolor  Petal.Width 1.3
## 540 versicolor  Petal.Width 1.3
## 541 versicolor  Petal.Width 1.2
## 542 versicolor  Petal.Width 1.4
## 543 versicolor  Petal.Width 1.2
## 544 versicolor  Petal.Width 1.0
## 545 versicolor  Petal.Width 1.3
## 546 versicolor  Petal.Width 1.2
## 547 versicolor  Petal.Width 1.3
## 548 versicolor  Petal.Width 1.3
## 549 versicolor  Petal.Width 1.1
## 550 versicolor  Petal.Width 1.3
## 551  virginica  Petal.Width 2.5
## 552  virginica  Petal.Width 1.9
## 553  virginica  Petal.Width 2.1
## 554  virginica  Petal.Width 1.8
## 555  virginica  Petal.Width 2.2
## 556  virginica  Petal.Width 2.1
## 557  virginica  Petal.Width 1.7
## 558  virginica  Petal.Width 1.8
## 559  virginica  Petal.Width 1.8
## 560  virginica  Petal.Width 2.5
## 561  virginica  Petal.Width 2.0
## 562  virginica  Petal.Width 1.9
## 563  virginica  Petal.Width 2.1
## 564  virginica  Petal.Width 2.0
## 565  virginica  Petal.Width 2.4
## 566  virginica  Petal.Width 2.3
## 567  virginica  Petal.Width 1.8
## 568  virginica  Petal.Width 2.2
## 569  virginica  Petal.Width 2.3
## 570  virginica  Petal.Width 1.5
## 571  virginica  Petal.Width 2.3
## 572  virginica  Petal.Width 2.0
## 573  virginica  Petal.Width 2.0
## 574  virginica  Petal.Width 1.8
## 575  virginica  Petal.Width 2.1
## 576  virginica  Petal.Width 1.8
## 577  virginica  Petal.Width 1.8
## 578  virginica  Petal.Width 1.8
## 579  virginica  Petal.Width 2.1
## 580  virginica  Petal.Width 1.6
## 581  virginica  Petal.Width 1.9
## 582  virginica  Petal.Width 2.0
## 583  virginica  Petal.Width 2.2
## 584  virginica  Petal.Width 1.5
## 585  virginica  Petal.Width 1.4
## 586  virginica  Petal.Width 2.3
## 587  virginica  Petal.Width 2.4
## 588  virginica  Petal.Width 1.8
## 589  virginica  Petal.Width 1.8
## 590  virginica  Petal.Width 2.1
## 591  virginica  Petal.Width 2.4
## 592  virginica  Petal.Width 2.3
## 593  virginica  Petal.Width 1.9
## 594  virginica  Petal.Width 2.3
## 595  virginica  Petal.Width 2.5
## 596  virginica  Petal.Width 2.3
## 597  virginica  Petal.Width 1.9
## 598  virginica  Petal.Width 2.0
## 599  virginica  Petal.Width 2.3
## 600  virginica  Petal.Width 1.8
## # A tibble: 12 x 5
## # Groups:   Species [?]
##    Species    key              M   U95   L95
##    <fct>      <chr>        <dbl> <dbl> <dbl>
##  1 setosa     Petal.Length 1.46  1.85   1.12
##  2 setosa     Petal.Width  0.246 0.477  0.1 
##  3 setosa     Sepal.Length 5.01  5.7    4.4 
##  4 setosa     Sepal.Width  3.43  4.18   2.92
##  5 versicolor Petal.Length 4.26  4.98   3.3 
##  6 versicolor Petal.Width  1.33  1.68   1   
##  7 versicolor Sepal.Length 5.94  6.88   5   
##  8 versicolor Sepal.Width  2.77  3.28   2.2 
##  9 virginica  Petal.Length 5.55  6.7    4.8 
## 10 virginica  Petal.Width  2.03  2.5    1.5 
## 11 virginica  Sepal.Length 6.59  7.7    5.62
## 12 virginica  Sepal.Width  2.97  3.76   2.5

課題1

  1. こちらからデータセットファイルをダウンロードし,プロジェクトフォルダに保存し,
  2. 野球選手に関するデータセットファイル(baseball2019.csv)を読み込み,
  3. ピッチャーの身長・体重データを選び出し,
  4. BMIを計算して
  5. 12球団ごとのBMIの平均値を棒グラフで表しなさい

多次元尺度構成法

ヨーロッパ都市間の距離データ(Rのデフォルト)を使います

eurodist
##                 Athens Barcelona Brussels Calais Cherbourg Cologne
## Barcelona         3313                                            
## Brussels          2963      1318                                  
## Calais            3175      1326      204                         
## Cherbourg         3339      1294      583    460                  
## Cologne           2762      1498      206    409       785        
## Copenhagen        3276      2218      966   1136      1545     760
## Geneva            2610       803      677    747       853    1662
## Gibraltar         4485      1172     2256   2224      2047    2436
## Hamburg           2977      2018      597    714      1115     460
## Hook of Holland   3030      1490      172    330       731     269
## Lisbon            4532      1305     2084   2052      1827    2290
## Lyons             2753       645      690    739       789     714
## Madrid            3949       636     1558   1550      1347    1764
## Marseilles        2865       521     1011   1059      1101    1035
## Milan             2282      1014      925   1077      1209     911
## Munich            2179      1365      747    977      1160     583
## Paris             3000      1033      285    280       340     465
## Rome               817      1460     1511   1662      1794    1497
## Stockholm         3927      2868     1616   1786      2196    1403
## Vienna            1991      1802     1175   1381      1588     937
##                 Copenhagen Geneva Gibraltar Hamburg Hook of Holland Lisbon
## Barcelona                                                                 
## Brussels                                                                  
## Calais                                                                    
## Cherbourg                                                                 
## Cologne                                                                   
## Copenhagen                                                                
## Geneva                1418                                                
## Gibraltar             3196   1975                                         
## Hamburg                460   1118      2897                               
## Hook of Holland        269    895      2428     550                       
## Lisbon                2971   1936       676    2671            2280       
## Lyons                 1458    158      1817    1159             863   1178
## Madrid                2498   1439       698    2198            1730    668
## Marseilles            1778    425      1693    1479            1183   1762
## Milan                 1537    328      2185    1238            1098   2250
## Munich                1104    591      2565     805             851   2507
## Paris                 1176    513      1971     877             457   1799
## Rome                  2050    995      2631    1751            1683   2700
## Stockholm              650   2068      3886     949            1500   3231
## Vienna                1455   1019      2974    1155            1205   2937
##                 Lyons Madrid Marseilles Milan Munich Paris Rome Stockholm
## Barcelona                                                                
## Brussels                                                                 
## Calais                                                                   
## Cherbourg                                                                
## Cologne                                                                  
## Copenhagen                                                               
## Geneva                                                                   
## Gibraltar                                                                
## Hamburg                                                                  
## Hook of Holland                                                          
## Lisbon                                                                   
## Lyons                                                                    
## Madrid           1281                                                    
## Marseilles        320   1157                                             
## Milan             328   1724        618                                  
## Munich            724   2010       1109   331                            
## Paris             471   1273        792   856    821                     
## Rome             1048   2097       1011   586    946  1476               
## Stockholm        2108   3188       2428  2187   1754  1827 2707          
## Vienna           1157   2409       1363   898    428  1249 1209      2105

メトリックなMDSで分析

#描画に使うパッケージの読み込み
library(ggrepel)

# MDSの関数
result.MDS1 <- cmdscale(eurodist,k=3)
# 結果と描画
result.MDS1 %>% as.data.frame %>% 
  dplyr::mutate(label=rownames(.)) %>% 
  ggplot(aes(x=V1,y=V2,label=label))+geom_point()+geom_text_repel()+
  xlim(-2500,2500)+ylim(-2500,2500)+xlab("dim 1")+ylab("dim2")

南北反転?

# y軸反転
result.MDS1 %>% as.data.frame %>% 
  dplyr::mutate(label=rownames(.)) %>% 
  ggplot(aes(x=V1,y=V2,label=label))+geom_point()+geom_text_repel()+
  xlim(-2500,2500)+ylim(2500,-2500)+xlab("dim 1")+ylab("dim2")

距離の関数

サンプルデータ(あやめ)

iris[,-5] %>% head()
Sepal.Length Sepal.Width Petal.Length Petal.Width
5.1 3.5 1.4 0.2
4.9 3.0 1.4 0.2
4.7 3.2 1.3 0.2
4.6 3.1 1.5 0.2
5.0 3.6 1.4 0.2
5.4 3.9 1.7 0.4
# ユークリッド距離
iris[,-5] %>% head() %>% dist()
##           1         2         3         4         5
## 2 0.5385165                                        
## 3 0.5099020 0.3000000                              
## 4 0.6480741 0.3316625 0.2449490                    
## 5 0.1414214 0.6082763 0.5099020 0.6480741          
## 6 0.6164414 1.0908712 1.0862780 1.1661904 0.6164414
# マンハッタン距離
iris[,-5] %>% head() %>% dist(method="manhattan")
##     1   2   3   4   5
## 2 0.7                
## 3 0.8 0.5            
## 4 1.0 0.5 0.4        
## 5 0.2 0.7 0.8 1.0    
## 6 1.2 1.9 2.0 2.0 1.2
# ミンコフスキー距離
iris[,-5] %>% head() %>% dist(method="minkowski",p=3)
##           1         2         3         4         5
## 2 0.5104469                                        
## 3 0.4514357 0.2571282                              
## 4 0.5748897 0.3072317 0.2154435                    
## 5 0.1259921 0.6009245 0.4514357 0.5748897          
## 6 0.5013298 0.9615398 0.9117793 1.0131594 0.5013298

非計量MDSの例

データ;M-1グランプリ2019の採点結果より

+ こちらからデータファイルをダウンロードし,プロジェクトフォルダに保存してください。

read_csv("M1score.csv",na=".") %>% dplyr::filter(年代==18) %>% 
  dplyr::select("立川志らく","塙宣之","上沼恵美子","松本人志","中川礼二","オール巨人","富澤たけし") %>% 
  as.matrix() -> M1_2018
## Parsed with column specification:
## cols(
##   .default = col_double(),
##   演者 = col_character()
## )
## See spec(...) for full column specifications.
row.names(M1_2018) <- c("見取り図",
                        "スーパーマラドーナ",
                        "かまいたち",
                        "ジャルジャル",
                        "ギャロップ",
                        "ゆにばーす",
                        "ミキ",
                        "トム・ブラウン",
                        "霜降り明星",
                        "和牛")

M1_2018
##                    立川志らく 塙宣之 上沼恵美子 松本人志 中川礼二
## 見取り図                   85     85         88       83       91
## スーパーマラドーナ         88     89         89       85       90
## かまいたち                 88     92         94       90       92
## ジャルジャル               99     93         88       92       93
## ギャロップ                 86     89         89       86       90
## ゆにばーす                 87     82         84       80       91
## ミキ                       89     90         98       88       93
## トム・ブラウン             97     93         86       91       90
## 霜降り明星                 93     98         97       94       96
## 和牛                       93     94         98       93       94
##                    オール巨人 富澤たけし
## 見取り図                   88         86
## スーパーマラドーナ         87         89
## かまいたち                 89         91
## ジャルジャル               93         90
## ギャロップ                 87         87
## ゆにばーす                 84         86
## ミキ                       90         90
## トム・ブラウン             87         89
## 霜降り明星                 93         91
## 和牛                       92         92
# 距離データ表示
(dist_M1 <- dist(M1_2018))
##                     見取り図 スーパーマラドーナ かまいたち ジャルジャル
## スーパーマラドーナ  6.403124                                           
## かまいたち         13.038405           8.426150                        
## ジャルジャル       19.646883          15.264338  13.416408             
## ギャロップ          5.477226           3.000000   8.831761    16.613248
## ゆにばーす          7.348469          10.908712  18.761663    22.934690
## ミキ               13.784049          10.535654   5.291503    15.297059
## トム・ブラウン     16.941074          11.916375  12.609520     7.416198
## 霜降り明星         22.583180          18.083141  10.862780    12.489996
## 和牛               20.149442          15.652476   8.246211    12.000000
##                    ギャロップ ゆにばーす      ミキ トム・ブラウン
## スーパーマラドーナ                                               
## かまいたち                                                       
## ジャルジャル                                                     
## ギャロップ                                                       
## ゆにばーす          11.045361                                    
## ミキ                11.045361  19.595918                         
## トム・ブラウン      13.228757  19.104973 15.652476               
## 霜降り明星          18.601075  28.071338 11.661904      15.716234
## 和牛                16.431677  25.573424  8.124038      14.662878
##                    霜降り明星
## スーパーマラドーナ           
## かまいたち                   
## ジャルジャル                 
## ギャロップ                   
## ゆにばーす                   
## ミキ                         
## トム・ブラウン               
## 霜降り明星                   
## 和牛                 4.898979
分析;isoMDS関数の例
library(MASS)
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
result.MDS2 <- isoMDS(dist_M1,k=2)
## initial  value 1.421320 
## iter   5 value 0.721192
## iter  10 value 0.195694
## iter  15 value 0.100712
## iter  20 value 0.074457
## iter  25 value 0.050977
## iter  30 value 0.029949
## iter  35 value 0.018306
## iter  40 value 0.015114
## iter  45 value 0.013833
## iter  50 value 0.013671
## final  value 0.013671 
## stopped after 50 iterations
結果
result.MDS2$points %>% as.data.frame %>% 
  dplyr::mutate(label=rownames(.)) %>% 
  ggplot(aes(x=V1,y=V2,label=label))+geom_point()+
  geom_text_repel(family = "HiraKakuProN-W3")+
  xlim(-15,15) + ylim(-15,15)+
  xlab("dim 1")+ylab("dim2") 

列データのMDS
result.MDS3 <- dist(t(M1_2018)) %>% isoMDS()
## initial  value 11.739729 
## iter   5 value 3.554095
## iter  10 value 0.528016
## iter  15 value 0.152710
## iter  20 value 0.051220
## final  value 0.006151 
## converged
result.MDS3$points %>% as.data.frame %>% 
  dplyr::mutate(label=rownames(.)) %>% 
  ggplot(aes(x=V1,y=V2,label=label))+geom_point()+
  geom_text_repel(family = "HiraKakuProN-W3")+
  xlim(-12,12) + ylim(-12,12)+
  xlab("dim 1")+ylab("dim2") 

クラスター分析

同じ距離データからの分類でも,クラスター分析という方法もある。 クラスター分析は階層的な方法と非階層的な方法の二種類がある。

階層的クラスター分析

result.hcl <- hclust(dist_M1)
par(family = "HiraKakuProN-W3")
plot(result.hcl)

好きな数に切り分ければ良い。

cutree(result.hcl,3)
##           見取り図 スーパーマラドーナ         かまいたち 
##                  1                  1                  2 
##       ジャルジャル         ギャロップ         ゆにばーす 
##                  3                  1                  1 
##               ミキ     トム・ブラウン         霜降り明星 
##                  2                  3                  2 
##               和牛 
##                  2

非階層的クラスター分析

k-means法が代表的。

set.seed(123)
kmeans(dist_M1,3) 
## K-means clustering with 3 clusters of sizes 4, 4, 2
## 
## Cluster means:
##    見取り図 スーパーマラドーナ かまいたち ジャルジャル ギャロップ
## 1 17.388769          13.174355   6.100124    13.300866  13.727468
## 2  4.807205           5.077959  12.264495    18.614789   4.880647
## 3 18.293979          13.590356  13.012964     3.708099  14.921002
##   ゆにばーす      ミキ トム・ブラウン 霜降り明星      和牛
## 1  23.000586  6.269361      14.660277   6.855916  5.317307
## 2   7.325636 13.740245      15.297795  21.834683 19.451754
## 3  21.019832 15.474767       3.708099  14.103115 13.331439
## 
## Clustering vector:
##           見取り図 スーパーマラドーナ         かまいたち 
##                  2                  2                  1 
##       ジャルジャル         ギャロップ         ゆにばーす 
##                  3                  2                  2 
##               ミキ     トム・ブラウン         霜降り明星 
##                  1                  3                  1 
##               和牛 
##                  1 
## 
## Within cluster sum of squares by cluster:
## [1] 535.86510 559.00091  86.46434
##  (between_SS / total_SS =  71.2 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"    
## [5] "tot.withinss" "betweenss"    "size"         "iter"        
## [9] "ifault"

課題2

  1. 野球選手に関するデータセットファイル(baseball2019.csv)を読み込み,
  2. バッター(投手以外)のデータに限定し,
  3. 年俸(saraly)と打数のデータを選び出し,
  4. 欠損値が含まれているのでna.omit関数でそれらのデータを除外した上で,
  5. 階層的クラスタリングを行い,デンドログラムを描画しなさい。
## Parsed with column specification:
## cols(
##   .default = col_double(),
##   Name = col_character(),
##   team = col_character(),
##   position = col_character(),
##   bloodType = col_character(),
##   throw.by = col_character(),
##   batting.by = col_character(),
##   birth.place = col_character(),
##   birth.day = col_date(format = ""),
##   背番号 = col_character()
## )
## See spec(...) for full column specifications.