library("tidyverse")
## ─ Attaching packages ── tidyverse 1.2.1 ─
## ✔ ggplot2 3.1.0 ✔ purrr 0.3.0
## ✔ tibble 1.4.2 ✔ dplyr 0.7.8
## ✔ tidyr 0.8.2 ✔ stringr 1.3.1
## ✔ readr 1.3.1 ✔ forcats 0.3.0
## Warning: package 'purrr' was built under R version 3.5.2
## ─ Conflicts ─── tidyverse_conflicts() ─
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
if (capabilities("aqua")) { # Macかどうか判定し、Macの場合のみ実行
theme_set(theme_gray(base_size = 10, base_family = "HiraginoSans-W3"))
}
衆院選データを読み込み。読み込みと同時にすぐさま確認する。
HR <- read_rds("data/hr-data.Rds")
glimpse(HR)
## Observations: 8,803
## Variables: 22
## $ year <int> 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 199...
## $ ku <chr> "aichi", "aichi", "aichi", "aichi", "aichi", "aichi...
## $ kun <int> 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, ...
## $ status <fct> 現職, 元職, 現職, 新人, 新人, 新人, 新人, 現職, 元職, 新人, 新人, 新人, 新人,...
## $ name <chr> "KAWAMURA, TAKASHI", "IMAEDA, NORIO", "SATO, TAISUK...
## $ party <chr> "NFP", "LDP", "DPJ", "JCP", "others", "kokuminto", ...
## $ party_code <int> 8, 1, 3, 2, 100, 22, 99, 8, 1, 3, 2, 10, 100, 99, 2...
## $ previous <int> 2, 3, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 3, ...
## $ wl <fct> 当選, 落選, 落選, 落選, 落選, 落選, 落選, 当選, 落選, 復活当選, 落選, 落選, 落...
## $ voteshare <dbl> 40.0, 25.7, 20.1, 13.3, 0.4, 0.3, 0.2, 32.9, 26.4, ...
## $ age <int> 47, 72, 53, 43, 51, 51, 45, 51, 71, 30, 31, 44, 61,...
## $ nocand <int> 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, ...
## $ rank <int> 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, ...
## $ vote <int> 66876, 42969, 33503, 22209, 616, 566, 312, 56101, 4...
## $ eligible <int> 346774, 346774, 346774, 346774, 346774, 346774, 346...
## $ turnout <dbl> 49.2, 49.2, 49.2, 49.2, 49.2, 49.2, 49.2, 51.8, 51....
## $ exp <int> 9828097, 9311555, 9231284, 2177203, NA, NA, NA, 129...
## $ expm <dbl> 9.828097, 9.311555, 9.231284, 2.177203, NA, NA, NA,...
## $ vs <dbl> 0.400, 0.257, 0.201, 0.133, 0.004, 0.003, 0.002, 0....
## $ exppv <dbl> 28.341505, 26.851941, 26.620462, 6.278449, NA, NA, ...
## $ smd <fct> 当選, 落選, 落選, 落選, 落選, 落選, 落選, 当選, 落選, 落選, 落選, 落選, 落選,...
## $ party_jpn <chr> "新進党", "自民党", "民主党", "共産党", "その他", "国民党", "無所属", "新...
names(HR)
## [1] "year" "ku" "kun" "status" "name"
## [6] "party" "party_code" "previous" "wl" "voteshare"
## [11] "age" "nocand" "rank" "vote" "eligible"
## [16] "turnout" "exp" "expm" "vs" "exppv"
## [21] "smd" "party_jpn"
summary(HR) #いわゆる記述統計
## year ku kun status
## Min. :1996 Length:8803 Min. : 1.000 新人:5096
## 1st Qu.:2000 Class :character 1st Qu.: 2.000 現職:3138
## Median :2005 Mode :character Median : 4.000 元職: 569
## Mean :2007 Mean : 5.738
## 3rd Qu.:2012 3rd Qu.: 8.000
## Max. :2017 Max. :25.000
##
## name party party_code previous
## Length:8803 Length:8803 Min. : 1.00 Min. : 0.000
## Class :character Class :character 1st Qu.: 1.00 1st Qu.: 0.000
## Mode :character Mode :character Median : 3.00 Median : 0.000
## Mean : 12.04 Mean : 1.712
## 3rd Qu.: 8.00 3rd Qu.: 3.000
## Max. :100.00 Max. :20.000
##
## wl voteshare age nocand
## 落選 :5563 Min. : 0.10 Min. :25.0 Min. :2.000
## 当選 :2379 1st Qu.: 8.90 1st Qu.:43.0 1st Qu.:3.000
## 復活当選: 861 Median :25.76 Median :51.0 Median :4.000
## Mean :27.08 Mean :50.9 Mean :3.956
## 3rd Qu.:42.90 3rd Qu.:59.0 3rd Qu.:5.000
## Max. :95.30 Max. :94.0 Max. :9.000
## NA's :5
## rank vote eligible turnout
## Min. :1.000 Min. : 177 Min. :115013 Min. :48.90
## 1st Qu.:1.000 1st Qu.: 18240 1st Qu.:269294 1st Qu.:57.80
## Median :2.000 Median : 49021 Median :330188 Median :62.70
## Mean :2.477 Mean : 54911 Mean :325666 Mean :62.96
## 3rd Qu.:3.000 3rd Qu.: 86494 3rd Qu.:390637 3rd Qu.:67.53
## Max. :9.000 Max. :201461 Max. :495212 Max. :83.80
## NA's :959 NA's :1895
## exp expm vs exppv
## Min. : 535 Min. : 0.0005 Min. :0.0010 Min. : 0.0013
## 1st Qu.: 2803566 1st Qu.: 2.8036 1st Qu.:0.0890 1st Qu.: 8.1711
## Median : 6541589 Median : 6.5416 Median :0.2576 Median : 18.7049
## Mean : 7542700 Mean : 7.5427 Mean :0.2708 Mean : 23.0375
## 3rd Qu.:11044485 3rd Qu.:11.0445 3rd Qu.:0.4290 3rd Qu.: 33.4005
## Max. :27462362 Max. :27.4624 Max. :0.9530 Max. :119.2479
## NA's :2043 NA's :2043 NA's :2043
## smd party_jpn
## 落選:6424 Length:8803
## 当選:2379 Class :character
## Mode :character
##
##
##
##
理論的検討:「(例えば)選挙費用と当落は関係あるのか?」(探りの段階)
まず、選挙費用と得票率の関係をみてみる必要がある。そこでまずは散布図を作成してみよう。
hy_plot1 <- HR %>% ggplot(aes( x =expm , y = voteshare))+
geom_point() + #()の中を省略すると同上の内容を自動で入力してくれる。
geom_smooth(method = "lm", se = FALSE) +
labs(x = "選挙費用 (100万円)", y = "得票率 (%)")
print(hy_plot1)
## Warning: Removed 2043 rows containing non-finite values (stat_smooth).
## Warning: Removed 2043 rows containing missing values (geom_point).
サンプルサイズが大きかったので、見辛い結果となった。
また、選挙実施年によって二変数の関係は異なるのでは?
そこで、選挙年を統一(コントロール)して、特定の年のだけを見てみよう。
HR2012 <- dplyr::filter(HR, year == 2012)
glimpse(HR2012)
## Observations: 1,294
## Variables: 22
## $ year <int> 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 201...
## $ ku <chr> "aichi", "aichi", "aichi", "aichi", "aichi", "aichi...
## $ kun <int> 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, ...
## $ status <fct> 新人, 現職, 現職, 新人, 現職, 新人, 新人, 新人, 新人, 現職, 新人, 新人, 新人,...
## $ name <chr> "KUMADA, HIROMICHI", "SATO, YUKO", "YOSHIDA, TSUNEH...
## $ party <chr> "LDP", "mirai", "DPJ", "JCP", "DPJ", "LDP", "mirai"...
## $ party_code <int> 1, 12, 3, 2, 3, 1, 12, 2, 1, 3, 12, 2, 1, 12, 11, 3...
## $ previous <int> 1, 1, 0, 0, 5, 1, 0, 0, 1, 6, 0, 0, 1, 4, 0, 0, 0, ...
## $ wl <fct> 当選, 落選, 落選, 落選, 当選, 復活当選, 落選, 落選, 当選, 復活当選, 落選, 落選,...
## $ voteshare <dbl> 40.7, 31.8, 19.3, 8.2, 44.8, 31.9, 15.2, 8.1, 36.7,...
## $ age <int> 48, 49, 38, 49, 47, 41, 51, 64, 46, 54, 38, 47, 48,...
## $ nocand <int> 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, ...
## $ rank <int> 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 5, ...
## $ vote <int> 77215, 60293, 36578, 15512, 94058, 67086, 31974, 16...
## $ eligible <int> 373297, 373297, 373297, 373297, 383295, 383295, 383...
## $ turnout <dbl> 52.7, 52.7, 52.7, 52.7, 56.8, 56.8, 56.8, 56.8, 56....
## $ exp <int> 15215857, 3864350, 11853832, 1220570, 7592182, 7048...
## $ expm <dbl> 15.215857, 3.864350, 11.853832, 1.220570, 7.592182,...
## $ vs <dbl> 0.407, 0.318, 0.193, 0.082, 0.448, 0.319, 0.152, 0....
## $ exppv <dbl> 40.760727, 10.351945, 31.754426, 3.269702, 19.80767...
## $ smd <fct> 当選, 落選, 落選, 落選, 当選, 落選, 落選, 落選, 当選, 落選, 落選, 落選, 当選,...
## $ party_jpn <chr> "自民党", "未来", "民主党", "共産党", "民主党", "自民党", "未来", "共産党...
summary(HR2012)
## year ku kun status
## Min. :2012 Length:1294 Min. : 1.00 新人:790
## 1st Qu.:2012 Class :character 1st Qu.: 2.00 現職:404
## Median :2012 Mode :character Median : 4.00 元職:100
## Mean :2012 Mean : 5.86
## 3rd Qu.:2012 3rd Qu.: 8.00
## Max. :2012 Max. :25.00
##
## name party party_code previous
## Length:1294 Length:1294 Min. : 1.000 Min. : 0.000
## Class :character Class :character 1st Qu.: 2.000 1st Qu.: 0.000
## Mode :character Mode :character Median : 3.000 Median : 0.000
## Mean : 8.936 Mean : 1.519
## 3rd Qu.: 11.000 3rd Qu.: 2.000
## Max. :100.000 Max. :15.000
##
## wl voteshare age nocand
## 落選 :869 Min. : 0.20 Min. :25.00 Min. :2.000
## 当選 :300 1st Qu.: 8.50 1st Qu.:41.00 1st Qu.:4.000
## 復活当選:125 Median :18.95 Median :50.00 Median :4.000
## Mean :23.18 Mean :50.28 Mean :4.556
## 3rd Qu.:34.62 3rd Qu.:59.00 3rd Qu.:5.000
## Max. :84.50 Max. :94.00 Max. :9.000
##
## rank vote eligible turnout
## Min. :1.000 Min. : 608 Min. :203712 Min. :50.20
## 1st Qu.:2.000 1st Qu.: 17538 1st Qu.:299363 1st Qu.:57.20
## Median :3.000 Median : 39278 Median :358266 Median :59.10
## Mean :2.778 Mean : 46079 Mean :354494 Mean :59.37
## 3rd Qu.:4.000 3rd Qu.: 69254 3rd Qu.:413960 3rd Qu.:61.70
## Max. :9.000 Max. :192604 Max. :495212 Max. :69.80
##
## exp expm vs
## Min. : 535 Min. : 0.000535 Min. :0.0020
## 1st Qu.: 2268244 1st Qu.: 2.268244 1st Qu.:0.0850
## Median : 5381219 Median : 5.381219 Median :0.1895
## Mean : 5761645 Mean : 5.761645 Mean :0.2318
## 3rd Qu.: 8104032 3rd Qu.: 8.104032 3rd Qu.:0.3463
## Max. :27462362 Max. :27.462362 Max. :0.8450
## NA's :14 NA's :14
## exppv smd party_jpn
## Min. : 0.00126 落選:994 Length:1294
## 1st Qu.: 6.08015 当選:300 Class :character
## Median :14.86205 Mode :character
## Mean :17.16598
## 3rd Qu.:23.62160
## Max. :94.59168
## NA's :14
結果、year変数2012に限った、1294のサンプルサイズのデータフレームとなる。
さらに、政党数も多すぎるので、主要政党に限定してみよう。 ここは無難に、自民、民主、公明、共産、社民を抽出する。
HR2 <- dplyr::filter(HR2012, party %in% c("LDP", "DPJ", "CGP", "SDP", "JCP"))
glimpse(HR2)
## Observations: 884
## Variables: 22
## $ year <int> 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 201...
## $ ku <chr> "aichi", "aichi", "aichi", "aichi", "aichi", "aichi...
## $ kun <int> 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, ...
## $ status <fct> 新人, 現職, 新人, 現職, 新人, 新人, 新人, 現職, 新人, 新人, 新人, 新人, 新人,...
## $ name <chr> "KUMADA, HIROMICHI", "YOSHIDA, TSUNEHIKO", "ONO, HI...
## $ party <chr> "LDP", "DPJ", "JCP", "DPJ", "LDP", "JCP", "LDP", "D...
## $ party_code <int> 1, 3, 2, 3, 1, 2, 1, 3, 2, 1, 3, 2, 1, 3, 2, 1, 3, ...
## $ previous <int> 1, 0, 0, 5, 1, 0, 1, 6, 0, 1, 0, 0, 1, 7, 0, 3, 0, ...
## $ wl <fct> 当選, 落選, 落選, 当選, 復活当選, 落選, 当選, 復活当選, 落選, 当選, 落選, 落選,...
## $ voteshare <dbl> 40.7, 19.3, 8.2, 44.8, 31.9, 8.1, 36.7, 34.9, 9.6, ...
## $ age <int> 48, 38, 49, 47, 41, 64, 46, 54, 47, 48, 42, 58, 49,...
## $ nocand <int> 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 4, 4, ...
## $ rank <int> 1, 3, 4, 1, 2, 4, 1, 2, 4, 1, 4, 5, 1, 2, 5, 1, 2, ...
## $ vote <int> 77215, 36578, 15512, 94058, 67086, 16991, 77700, 73...
## $ eligible <int> 373297, 373297, 373297, 383295, 383295, 383295, 387...
## $ turnout <dbl> 52.7, 52.7, 52.7, 56.8, 56.8, 56.8, 56.8, 56.8, 56....
## $ exp <int> 15215857, 11853832, 1220570, 7592182, 7048547, 1028...
## $ expm <dbl> 15.215857, 11.853832, 1.220570, 7.592182, 7.048547,...
## $ vs <dbl> 0.407, 0.193, 0.082, 0.448, 0.319, 0.081, 0.367, 0....
## $ exppv <dbl> 40.760727, 31.754426, 3.269702, 19.807673, 18.38935...
## $ smd <fct> 当選, 落選, 落選, 当選, 落選, 落選, 当選, 落選, 落選, 当選, 落選, 落選, 当選,...
## $ party_jpn <chr> "自民党", "民主党", "共産党", "民主党", "自民党", "共産党", "自民党", "民...
head(HR2, n = 10)
## # A tibble: 10 x 22
## year ku kun status name party party_code previous wl voteshare
## <int> <chr> <int> <fct> <chr> <chr> <int> <int> <fct> <dbl>
## 1 2012 aichi 1 新人 KUMA… LDP 1 1 当選 40.7
## 2 2012 aichi 1 現職 YOSH… DPJ 3 0 落選 19.3
## 3 2012 aichi 1 新人 ONO,… JCP 2 0 落選 8.2
## 4 2012 aichi 2 現職 FURU… DPJ 3 5 当選 44.8
## 5 2012 aichi 2 新人 TOGO… LDP 1 1 復活当選… 31.9
## 6 2012 aichi 2 新人 KURO… JCP 2 0 落選 8.1
## 7 2012 aichi 3 新人 IKED… LDP 1 1 当選 36.7
## 8 2012 aichi 3 現職 KOND… DPJ 3 6 復活当選… 34.9
## 9 2012 aichi 3 新人 ISHI… JCP 2 0 落選 9.6
## 10 2012 aichi 4 新人 KUDO… LDP 1 1 当選 34
## # ... with 12 more variables: age <int>, nocand <int>, rank <int>,
## # vote <int>, eligible <int>, turnout <dbl>, exp <int>, expm <dbl>,
## # vs <dbl>, exppv <dbl>, smd <fct>, party_jpn <chr>
結果として、サンプルサイズ884のデータフレームが出来上がる。
記述統計表はsummaruコマンドで良いが、論文としては理論的検討に応じた図表が欲しいところだ。
ここでは、仮説を補強するような集計表と散布図を作成する。
table1 <- with(HR2, table(status, party))
print(table1)
## party
## status CGP DPJ JCP LDP SDP
## 新人 3 53 295 113 20
## 現職 2 209 2 108 3
## 元職 4 2 2 68 0
table2 <- with(HR2, table(status, smd))
print(table2)
## smd
## status 落選 当選
## 新人 403 81
## 現職 193 131
## 元職 14 62
table3 <- with(HR2, table(party, status))
print(table3)
## status
## party 新人 現職 元職
## CGP 3 2 4
## DPJ 53 209 2
## JCP 295 2 2
## LDP 113 108 68
## SDP 20 3 0
table4 <- with(HR2, table(party, smd))
print(table4)
## smd
## party 落選 当選
## CGP 0 9
## DPJ 237 27
## JCP 299 0
## LDP 52 237
## SDP 22 1
hy_plot2 <- HR2 %>% ggplot(mapping = aes( x =expm , y = voteshare))+
geom_point() +
geom_smooth(method = "lm", se = FALSE) +
labs(x = "選挙費用 (100万円)", y = "得票率 (%)",
title = "2012年衆院選における選挙費用と得票率との関係" ) #タイトル付けないと後で自分でわからない。
print(hy_plot2)
## Warning: Removed 10 rows containing non-finite values (stat_smooth).
## Warning: Removed 10 rows containing missing values (geom_point).
ここで、[警告メッセージ]が出るが、選挙費用に関して欠損値が10あるためだ。
hy_plot3 <- HR2 %>% ggplot(mapping = aes( x = expm, y = voteshare,
group = status, colour = status))+ #groupでグループ分けして、colourで色付け
geom_point()+
labs(x = "選挙費用 (100万円)", y = "得票率 (%)",
title ="2012年衆院選における立候補者属性ごとの選挙費用と得票率の関係" )
print(hy_plot3)
## Warning: Removed 10 rows containing missing values (geom_point).
では、次に、政党ごとの散布図も作成する。
hy_plot4 <- HR2 %>% ggplot(mapping = aes( x = expm, y = voteshare,
group = party, colour = party))+ #groupでグループ分けして、colourで色付け
geom_point()+
labs(x = "選挙費用 (100万円)", y = "得票率 (%)",
title ="2012年衆院選における所属政党ごとの選挙費用と得票率の関係" )
print(hy_plot4)
## Warning: Removed 10 rows containing missing values (geom_point).
さらに、視認性を考慮して近似直線を加える。
hy_plot5 <- HR2 %>% ggplot(mapping = aes( x = expm, y = voteshare ))+
geom_point() +
geom_smooth(mapping = aes( group = status, colour = status), method = lm)+
labs(x = "選挙費用 (100万円)", y = "得票率 (%)",
title ="2012年衆院選における立候補者属性ごとの選挙費用と得票率の関係" )
print(hy_plot5)
## Warning: Removed 10 rows containing non-finite values (stat_smooth).
## Warning: Removed 10 rows containing missing values (geom_point).
hy_plot6 <- HR2 %>% ggplot(mapping = aes( x = expm, y = voteshare))+
geom_point()+
geom_smooth(mapping = aes(group = party, colour = party), method = "lm") +
labs(x = "選挙費用 (100万円)", y = "得票率 (%)",
title ="2012年衆院選における所属政党ごとの選挙費用と得票率の関係" )
print(hy_plot6)
## Warning: Removed 10 rows containing non-finite values (stat_smooth).
## Warning: Removed 10 rows containing missing values (geom_point).
以上のような流れをデータ取得と同時に考えながらできると良い。
散布図の点の形状(shape)や、大きさ(size)、線の種類(linetype)は操作できる。
論文報告に耐え得るように、見栄えを加工しておこう。 ある変数ごとにエステティックを変更するには、geom_point()の中で指定する。 全水準でエステティックを変更するには、geom_point()の外で指定する。 点の形状に関しては、「?points」と入力してヘルプを参照しよう
hy_plot7 <- HR2012 %>% ggplot(mapping = aes( x = expm, y = voteshare ))+
geom_point(mapping = aes(colour = status, shape = status)) +
geom_smooth(mapping = aes( group = status, colour = status), method = lm)+
labs(x = "選挙費用 (100万円)", y = "得票率 (%)",
title ="2012年衆院選における立候補者属性ごとの選挙費用と得票率の関係" )
print(hy_plot7)
## Warning: Removed 14 rows containing non-finite values (stat_smooth).
## Warning: Removed 14 rows containing missing values (geom_point).
hy_plot100 <- HR2012 %>% ggplot(mapping = aes( x = expm, y = voteshare, colour = status ))+
geom_point(shape = 17, size = 2, alpha = 0.8 ) +
geom_smooth(mapping = aes( group = status, colour = status), method = "lm")+
labs(x = "選挙費用 (100万円)", y = "得票率 (%)",
title ="点の形状変更のテスト" )
print(hy_plot100)
## Warning: Removed 14 rows containing non-finite values (stat_smooth).
## Warning: Removed 14 rows containing missing values (geom_point).
facet_wrap や facet_gridによって、縦or横に図を並べることができる。 これを使用して属性ごとの散布図を並べよう
P1 <- HR2 %>% ggplot(mapping = aes( x = expm, y = voteshare)) +geom_point()
P1 + facet_wrap(vars(status))
## Warning: Removed 10 rows containing missing values (geom_point).
ここでは、labsは省略した。
facet_wrap()は図を並列に並べることができる。
()の中で分ける単位となる変数を指定している。
すると、比較しやすい図ができる。以下で、様々並べてみる。
P1 + facet_grid(rows = vars(status))
## Warning: Removed 10 rows containing missing values (geom_point).
facet_grid では縦に並べることができる
P1 + facet_wrap(c("status", "party"), labeller = "label_both")
## Warning: Removed 10 rows containing missing values (geom_point).
この散布図のファセットは、データセットによって様々に使える記述統計に欠かせない優良コマンドである。ヘルプに用意されている例題を再現してみよう。 まずはサンプルデータの読み込む
data(mpg) #サンプルデータの読み込み
glimpse(mpg) #サンプルデータの確認
## Observations: 234
## Variables: 11
## $ manufacturer <chr> "audi", "audi", "audi", "audi", "audi", "audi", "...
## $ model <chr> "a4", "a4", "a4", "a4", "a4", "a4", "a4", "a4 qua...
## $ displ <dbl> 1.8, 1.8, 2.0, 2.0, 2.8, 2.8, 3.1, 1.8, 1.8, 2.0,...
## $ year <int> 1999, 1999, 2008, 2008, 1999, 1999, 2008, 1999, 1...
## $ cyl <int> 4, 4, 4, 4, 6, 6, 6, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6...
## $ trans <chr> "auto(l5)", "manual(m5)", "manual(m6)", "auto(av)...
## $ drv <chr> "f", "f", "f", "f", "f", "f", "f", "4", "4", "4",...
## $ cty <int> 18, 21, 20, 21, 16, 18, 18, 18, 16, 20, 19, 15, 1...
## $ hwy <int> 29, 29, 31, 30, 26, 26, 27, 26, 25, 28, 27, 25, 2...
## $ fl <chr> "p", "p", "p", "p", "p", "p", "p", "p", "p", "p",...
## $ class <chr> "compact", "compact", "compact", "compact", "comp...
以下、縦横縦横無尽に図表を作成して慣れてみる。
p <- ggplot(mpg, aes(displ, hwy)) + geom_point() #まずは図表フレームを作成
では、pという土台に様々に散布してみよう
p + facet_wrap(vars(class)) #「class」変数を指定して縦に並べる
p + facet_wrap(~class) #同上。省略
p + facet_wrap(vars(class), nrow = 4) #縦の図表を4枚に指定。
さらに、複数の変数によってもファセットできる。
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
facet_wrap(vars(cyl, drv))
ただし、それぞれの図の識別(変数*変数)がわからなくなる。そこで、ラベルを自動で貼り付けよう。
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
facet_wrap(c("cyl", "drv"), labeller = "label_both")
facet_grid でも同様に試行。
pp <- ggplot(mpg, aes(displ, cty))+geom_point()
pp + facet_grid(rows = vars(drv))
pp + facet_grid(cols = vars(cyl))
pp + facet_grid(vars(drv), vars(cyl))
pp + facet_grid(. ~ cyl)
pp + facet_grid(drv ~ .)
pp + facet_grid(drv ~ cyl)
ちなみに、今まで、衆院選のデータの図を作るときには、慣れるためにフルセンテンスのコマンドを書いていた。様々に試すには、上のように、同一内容をオブジェクトで格納して、それに様々なオプションを試すのが効率的である。
with(HR2, cor.test(expm, voteshare))
##
## Pearson's product-moment correlation
##
## data: expm and voteshare
## t = 26.294, df = 872, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.6263056 0.7004257
## sample estimates:
## cor
## 0.6649999
ここで、ピアソンの相関係数を分析した。その結果は、872の観察数に分析し、p値は2.2e-16、つまり、2.2かける10の(-16)乗なので、とても小さい。
ということで、相関がないとする帰無仮説を棄却し、この相関関係は偶然ではない、ということ。
この結果は、まぁ、単回帰なのでどうでもよい。一喜一憂するものではない。
この辺りも、「分析」という名前は付くが、実質的には感触を確かめている感じである。
大事なのは、データの取得・整形が終わってからから目星を付けて、すぐさま実行するということ。