1. 理論的背景
2. 連続変数と連続変数で交差項を作る
3. Delta Methodによる標準誤差の推定
- 3.1. 二値での推定
- 3.2. 複数の値での推定
4. Rパッケージを使った分析
-4.1. interplotパッケージを使った分析
-4.2. jtoolsパッケージを使った分析
-4.3. pequodパッケージを使った分析

5. 宿題(100点満点)

1. 理論的背景

・ここでは二つの連続変数 (exppv と eligible) を使って 交差項 (exppv X eligible) という名称のダミー変数を作り、モデルに入れて回帰分析を行う。

・モデルで使うのは次の四つの変数。
voteshare : 得票率(従属変数)
exppv : 有権者一人当たりに候補者が費やした選挙費用(独立変数)
eligible : 有権者数(調整変数: moderator variable)
exppvXeligile:交差項

・「11. 回帰分析 3」 では「連続変数」と「カテゴリカル変数」で交差項を作成
・ここでは「連続変数」と「連続変数」で交差項を作成 ・ここでは次の前提を置く。
モデルの前提:
「有権者数多い選挙区とそうでない選挙区では、選挙費用が得票率に与える影響は異なる」

・このモデルでは exppvXeligible という説明変数(=交差項: interaction term)を追加する。

ここでは次の重回帰式を推定する。

\(\mathrm{{voteshare}\ = α_0 + α_1exppv + α_2eligible + α_3exppvXeligible + ε}\)

\(\mathrm{= α_0 + (α_1 + α_3eligible) exppv + α_2eligible + ε}\)

\(α_0\):

選挙費用 (exppv) と有権者数 (eligible) が 0 の時の切片

\((α_1 + α_3eligible) \):

得票率 (voteshare) に対する選挙費用 (exppv) の影響力

・交差項の係数 (\(α_3\)) がプラスの時とマイナスの時、それぞれが意味すること:

\((α_1 + α_3eligible) \)\(eligible\) の関数なので、eligible の値が比較的小さい時 (eligible = small) と比較すると、

\({α_3}\)プラスなら・・・eligible = 大の時、exppv の voteshare への影響は大

\({α_3}\)マイナスなら・・・eligible = 大の時、exppv の voteshare への影響小

このグラフでは \({α_2} < 0\) と想定

・日本の2015年衆議院選挙結果データを使ったモデルを考えてみよう。

2. 連続変数と連続変数で交差項を作る

・連続変数と連続変数を使って交差項を作って分析する基本的な目的は、連続変数とカテゴリカル変数を使う場合と同じ。
・ここでは二つの連続変数 (exppv と eligible) を使って 交差項 (exppv X eligible) という名称の変数を作り、モデルに入れて回帰分析を行う。
・11. 回帰分析 3 では「連続変数」と「カテゴリカル変数」で交差項を作成
・hr96_14.csv をダウンロードし、RProject folder に置き read.csv で読み取る。

library("readr")
hr <- read.csv("hr96_14.csv", na = ".") # na = "."は欠損処理

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

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

names(hr)
 [1] "year"       "ku"         "kun"        "party"      "party_code"
 [6] "mag"        "name"       "age"        "status"     "nocand"    
[11] "rank"       "wl"         "previous"   "vote"       "voteshare" 
[16] "eligible"   "turnout"    "exp"        "exppv"      "ldp"       
[21] "dpj"       

・このデータの中から2005年の衆議院選挙データだけ取り出し、次の三つの変数 (voteshare, exppv, ldp) を使って重回帰分析を行ってみる。

voteshare : 得票率(応答変数)
exppv :有権者一人当たりに候補者が費やした選挙費用(説明変数)
eligible: 有権者数

library("dplyr") # %>%を使うためのパッケージをロード
## Warning: package 'dplyr' was built under R version 3.4.2
hr2005 <- hr %>% 
  filter(year == 2005) %>%    # 2005年のデータだけを選ぶ
  select(voteshare, exppv, eligible) # 三つの変数だけを選ぶ

・抜き取ったデータの最初と最後の部分を表示。

head(hr2005)
  voteshare exppv eligible
1      50.0 17.05   360007
2      39.1 40.02   360007
3       7.4  6.05   360007
4       3.6 13.06   360007
5      52.0 30.25   366121
6      39.1 14.45   366121

・データのサマリーを表示。

summary(hr2005)
   voteshare         exppv          eligible     
 Min.   : 0.60   Min.   : 0.15   Min.   :214235  
 1st Qu.: 8.80   1st Qu.: 8.35   1st Qu.:297385  
 Median :34.80   Median :22.84   Median :347866  
 Mean   :30.33   Mean   :24.63   Mean   :344654  
 3rd Qu.:46.60   3rd Qu.:35.27   3rd Qu.:397210  
 Max.   :73.60   Max.   :89.33   Max.   :465181  
                 NA's   :4                       

・2005年の衆議院選挙データ記述統計を表示させる

library("stargazer")
stargazer(hr2005, type = "text")   ## を非表示にしたい場合→ {r, comment = ""}

====================================================
Statistic  N     Mean      St. Dev.    Min     Max  
----------------------------------------------------
voteshare 989   30.333      19.230    0.600  73.600 
exppv     985   24.627      17.907    0.150  89.330 
eligible  989 344,654.300 63,898.230 214,235 465,181
----------------------------------------------------

・二つの散布図を確認。
①選挙費用(説明変数)と得票率(応答変数)
②有権者数(調整変数)と得票率(応答変数)

library("ggplot2")
plot1 <- ggplot(hr2005, aes(exppv, voteshare)) +
  geom_point() +
  theme_bw() +
  labs(x = "Campaign Money per voter (yen)", y = "Voteshare (%)",
         title = "Campaign Money and Voteshare") + 
  stat_smooth(method = lm, se = FALSE) + 
  theme_set(theme_gray(base_size = 10, base_family = "HiraKakuProN-W3"))
plot2 <- ggplot(hr2005, aes(eligible, voteshare)) +
  geom_point() +
  theme_bw() +
  labs(x = "Eligible Voters", y = "Voteshare(%)",
         title = "Eligible Voters and Voteshare") + 
  stat_smooth(method = lm, se = FALSE) +
  theme_set(theme_gray(base_size = 10, base_family = 'HiraKakuProN-W3'))
library("gridExtra")
grid.arrange(plot1, plot2, ncol = 2) # 作成した二つの図を2列に並べる