本章の6.1.3節で保存したRds形式の衆院選データ (hr-data.Rds) を読み込む。 手元にない場合はまずダウンロードする。
# 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")
正しく読み込めたかどうか確認する。
## 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> "新進党", "自民党", "民主党", "共産党", "その他", "国民党", "無所属", "新...
候補者の年齢 age、得票率 voteshare、選挙費用 exp の記述統計を求めてみよう。
## age voteshare exp
## Min. :25.0 Min. : 0.10 Min. : 535
## 1st Qu.:43.0 1st Qu.: 8.90 1st Qu.: 2803566
## Median :51.0 Median :25.76 Median : 6541589
## Mean :50.9 Mean :27.08 Mean : 7542700
## 3rd Qu.:59.0 3rd Qu.:42.90 3rd Qu.:11044485
## Max. :94.0 Max. :95.30 Max. :27462362
## NA's :5 NA's :2043
選挙費用をもう少し詳しく見てみよう。 まず、分散と標準偏差を求める。
## [1] 3.013017e+13
## [1] 5489095
次に、選挙の年 year ごとに、選挙費用の中央値 (median)、平均値 (mean)、標準偏差 (sd) を求めてみよう。
HR %>%
group_by(year) %>%
summarize(median = median(exp, na.rm = TRUE),
mean = mean(exp, na.rm = TRUE),
sd = sd(exp, na.rm = TRUE))
## # A tibble: 8 x 4
## year median mean sd
## <int> <dbl> <dbl> <dbl>
## 1 1996 8342580. 9136316. 5996916.
## 2 2000 7111629 8388889. 5838189.
## 3 2003 7188656 7935408. 5461578.
## 4 2005 7696019 8142244. 5569641.
## 5 2009 4809437 6118181. 4997211.
## 6 2012 5381219 5761645. 4109461.
## 7 2014 NA NaN NaN
## 8 2017 NA NaN NaN
2014年と2017年の選挙については、選挙費用が記録されていない(このデータに含まれていないだけ)ことがわかる。
2012年の選挙だけを取り出し、HR2012というデータフレームを作る。
小選挙区の当落と復活当選は wl に保存されているので、次のようにすればよい。
## wl
## 落選 当選 復活当選
## 13 237 39
上と問題の「自民党」を「民主党」に変えればよい。
## wl
## 落選 当選 復活当選
## 207 27 30
候補者の名前は、nameにローマ字表記で記載されている。いくつか確認してみよう。
## [1] "KAWAMURA, TAKASHI" "IMAEDA, NORIO" "SATO, TAISUKE"
## [4] "IWANAKA, MIHOKO" "ITO, MASAKO" "YAMADA, HIROSHIB"
すべて大文字で、“LAST, FIRST” と保存されていることがわかる。歴代の民主党首相もこの表記で表そう。
衆院選データのうち、200年から2009年までの指定された変数を、歴代民主党首相について表示する。
HR %>%
filter(year >= 2000 & year <= 2009) %>%
filter(name %in% pm_dpj) %>%
select(name, year, ku, kun, party, age, nocand, rank, voteshare) %>%
arrange(name)
## # A tibble: 12 x 9
## name year ku kun party age nocand rank voteshare
## <chr> <int> <chr> <int> <chr> <int> <int> <int> <dbl>
## 1 HATOYAMA, YUKIO 2000 hokkaido 9 DPJ 53 3 1 45.5
## 2 HATOYAMA, YUKIO 2003 hokkaido 9 DPJ 56 3 1 50
## 3 HATOYAMA, YUKIO 2005 hokkaido 9 DPJ 58 3 1 49.3
## 4 HATOYAMA, YUKIO 2009 hokkaido 9 DPJ 62 4 1 66.4
## 5 KAN, NAOTO 2000 tokyo 18 DPJ 53 5 1 56.1
## 6 KAN, NAOTO 2003 tokyo 18 DPJ 57 3 1 58.4
## 7 KAN, NAOTO 2005 tokyo 18 DPJ 58 3 1 47.4
## 8 KAN, NAOTO 2009 tokyo 18 DPJ 62 4 1 59.5
## 9 NODA, YOSHIHIKO 2000 chiba 4 DPJ 43 4 1 47.3
## 10 NODA, YOSHIHIKO 2003 chiba 4 DPJ 46 3 1 55.8
## 11 NODA, YOSHIHIKO 2005 chiba 4 DPJ 48 4 1 44.9
## 12 NODA, YOSHIHIKO 2009 chiba 4 DPJ 52 5 1 53.6
政党別に獲得票数 vote の箱ひげ図を作る。
p <- ggplot(data = HR2012, aes(x = party_jpn, y = vote)) +
geom_boxplot() +
labs(x = "政党", y = "獲得票数")
print(p)
獲得票数の中央値が小さい順に並べるには、次のようにする。
自民党の獲得票数の五数要約。
fn_names <- c("min", "Q1", "median", "Q3", "max")
ldp_fn <- HR2012 %>%
filter(party_jpn == "自民党") %>%
with(fivenum(vote))
names(ldp_fn) <- fn_names
ldp_fn
## min Q1 median Q3 max
## 30138 72912 87879 101327 192604
民主党の獲得票数の五数要約。
dpj_fn <- HR2012 %>%
filter(party_jpn == "民主党") %>%
with(fivenum(vote))
names(dpj_fn) <- fn_names
dpj_fn
## min Q1 median Q3 max
## 7404.0 35388.5 49198.0 63060.5 163334.0