forked from yukiyanai/quant-methods-R
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathch06-answers.Rmd
165 lines (135 loc) · 4.56 KB
/
ch06-answers.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
---
title: "Rによる計量政治学:練習問題の解答例"
subtitle: "第6章 記述統計とデータの可視化・視覚化"
author: "浅野正彦, 矢内勇生"
date: "2018-11-24"
output:
html_document:
theme: united
highlight: tango
css: my-markdown.css
toc: true
self_contained: true
---
```{r global_option, include = FALSE}
knitr::opts_chunk$set(warning = FALSE, echo = TRUE, message = FALSE,
fig.width = 5, fig.height = 4)
```
## パッケージの読み込み
```{r load-packs}
library("tidyverse")
if (capabilities("aqua")) { # Macかどうか判定し、Macの場合のみ実行
theme_set(theme_gray(base_size = 10, base_family = "HiraginoSans-W3"))
}
```
## 衆院選データの読み込み
本章の6.1.3節で保存したRds形式の衆院選データ (hr-data.Rds) を読み込む。
手元にない場合はまずダウンロードする。
```{r read-HR-data}
# dir.create("data") # データディレクトリがない場合は作る
#download.file(url = "https://git.io/fp00p",
# destfile = "data/hr-data.Rds")
HR <- read_rds("data/hr-data.Rds")
## Rdsファイルの読み込みがうまくいかない場合は以下を実行
#download.file(url = "https://git.io/fxhQU",
# destfile = "data/hr-data.csv")
#HR <- read_csv("data/hr-data.csv")
```
正しく読み込めたかどうか確認する。
```{r check-HR}
glimpse(HR)
```
## Q6-1
候補者の年齢 age、得票率 voteshare、選挙費用 exp の記述統計を求めてみよう。
```{r desc-HR-1}
HR %>%
select(age, voteshare, exp) %>%
summary()
```
選挙費用をもう少し詳しく見てみよう。
まず、分散と標準偏差を求める。
```{r desc-HR-exp}
var(HR$exp, na.rm = TRUE) # 分散
sd(HR$exp, na.rm = TRUE) # 標準偏差
```
次に、選挙の年 year ごとに、選挙費用の中央値 (median)、平均値 (mean)、標準偏差 (sd) を求めてみよう。
```{r desc-HR-exp-year}
HR %>%
group_by(year) %>%
summarize(median = median(exp, na.rm = TRUE),
mean = mean(exp, na.rm = TRUE),
sd = sd(exp, na.rm = TRUE))
```
2014年と2017年の選挙については、選挙費用が記録されていない(このデータに含まれていないだけ)ことがわかる。
## Q6-2
2012年の選挙だけを取り出し、HR2012というデータフレームを作る。
```{r HR2012}
HR2012 <- filter(HR, year == 2012)
```
### Q6-2-1
小選挙区の当落と復活当選は wl に保存されているので、次のようにすればよい。
```{r wl-ldp-2012}
HR2012 %>%
filter(party_jpn == "自民党") %>%
with(table(wl))
```
### Q6-2-3
上と問題の「自民党」を「民主党」に変えればよい。
```{r wl-dpj-2012}
HR2012 %>%
filter(party_jpn == "民主党") %>%
with(table(wl))
```
## Q6-3
候補者の名前は、nameにローマ字表記で記載されている。いくつか確認してみよう。
```{r check-name}
head(HR$name)
```
すべて大文字で、"LAST, FIRST" と保存されていることがわかる。歴代の民主党首相もこの表記で表そう。
```{r dpj-pm}
pm_dpj <- c("HATOYAMA, YUKIO", "KAN, NAOTO", "NODA, YOSHIHIKO")
```
衆院選データのうち、200年から2009年までの指定された変数を、歴代民主党首相について表示する。
```{r dpj-pm-vars}
HR %>%
filter(year >= 2000 & year <= 2009) %>%
filter(name %in% pm_dpj) %>%
select(name, year, ku, kun, party, age, nocand, rank, voteshare) %>%
arrange(name)
```
## Q6-4
### Q6-4-1
政党別に獲得票数 vote の箱ひげ図を作る。
```{r boxplot-vote, fig.width = 9, fig.height = 6}
p <- ggplot(data = HR2012, aes(x = party_jpn, y = vote)) +
geom_boxplot() +
labs(x = "政党", y = "獲得票数")
print(p)
```
獲得票数の中央値が小さい順に並べるには、次のようにする。
```{r boxplot-vote2, fig.width = 9, fig.height = 6}
p2 <- ggplot(HR2012,
aes(x = reorder(x = party_jpn, X = vote, FUN = median),
y = vote)) +
geom_boxplot() +
labs(x = "政党", y = "獲得票数")
print(p2)
```
### Q6-4-2
自民党の獲得票数の五数要約。
```{r ldp-fivenum}
fn_names <- c("min", "Q1", "median", "Q3", "max")
ldp_fn <- HR2012 %>%
filter(party_jpn == "自民党") %>%
with(fivenum(vote))
names(ldp_fn) <- fn_names
ldp_fn
```
民主党の獲得票数の五数要約。
```{r dpj-fivenum}
dpj_fn <- HR2012 %>%
filter(party_jpn == "民主党") %>%
with(fivenum(vote))
names(dpj_fn) <- fn_names
dpj_fn
```