準備

必要なパッケージをインストールする.

list.of.packages = c("xlsx", "dplyr", "tidyr", "ggplot2")
new.packages = list.of.packages[
  !(list.of.packages %in% installed.packages()[,"Package"])]
if(length(new.packages)) install.packages(new.packages)

それらを読み込む.

library(xlsx)
library(dplyr)
library(tidyr)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.3.2

目的

進んで負け戦をする政党はないだろうから, 政治的波乗りはデータでも容易に確認できるように思う. 景気動向指数を使って1980年以降の様子を確認してみよう.

衆議院選挙

1980年以降の衆議院総選挙の投票日, それに先立つ解散日を shugiin.csv に記録している.

shugiin = read.csv("shugiin.csv", strip.white=TRUE) %>%
  mutate(poll=as.Date(poll), dissolve=as.Date(dissolve))

shugiin
##    num       poll   dissolve
## 1   36 1980-06-22 1980-05-19
## 2   37 1983-12-18 1983-11-28
## 3   38 1986-07-06 1986-06-02
## 4   39 1990-02-18 1990-01-24
## 5   40 1993-07-18 1993-06-18
## 6   41 1996-10-20 1996-09-27
## 7   42 2000-06-25 2000-06-02
## 8   43 2003-11-09 2003-10-10
## 9   44 2005-09-11 2005-08-08
## 10  45 2009-08-30 2009-07-21
## 11  46 2012-12-16 2012-11-16
## 12  47 2014-12-14 2014-11-21

景気動向指数

景気動向指数の長期系列を内閣府のホームページ からダウンロードする. 余分な部分を削ぎ落として R で読めるようにしたものが business_conditions.xls. 最初の5行を消して, 6行目 (ヘッダ行) を書き換えた.

bc_orig = read.xlsx("business_conditions.xls", 1) 
head(bc_orig)
##   Japanese.year Calendar.year Month CI.Leading CI.Coincidence CI.Lagging
## 1            55          1980     1         NA             NA         NA
## 2            55          1980     2         NA             NA         NA
## 3            55          1980     3         NA             NA         NA
## 4            55          1980     4         NA             NA         NA
## 5            55          1980     5         NA             NA         NA
## 6            55          1980     6         NA             NA         NA
##   DI.Leading DI.Coincidence DI.Lagging CDI.Leading CDI.Coincidence
## 1       54.5             85       83.3         0.0               0
## 2       54.5             90       94.4         4.5              40
## 3       45.5             80       88.9         0.0              70
## 4       40.9             95       77.8        -9.1             115
## 5       36.4             25       55.6       -22.7              90
## 6       45.5             30       83.3       -27.2              70
##   CDI.Lagging
## 1         0.0
## 2        44.4
## 3        83.3
## 4       111.1
## 5       116.7
## 6       150.0

このままでは使いにくいので Long形式に変更.

bc = bc_orig %>% 
  mutate(Date=as.Date(paste(Calendar.year,Month,'01',sep='-'))) %>%
  select(-Japanese.year, -Calendar.year, -Month) %>%
  gather(key=Index, value=Value, -Date, na.rm=TRUE)

head(bc, 10)
##          Date      Index Value
## 61 1985-01-01 CI.Leading  86.9
## 62 1985-02-01 CI.Leading  87.2
## 63 1985-03-01 CI.Leading  87.0
## 64 1985-04-01 CI.Leading  87.6
## 65 1985-05-01 CI.Leading  87.6
## 66 1985-06-01 CI.Leading  86.8
## 67 1985-07-01 CI.Leading  86.6
## 68 1985-08-01 CI.Leading  85.2
## 69 1985-09-01 CI.Leading  85.4
## 70 1985-10-01 CI.Leading  85.1

CI

CI指数と解散日を重ねてプロットする.

bc %>% filter(grepl("CI", Index)) %>%
  ggplot() + aes(color=Index) + scale_x_date() + 
  geom_line(aes(x=Date, y=Value)) + 
  geom_vline(data=shugiin, aes(xintercept=as.numeric(dissolve)), 
             size=0.5, linetype="dashed") 

CDI

CDI と選挙日を重ねてプロットする.

bc %>% filter(grepl("CDI", Index)) %>%
  ggplot() + aes(color=Index) + scale_x_date() + 
  geom_line(aes(x=Date, y=Value)) + 
  geom_vline(data=shugiin, aes(xintercept=as.numeric(dissolve)), 
             size=0.5, linetype="dashed")