1. 交差項でわかること

・候補者の所属政党によって、選挙費用が得票率に与える影響が異なるのか?
・有権者数の多寡で、選挙費用が得票率に与える影響が異なるのか?  

2. データの準備

・分析に必要なデータを準備する
・分析に必要なパッケージをロードする

library(tidyverse)
library(stargazer)
library(margins)
library(interplot)
library(patchwork)
library(msm)
library(broom)
library(ggstance)

・ここでは、衆議院議員総選挙の得票データ hr96-17.Rds をダウンロードして使う
☆選挙データの読み取り方法 (1): Rdsファイル

download.file(url = "https://git.io/fACk6",
              destfile = "data/hr96-17.Rds")

dataフォルダ内から read_rds で読み取る

df <- read_rds("data/hr96-17.Rds")

hr96-17.Rds の読み取りがうまくいかない時には次の (2) もしくは (3) いずれかの方法を試す
☆選挙データの読み取り方法 (2): csv ファイル

download.file(url = "http://www.ner.takushoku-u.ac.jp/masano/class_material/waseda/keiryo/Data/hr96-17.csv",
              destfile = "data/hr96-17.csv")

dataフォルダ内から read_csv で読み取る

df <- read_csv("data/hr96-17.csv")

☆選挙データの読み取り方法 (3): csv ファイル
hr96-17.Rds を変換した hr96-17.csv をダウンロードしてRProject folder 内の data フォルダに入れる
dataフォルダ内から read_csv で読み取る

df <- read_csv("data/hr96-17.csv")

・hr96_17.csv は1996年に衆院選挙に小選挙区が導入されて以来実施された 8 回の衆議院選挙(1996, 2000, 2003, 2005, 2009, 2012, 2014, 2017)の結果のデータ

・データフレーム df の変数名を確認。

names(df)
 [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" 

・partyに含まれる値を確かめる

unique(df$party)
 [1] "NFP"         "LDP"         "DPJ"         "JCP"         "others"     
 [6] "kokuminto"   "independent" "jiyu-rengo"  "SDP"         "NJSP"       
[11] "sakigake"    "CGP"         "CP"          "mushozokuno" "LP"         
[16] "hoshusinto"  "shintonihon" "kokumin"     "daichi"      "kofuku"     
[21] "your"        "mirai"       "NIK"         "NG"          "ishin-to"   
[26] "seikatsu"    "CDP"         "POH"        

・分析に必要な変数だけに絞って、df1 というデータフレーム名をつける

df1 <- df %>% 
  dplyr::filter(year == 2005) %>%    # 2005年のデータだけを選ぶ
  dplyr::select(ku, kun, name, age, rank, voteshare, eligible, exppv, nocand, previous) # 10の変数だけを選ぶ

・df1に含まれる変数を確認する

names(df1)
 [1] "ku"        "kun"       "name"      "age"       "rank"      "voteshare"
 [7] "eligible"  "exppv"     "nocand"    "previous" 

・ldp が作られていることを確認
・データの最初の 6 行を表示させる

head(df1)
# A tibble: 6 x 10
  ku      kun name            age  rank voteshare eligible exppv nocand previous
  <chr> <dbl> <chr>         <int> <int>     <dbl>    <int> <dbl>  <int>    <int>
1 aichi     1 KAWAMURA, TA…    56     1      50     360007 17.0       4        5
2 aichi     1 SHINODA, YOS…    32     2      39.1   360007 40.0       4        1
3 aichi     1 KIMURA, EMI      55     3       7.4   360007  6.05      4        0
4 aichi     1 KOBAYASHI, M…    56     4       3.6   360007 13.1       4        0
5 aichi     2 FURUKAWA, MO…    39     1      52     366121 30.2       3        3
6 aichi     2 OKADA, YUJI      27     2      39.1   366121 14.4       3        0

・データの記述統計を示す

library(stargazer)
stargazer(as.data.frame(df1), 
          type = "html")
Statistic N Mean St. Dev. Min Pctl(25) Pctl(75) Max
kun 989 5.563 4.916 1 2 8 25
age 989 50.292 10.871 25 42 58 81
rank 989 2.217 1.041 1 1 3 6
voteshare 989 30.333 19.230 1 8.8 46.6 74
eligible 989 344,654.300 63,898.230 214,235 297,385 397,210 465,181
exppv 985 24.627 17.907 0.148 8.352 35.269 89.332
nocand 989 3.435 0.740 2 3 4 6
previous 989 1.916 2.681 0 0 3 16

2.1 説明変数を中心化しないモデル (Model 1)

・実際の重回帰分析では、交差項を構成している主要な説明変数(ここでは exppv)と調整変数(ここでは eligible)以外に、コントロール変数をモデルに含むことが多い
・ここでは、応答変数(得票率)、主要な説明変数(選挙費用)、調整変数(有権者数)に加えて、3つのコントロール変数としたモデルを考える

・下図は説明変数の中心化を施さない重回帰分析 (Model 1) である