rによる計量分析:データ解析と可視化 - 回帰分析の理解 (2) ·...
TRANSCRIPT
Rによる計量分析:データ解析と可視化回帰分析の理解 (2)
伊藤 岳
富山大学 経済学部 2017 年度後期
Email: [email protected]
January 22, 2018
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 1 / 56
Agenda
1 復習:回帰係数の検定と解釈
2 Rによる OLS推定と作図
3 内生変数とバイアス
4 省略変数,測定誤差,同時性
5 省略変数バイアスのシミュレーション
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 2 / 56
復習:回帰係数の検定と解釈
回帰係数の t検定
▶ 検定統計量 tk = βk − βk
SE(βk)▶ 平均値の t検定と同様の手順で,βk の仮説検定ができる
▶ 帰無仮説 H0:βk = 0▶ 対立仮説 H1:βk = 0 (両側検定)
▶ 有意水準 α = 0.05なら,平均値の検定でも出てきた「1.96SE」が目安▶ H0 は βk = 0なので,
▶ tk = βk − βk
SE(βk)= βk − 0
SE(βk)= βk
SE(βk)∼ t(n − k − 1)
▶ t(n − k − 1)は自由度 n − k − 1の t分布▶ |tk| > 1.96 (あるいは約 2) なら,その回帰係数の効果は統計的に有意
(statistically significant)▶ 「βk ± 1.96SE(βk) (あるいは約 2SE(βk)) の範囲 = 95%信頼区間に 0が含まれなければ」でも同様
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 3 / 56
回帰係数と限界効果
線形回帰における (偏) 回帰係数の解釈
y = β0 + β1x1 + β2x2 + β3x3 + ϵ (1)
という回帰式を考える▶ この回帰式において,独立変数 xk の偏回帰係数 βk は,他の独立変数の値を一定に保ったとき,xk が 1 (単位) 増加したときの従属変数 (の予測値) yの増加量
▶ 重回帰分析における「偏回帰係数」の「偏」は偏微分の「偏 (partial)」と同じ意味
▶ つまり,「偏」は「他の (独立) 変数の値を一定に保ったとき」の意味▶ 「xk が 1 (単位) 増加したときの従属変数 (の予測値) yの増加量 (影響の大きさ)」のことを,限界効果 (marginal effect) という
▶ 回帰係数と同じに思えるが,より高度な一般化線形モデル (本講義では扱わない) の理解や,後述の交互作用項を含むモデルの理解には限界効果が非常に重要
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 4 / 56
回帰係数と限界効果線形回帰における (偏) 回帰係数の解釈
▶ 解析では,統計的有意性 (statistical significance) と同程度以上に,実質的有意性 (substantial significance; 効果の大小) が重要
▶ 実質的有意性を解釈する上では,限界効果が鍵になる▶ 一般化線形モデル (identity link 以外) では線形回帰のような直感的な解釈が困難なため,限界効果の計算・作図がより重要になる
限界効果と (偏) 回帰係数
▶ 「偏」の字から直感的にわかる通り,xk の限界効果は (1)式を xk で偏微分すれば求められる.(1)式を x1 偏微分すれば,
∂y
∂xk= βk (2)
▶ 具体的な解釈は,xk と yの「単位」(“1”が何を意味するか) に依存する
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 5 / 56
回帰係数と限界効果
限界効果,実質的有意性の重要さ
▶ よく聞く表現:「この変数はトウケイテキニユーイだった.大事だ」▶ 気をつけるべき点:統計的に有意だからといって,実質的に有意とは限らない (「統計的に有意でも,大して影響のない」変数もある)
「他の独立変数が一定のとき」の意味をよく考える
▶ 常に「一定に保つ」ことができる訳ではない▶ 例:二乗項や交互作用項/交差項 (interaction term) が含まれる回帰式▶ 交互作用 (interaction):ある独立変数の効果が,他の独立変数の値によって異なること
▶ いずれの場合でも,ある独立変数 xk「だけ」を動かして,その限界効果を提示することは不可能 (掛け算してるから!)
▶ 観察データ (observational data) では,往々にして独立変数間に相関がある(Hanmer & Ozan Kalkan, 2013)
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 6 / 56
回帰分析の解釈:多様な独立変数
▶ 連続変数▶ ダミー変数 (dummy variable):特定の場合に 1をとり,他の場合には 0をとる二値の変数例 大学院卒 (大学院卒なら 1,その他なら 0)▶ 0の値をとるグループを,基準グループ (reference group) と呼ぶ
▶ 変数変換▶ 対数変換▶ 線形変換 (浅野・矢内本第 13章参照)▶ 中心化 (浅野・矢内本第 13章参照)
▶ 交互作用項 (interaction term)▶ x1 × x2 のような,「かけ算」で表現される (独立) 変数
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 7 / 56
回帰分析の解釈:対数変換▶ 収益率や弾力性等を計算したい場合,変数を対数変換する▶ 対数変換した場合,以下のように (近似的に) 解釈できる例 コブ・ダグラス型生産関数,貿易の重力モデル (対数線形モデル)
従属変数 独立変数 回帰係数 β の解釈y x xが 1単位増加したとき,yが β 単位増
加するln y x x が 1 単位増加したとき,y が 100 ×
β% 増加する (半弾力性 semi-elasticity)
β = ∆y/y
∆x
y ln x xが 1%増加したとき,yが β/100単位増加する
ln y ln x xが 1%増加したとき,y が β%増加する (弾力性 elasticity) β = ∆y/y
∆x/x
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 8 / 56
回帰分析の解釈:対数変換
▶ 数変換した場合の回帰係数と (半) 弾力性
β = d ln y
d ln x(3)
のとき,d ln x
dx= 1
xより,
d ln x = d ln x
x(4)
β = d ln y
d ln x= dy/y
dx/x(5)
β = d ln y
xなら,
β = d ln y
dx= dy/y
dx(6)
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 9 / 56
限界効果の計算:交互作用項
交互作用項 (interaction term) とは
▶ x1 × x2 のような,「かけ算」で表現される (独立) 変数▶ x1 × x2 は “product term,” x1 と x2 は “constitutive term(s)” (main effect)
▶ 理論的議論:Berry et al. (2010, 2012); Brambor et al. (2006); Clark et al.(2006); Kam & Franzese (2007); Rainey (2015)
交互作用項の解釈と限界効果
▶ よくある間違い (1):x1 (e.g., 投薬の有無) や x2 (e.g., 性別) の交互作用項x1 × x2 を回帰式に投入したから,x1 と x2 をバラバラに回帰式に投入する必要はない!
▶ 誤:y = β0 + β3x1x2 + ϵ▶ 正:y = β0 + β1x1 + β2x2 + β3x1x2 + ϵ
▶ よくある間違い (2):交互作用項の回帰係数 β3 が有意だった! だから,x1や x2 単独ではなく,その組み合わせが重要! (もうちょっと作業が必要)
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 10 / 56
限界効果の計算:交互作用項
▶ 交互作用項,product term も constitutive term も,単一の回帰係数のみでは解釈できない
▶ たとえば,y = β0 + β1x1 + β2x2 + β3x1x2 + ϵの回帰式を考える▶ x1 の限界効果を計算するには回帰式を x1 で偏微分すればよいので,
∂y
∂x1= β1 + β3x2 (7)
▶ すなわち,x1 の限界効果は β1 ではなく,β1 + β3x2
▶ y = β0 + β1x1 + β2x21 + ϵのような,二乗項 (“2”である必要はない.3以上
でもよい) を含む回帰式についても同様
∂y
∂x1= β1 + 2β2x1 (8)
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 11 / 56
限界効果の計算:交互作用項
含意
(1) x1 と x2 の「掛け算」が入るのだから,x1 を「だけ」を変化させ,「他の変数を一定に」することはできない
(2) x2 = 0 (あるいは β3 = 0) でない限り,x1の限界効果は (β1だけでなく) x2の水準に依存する(2’) x2 の水準を固定しなければ x1 の限界効果を計算できないが,x2 の水準によっ
て x1 の限界効果が変化する▶ 実際問題,「様々な x2 の水準における x1 の限界効果を示す図」がなければ解釈できない!
▶ 典型的には,x2 を x軸に,x2 がある値のときの x1 の限界効果を y 軸にとったグラフを使う
(3) 一般化線形モデル (identity link以外) の場合,“compression effect” が生じるため,さらに大変 (「他の全ての独立変数」の値に依存する; Berry et al., 2010;Rainey, 2015)
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 12 / 56
RによるOLS推定と作図
Rコード:回帰分析の解釈
副読本のサンプルデータ
▶ 『計量経済学部の第一歩』の有斐閣サポートページから,「例題と練習問題で利用したデータ(csv形式,dta形式)」を取得する
▶ URL: http://www.yuhikaku.co.jp/static/studia_ws/index.html▶ データをわかりやすい場所に保存し,次の csvファイルへのパスを取得する
▶ 6_1_income.csv▶ 7_1_income.csv▶ zipを解凍すると dtaと csvが展開されるが,csvのみを用いる
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 13 / 56
Rコード:回帰分析の解釈
演習資料
▶ Rによる OLS推定と回帰係数の解釈▶ 取得した副読本のサンプルデータと,Rのサンプルデータを用いる
▶ 「演習資料」ページの「回帰分析の作図:plot_ols.r」▶ URL: http://cfes-project.eco.u-toyama.ac.jp/wp-content/
uploads/plot_ols.r
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 14 / 56
Rコード:回帰分析の解釈
ダウンロードしたサンプルデータを読み込む1 ## Path2 path2_6_1_income = "/Users/Gaku/Dropbox/040-ToyamaNIHU/090-ToyamaTeaching/030-
DataVisualization/080-SampleData/data/csv/6_1_income.csv"3 path2_7_1_income = "/Users/Gaku/Dropbox/040-ToyamaNIHU/090-ToyamaTeaching/030-
DataVisualization/080-SampleData/data/csv/7_1_income.csv"4 ## Load csv5 income_1 = read_csv(path2_6_1_income)6 income_2 = read_csv(path2_7_1_income)
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 15 / 56
Rコード:回帰分析の解釈
サンプルデータを操作する1 income_sq = income_1 %>%2 mutate(3 ln_income = log(income)4 ) %>%5 rename(6 year_education = yeduc7 )8 income_int = income_2 %>%9 rename(
10 ln_income = lincome,11 year_education = yeduc12 )
Rのサンプルデータを読み込み,変数の型を変更する1 data(mtcars)2 mtcars = tbl_df(mtcars) %>%3 mutate_at(vars(am, gear), funs(factor)) # convert into factor
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 16 / 56
Rコード:回帰分析の解釈
年収 (対数) = 教育年数 + 就業可能年数 + 就業可能年数 2 というモデルを推定する
1 mod_1 = lm(ln_income ~ year_education + exper + I(exper*exper), data = income_sq)2 summary(mod_1)3 stargazer(mod_1, type = "text", single.row = TRUE)
回帰係数と標準誤差を図で示す1 ## Plot2 fig_height = 43 dev.new(height = fig_height, width = plt_ratio(fig_height))45 ## Coefficient plot6 plot_model(mod_1)
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 17 / 56
Rコード:回帰分析の解釈
year education
I ( exper * exper )
exper
-0.05 0 0.05 0.1 0.15 0.2 0.25Estimates
ln income
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 18 / 56
Rコード:回帰分析の解釈
限界効果をプロットする1 ## Marginal effect plot2 plot_model(mod_1, type = "eff", terms = c("year_education"))3 plot_model(mod_1, type = "eff", terms = c("exper")) ## this takes account for the
squared term
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 19 / 56
Rコード:回帰分析の解釈
5.2
5.6
6.0
10 12 14 16 18year education
ln in
com
e
Predicted values for ln income
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 20 / 56
Rコード:回帰分析の解釈
4.0
4.5
5.0
5.5
0 10 20exper
ln in
com
e
Predicted values for ln income
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 21 / 56
Rコード:回帰分析の解釈
年収 (対数) = 教育年数 + 性別ダミー (女性なら 1) + 教育年数 ×性別ダミーというモデルを推定する
1 mod_2 = lm(ln_income ~ year_education + female + year_education*female, data = income_int)
2 summary(mod_2)3 stargazer(mod_2, type = "text", single.row = TRUE)
交互作用を踏まえて限界効果を作図する1 fig_height = 42 dev.new(height = fig_height, width = plt_ratio(fig_height))34 ## Marginal effect plot5 plot_model(mod_2, type = "int")
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 22 / 56
Rコード:回帰分析の解釈
4.5
5.0
5.5
10 12 14 16 18year education
ln in
com
e female0
1
Predicted values for ln income
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 23 / 56
Rコード:回帰分析の解釈
Mileg per gallon = N forward gears + weight + N forward gears × weight というモデルを推定する
1 mod_3 = lm(mpg ~ gear + wt + gear*wt, data = mtcars)2 stargazer(mod_3, type = "text", single.row = TRUE)
交互作用を踏まえて限界効果を作図する1 fig_height = 42 dev.new(height = fig_height, width = plt_ratio(fig_height))34 ## Plot interaction effects5 xvar_lbl = "Weight␣(1000␣lbs)␣(wt)"6 yvar_lbl = "Miles/(US)␣gallon␣(mpg)"7 plot_model(mod_3, type = "eff", terms = c("wt", "gear"), colors = "bw", grid = TRUE,
axis.title = c(xvar_lbl, yvar_lbl))
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 24 / 56
Rコード:回帰分析の解釈
3 4 5
2 3 4 5 2 3 4 5 2 3 4 5
-10
0
10
20
30
Weight (1000 lbs) (wt)
Mile
s/(U
S) g
allo
n (m
pg)
Predicted values for mpg
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 25 / 56
内生変数とバイアス
内生性バイアス:独立変数と誤差項の相関
OLS推定量の一致性 (再掲)
plim β1 = β1 + Cov(xi, ϵi)Var(xi)
= β1
▶ Cov(xi, ϵi) = 0 (xi が外生変数) のとき,OLS推定量は母回帰係数 β1 の一致推定量になる
▶ Cov(xi, ϵi) = 0 (xi が内生変数) のとき,OLS推定量は母回帰係数 β1 の一致推定量にならない!
plim β1 = β1 + Cov(xi, ϵi)Var(xi)
= β1 + bias(β1) = β1 (9)
▶ 外生変数 (exogenous variable):誤差項と相関しない独立変数▶ 内生変数 (endogenous variable):誤差項と相関する独立変数
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 26 / 56
内生性バイアス:先週のRコード
架空データを生成するためのパラメータを設定する1 sample_size = 10^32 beta_0 = 13 beta_1 = 24 x_mu = 25 x_sigma = 16 error_mu = 07 error_sigma = 1
xと ϵが相関する架空データを発生させる1 ## Set bias2 bias = 0.534 ## Sample data5 simulated_error = rnorm(sample_size, mean = error_mu, sd = error_sigma)6 simulated_x = rnorm(sample_size, mean = x_mu, sd = x_sigma)7 simulated_x = (1 + bias*simulated_error)*simulated_x ## x is correlated with epsilon8 simulated_y = beta_0 + beta_1*simulated_x + simulated_error9 simulated_dat = data_frame(simulated_y = simulated_y, simulated_x = simulated_x)
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 27 / 56
内生性バイアス:先週のRコード
架空データを回帰分析する1 simulated_ols = lm(simulated_y ~ simulated_x, data = simulated_dat)
母回帰係数,推定結果,バイアスを出力する1 > beta_1 ## true beta2 [1] 23 > simulated_ols$coefficients[2] ## estimated beta4 simulated_x5 2.4309646 > cov(simulated_x, simulated_error)/var(simulated_x) ## bias7 [1] 0.43096378 > beta_1 + cov(simulated_x, simulated_error)/var(simulated_x)9 [1] 2.430964
(9)式 plim β1 = β1 + Cov(xi, ϵi)Var(xi)
= β1 + bias(β1) = β1 を思い出す
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 28 / 56
内生性バイアス:先週のRコード
2.0 2.1 2.2 2.3 2.4 2.5
05
1015
20
beta estimates
Density
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 29 / 56
内生性バイアス:先週のRコードの一般化
演習資料
▶ 内生性バイアスが生じる架空データをシミュレーションする▶ 「演習資料」ページの「内生変数バイアスのシミュレーション (2):
simulating_bias_2.r」▶ URL: http://cfes-project.eco.u-toyama.ac.jp/wp-content/
uploads/simulating_bias_2.r
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 30 / 56
内生性バイアス:先週のRコードの一般化
関数を作成する1 simulate_bias = function(2 bias, ## bias3 beta_1, beta_0 = 1,4 x_mu = 2, x_sigma = 1,5 error_mu = 0, error_sigma = 1,6 sample_size = 10^2,7 n_simz = 10^28 ) {9
10 result = matrix(ncol = 4, nrow = n_simz)11 for (i in 1:n_simz) {12 ## Generate fake data13 simulated_error = rnorm(sample_size, mean = error_mu, sd = error_sigma)14 simulated_x = rnorm(sample_size, mean = x_mu, sd = x_sigma)15 simulated_x = (1 + bias*simulated_error)*simulated_x ## x is correlated with
epsilon16 simulated_y = beta_0 + beta_1*simulated_x + simulated_error17 simulated_dat = data_frame(simulated_y = simulated_y, simulated_x = simulated_x)
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 31 / 56
内生性バイアス:先週のRコード
関数を作成する (続き)1 ## OLS estimate2 simulated_ols = lm(simulated_y ~ simulated_x, data = simulated_dat)34 ## Store results5 result[i,1] = bias ## bias parameter6 result[i,2] = cor(simulated_x, simulated_error) ## correlation7 result[i,3] = simulated_ols$coefficients[2] ## estimated beta8 result[i,4] = cov(simulated_x, simulated_error)/var(simulated_x) ## bias in beta9 }
1011 ## Output12 result_vec = colMeans(result)13 se_vec = sd(result[,3])14 result_vec = c(result_vec, se_vec)15 return(result_vec)16 }
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 32 / 56
内生性バイアス:先週のRコード内生性バイアスの強さを変化させたシミュレーションを繰り返す
1 ## Set bias2 bias_vec = seq(from = -0.4, to = 0.4, by = 0.02)3 true_beta = 245 ## Set random seed6 set.seed(123456)78 ## Empty matrix obj to store results9 result_matrix = matrix(ncol = 5, nrow = length(bias_vec))
10 colnames(result_matrix) = c("bias", "correlation", "beta_hat", "bias_size", "beta_se")1112 ## Simulation --- this takes a while13 for (i in 1:length(bias_vec)) {14 ## Print progress15 cat(str_c(i, "␣out␣of␣", length(bias_vec), "␣done.␣\r"))16 ## Simulate17 result_matrix[i,] = simulate_bias(bias_vec[i], beta_1 = true_beta)18 }1920 ## Compute upper and lower CIs21 result_matrix = tbl_df(result_matrix) %>%22 mutate(23 ci_lower = beta_hat-1.96*beta_se,24 ci_upper = beta_hat+1.96*beta_se25 )
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 33 / 56
内生性バイアス:先週のRコードの一般化
-0.4 -0.2 0.0 0.2 0.4
1.4
1.6
1.8
2.0
2.2
2.4
2.6
Bias parameter
Estimates
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 34 / 56
省略変数,測定誤差,同時性
なぜCov(xi, ϵi) = 0が生じるのか?
代表的な原因
▶ 省略変数 (omitted variable)▶ 除外変数/欠落変数でも同じ意味 (訳語の違い)
▶ 測定誤差 (measurement error)▶ 同時性 (simultaneity)
▶ この 2つは次回扱う
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 35 / 56
省略変数
省略変数バイアス「本来回帰式に加えるべき」独立変数 zi を,回帰式から無視してしまうことで生じるバイアス
▶ Cov(xi, zi) = 0:他の独立変数と相関する▶ γ = 0:(母) 偏回帰係数 γ が 0ではない
教科書第 12章の例ゲーム時間・家庭環境・学業成績の関係
▶ Cov(xi, zi) = 0:家庭環境 zi は,ゲーム時間 xi に影響▶ γ = 0:家庭環境 zi は,学業成績 yに影響
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 36 / 56
省略変数
▶ (9)式 plim β1 = β1 + Cov(xi, ϵi)Var(xi)
= β1 + bias(β1) = β1 を思い出す
▶ yi = β0 + β1xi + γzi + ϵi を考える▶ ただし,以下を仮定
▶ E[zi] = 0:zi の期待値は 0▶ Cov(xi, ϵi) = E[xiϵi] = 0, Cov(zi, ϵi) = E[ziϵi] = 0:ϵi は独立変数と相関しない誤差項
▶ Cov(xi, zi) = E[xizi] = 0:zi は xi と相関する▶ zi は,観察不可能な個体属性 (e.g.,「才能」「コミュニケーション能力」)▶ γ = 0:zi は y に影響する
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 37 / 56
省略変数▶ zi が観察不可能な場合,zi を回帰式に含めることはできず,次の「誤った」回帰式を推定してしまう
yi = β0 + β1xi + ηi (10)
▶ 「真のモデル」に含まれていた γzi は,誤差項 ηi に含まれてしまう
ηi = γzi + ϵi (11)Cov(xi, ηi) = E[xiηi]
= E[xi(γzi + ϵi)]= Cov(xi, zi)γ = 0 (12)
▶ Cov(xi, zi) = E[xizi] = 0かつ γ = 0のとき,β1 は,
plim β1 = β1 +
=0
Cov(xi, ηi)Var(xi)
= β1 (13)
となり,省略変数バイアス (omitted variable bias) が生じる
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 38 / 56
省略変数バイアスのシミュレーション
省略変数:Rコード
演習資料
▶ 省略変数バイアスが生じる架空データをシミュレーションする (先週の課題のコード)
▶ Rコード:「演習資料」ページの「省略変数バイアスのシミュレーション (Rコード):simulating_ovb.R」
▶ 日本語解説の RMarkdown:「演習資料」ページの「省略変数バイアスのシミュレーション (RMarkdown):regression_fall2017」
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 39 / 56
省略変数:Rコード架空データ作成用の関数を定義する
1 generate_sample <- function(2 sample_size = 1000,3 beta_0 = 0.2, beta_1 = 0.3, beta_2 = -0.5,4 beta_3 = 1, beta_4 = 0,5 gamma = 0.1,sigma = 16 ) {7 ## ----------------------------------------8 ## parameters9 betaz = c(beta_0, beta_1, beta_2, beta_3, beta_4)
10 ## ----------------------------------------11 ## draw variables12 x_1 = runif(sample_size, -10, 10)13 x_3 = runif(sample_size, -20, 20) ## confounder14 x_2 = gamma*x_3 + rnorm(sample_size, mean = 30, sd = 10)15 x_4 = runif(sample_size, -10, 10)16 ## ----------------------------------------17 ## set model and draw samples18 mu = betaz[1] + betaz[2]*x_1 + betaz[3]*x_2 + betaz[4]*x_3 + betaz[5]*x_419 y = rnorm(sample_size, mu, sd = sigma)20 ## ----------------------------------------21 ## output22 sim_dat = data_frame(y, x_1, x_2, x_3, x_4)23 betaz = data_frame(parameter = c("intercept", str_c("x_", seq(1,4,by=1))), beta_true
= betaz)24 return(list(betaz, sim_dat))25 }
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 40 / 56
省略変数:Rコード
以上の関数で,次の変数からなる架空データを作成できる▶ 真の回帰式:y = β0 + β1x1 + β2x2 + β3x3 (誤差項省略)▶ y:従属変数▶ x1:yの原因だが,他の独立変数とは無相関の独立変数▶ x2:yの原因であり,他の独立変数 x3 から影響を受ける独立変数▶ x3:yの原因であり,他の独立変数 x2 に影響を与える独立変数 (交絡変数
confounder)▶ x4:yの原因ではなく,他の独立変数とも相関しない変数
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 41 / 56
省略変数:Rコード図式化すると,次のような架空データを生成する (矢印がない箇所は独立)
y
x1
x2
x3
x4
β1 = 0
β2 = 0
β3 = 0
Cov(x1, x2) = 0
Cov(x2, x3) = 0
β4 = 0
Cov(x2, x4) = 0
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 42 / 56
省略変数:RコードOLS推定のシミュレーション用の関数を定義する
1 ols_sim <- function(reg_mod, sample_size = 10^3, n_sim = 10^3,...) {2 for (i in 1:n_sim) {3 cat(str_c(i, "␣out␣of␣", n_sim, "␣done.␣\r")) ## print progress4 ## --------------------------------------------------5 ## Draw samples and store parameter values6 drawn_data = generate_sample(sample_size)7 para_dat = drawn_data[[1]]8 sim_dat = drawn_data[[2]]9 ## --------------------------------------------------
10 fit = lm(reg_mod, data = sim_dat) ## OLS11 ## Pull out estimates12 tmp_mat = cbind(summary(fit)$coef[,1:2],confint(fit))13 colnames(tmp_mat) = c("beta", "se", "ci_lower", "ci_upper")14 tmp_mat = tbl_df(as.data.frame(tmp_mat))15 tmp_mat$variable = c("intercept", rownames(summary(fit)$coef)[2:nrow(summary(fit)
$coef)])16 tmp_mat$round = i17 ## --------------------------------------------------18 ## Store estimates19 if (i > 1) {20 est_mat = bind_rows(est_mat, tmp_mat)21 } else {22 est_mat = tmp_mat23 }24 } ## end for25 return(est_mat)26 }
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 43 / 56
省略変数:Rコード
作図 (ヒストグラム) 用の関数を定義する1 coef_hist <- function(2 plot_mat,3 fig_height = 4, fig_cex = .85,4 fig_margin = c(3.25, 3.25, .6, .6),...5 ) {67 dev.new(width = plt_ratio(fig_height), height = fig_height)8 par(cex = fig_cex, mar = fig_margin) ## smaller character size and margin9 hist(plot_mat$beta, freq = FALSE, col = "ivory2", main = "", xlab = "", ylab = "",
breaks = 30) ## draw a histogram10 abline(v = -0.5, col = "dodgerblue2", lwd = 2) ## add a reference line: true beta_211 mtext("beta␣estimates", side = 1, line = 2.25, cex = fig_cex) ## x-axis label12 mtext("Density", side = 2, line = 2.25, cex = fig_cex) ## y-axis label13 box()14 }
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 44 / 56
省略変数:Rコード
この関数を使って,次の 4つのシミュレーションを実行する1 正しい回帰式:y = β0 + β1x1 + β2x2 + β3x3
2 誤った回帰式 (1):y = β0 + β1x1 + β2x2▶ x3 を観察できなかった,あるいは回帰式に投入しなかった
3 誤った回帰式 (2):y = β0 + β2x2 + β3x3▶ x1 を観察できなかった,あるいは回帰式に投入しなかった
4 誤った回帰式 (3):y = β0 + β1x1 + β2x2 + β3x3 + β4x4▶ x4 という余計な独立変数を回帰式に投入した
それぞれの場合について,β2 の推定値に着目して結果を概観する▶ β2 = −0.5に設定▶ β2 は β2 を (平均的に) 正しく推定できる?
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 45 / 56
省略変数:Rコード
正しい回帰式 y = β0 + β1x1 + β2x2 + β3x3 のシミュレーション1 ## --------------------------------------------------2 ## Simulation 13 ## --------------------------------------------------4 ## Regression model5 reg_mod = as.formula(y ~ x_1 + x_2 + x_3)6 ## --------------------------------------------------7 ## Simulation8 set.seed(123456)9 est_mat_baseline = ols_sim(reg_mod, n_sim = 2000)
10 ## --------------------------------------------------11 ## Skim results12 est_mat_baseline13 ## --------------------------------------------------14 ## Plot result15 plot_mat = est_mat_baseline %>% filter(variable == "x_2")16 coef_hist(plot_mat)17 ## --------------------------------------------------
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 46 / 56
省略変数:Rコード正しい回帰式:y = β0 + β1x1 + β2x2 + β3x3
-0.510 -0.505 -0.500 -0.495 -0.490
020
4060
80100
120
beta estimates
Density
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 47 / 56
省略変数:Rコード
誤った回帰式 (1) y = β0 + β1x1 + β2x2 のシミュレーション1 ## --------------------------------------------------2 ## Simulation 2 --- regression without x_33 ## --------------------------------------------------4 ## Regression model5 reg_mod = as.formula(y ~ x_1 + x_2)6 ## --------------------------------------------------7 ## Simulation8 set.seed(123456)9 est_mat_wo_x3 = ols_sim(reg_mod, n_sim = 3000)
10 ## --------------------------------------------------11 ## Plot result12 plot_mat = est_mat_wo_x3 %>% filter(variable == "x_2")13 coef_hist(plot_mat)14 ## --------------------------------------------------
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 48 / 56
省略変数:Rコード誤った回帰式 (1):y = β0 + β1x1 + β2x2
-0.50 -0.45 -0.40 -0.35 -0.30 -0.25
02
46
810
beta estimates
Density
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 49 / 56
省略変数
省略変数バイアス (再掲)Cov(xi, zi) = E[xizi] = 0かつ γ = 0のとき,β1 は,
plim β1 = β1 +
=0
Cov(xi, ηi)Var(xi)
= β1
となり,省略変数バイアス (omitted variable bias) が生じる (ηi = γzi + ϵi の記法や仮定は上のスライドと同様)
次の場合ではないときは? 同様にバイアスが生じるのか?1 Cov(xi, zi) = E[xizi] = 0:他の独立変数と相関する2 γ = 0:回帰係数が 0ではない
それぞれ,誤った回帰式 (2) と誤った回帰式 (3) のシミュレーション結果を確認すればよい
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 50 / 56
省略変数:Rコード誤った回帰式 (2):y = β0 + β2x2 + β3x3
-0.52 -0.51 -0.50 -0.49 -0.48
010
2030
4050
60
beta estimates
Density
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 51 / 56
省略変数:Rコード誤った回帰式 (3):y = β0 + β1x1 + β2x2 + β3x3 + β4x4
-0.510 -0.505 -0.500 -0.495 -0.490
020
4060
80100
120
beta estimates
Density
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 52 / 56
省略変数:シミュレーション結果とまとめ
▶ 交絡変数を回帰式に加えないと (コントロールしないと),省略変数バイアスが生じる
▶ 省略変数バイアス生じると,OLS推定量は一致性を失なう▶ 「ある独立変数を回帰式に加え損なったとき」常に省略変数バイアスが生じるわけではない
▶ Cov(xi, zi) = 0あるいは γ = 0ならば,仮に zi をモデルから除外してもバイアスは生じない
▶ 「余計な独立変数を回帰式に加えたとき」,内生性は生じない▶ ただし,推定の効率性 (efficiency) は失われる
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 53 / 56
省略変数:Rコード架空データの構造を確認する:何が問題だったのか?
y
x1
x2
x3
x4
β1 = 0
β2 = 0
β3 = 0
Cov(x1, x2) = 0
Cov(x2, x3) = 0
β4 = 0
Cov(x2, x4) = 0
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 54 / 56
省略変数:シミュレーション結果とまとめ
▶ 「独立変数を加え損なう誤り」と「独立変数を加え過ぎる誤り」を比べれば,「独立変数を加え過ぎる誤り」の方が「まだマシ」
▶ 「独立変数を加え損なう誤り」は,省略変数バイアスにつながり得る▶ 「独立変数を加え過ぎる誤り」は,省略変数バイアスにつながらない
▶ 一般的には,理論的・実証的根拠のある独立変数は,回帰式に加える▶ 観察不可能な独立変数 (e.g.,「才能」) については,何らかの代理変数
(proxy) を検討する
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 55 / 56
次回講義と課題
▶ 次回講義▶ 今日の続き (回帰分析とバイアス)
▶ 文献と課題必須 星野・田中『Rによる実証分析』第 4–6章 (教科書)推奨 Gelman & Hill. Data analysis. Chaps. 3–4 (教科書)推奨 浅野・矢内『Stataによる計量政治学』第 7–13章 (副読本)推奨 石田ほか『Rによるスクレイピング入門』(副読本)推奨 森田『実証分析入門』第 4–8章 (副読本)課題 (1) 講義資料「R言語の基礎,オブジェクトとその要素へのアクセス」と「R
によるデータの読み込みと書き出し」を RStudioで練習しておくこと.(2) シミュレーションを再度行なってみること
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 56 / 56
補足・再掲:回帰分析の根源的仮定
▶ 線形回帰モデル yi = β0 + β1xi + ϵi, i = 1, . . . , nを考える (yi も xi も確率変数)
▶ OLS推定量は,β0 = yn − β1xn
β1 =∑n
i=1(xi − xn)(yi − yn)∑ni=1(xi − xn)2 = sxy
sxx
▶ β0 と β1 が β0 と β1 の不偏推定量・一致推定量になるための必要条件は,仮定 1 外生性:E[ϵi|xi] = 0仮定 2 独立標本:異なる観察 (xi, yi)と (xj , yj)は互いに独立
▶ 教科書・浅野・矢内本第 12章,副読本・鹿野本第 10章,副読本・田中本第5–6章も参照のこと
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 1 / 4
補足・再掲:回帰分析の根源的仮定
仮定 1:外生性
▶ E[ϵi|xi] = 0を満たす独立変数 xi を,外生変数 (xi は外生的) という▶ xi が外生変数ならば,
▶ E[yi|xi] = β0 + β1xi + E[ϵi|xi]=0
= β0 + β1xi (線形回帰モデルの整合性)
▶ E[ϵi] = 0, E[xiϵi] = 0 (xi と ϵi の直交)▶ Cov(xi, ϵi) = 0 (xi と ϵi の無相関)が成り立つ
仮定 2:独立標本
▶ 標本が互いに独立ならば,xi 以外の独立変数は ϵi についてなんら情報をもたない
▶ ϵi = yi − β0 − β1xi とすれば,E[ϵi|xi] = E[ϵi|x1, . . . , xn]▶ ϵi = yi − β0 − β1xi なので,ϵi と ϵj は互いに独立
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 2 / 4
補足・再掲:OLS推定量の不偏性と一致性強い外生性 (strong exogeneity)
E[ϵi|x1, . . . , xn] = 0, i = 1, . . . , n (14)
E[ϵi|xi] = 0 (仮定 1) かつ E[ϵi|xi] = E[ϵi|x1, . . . , xn] (仮定 2)
OLS推定量の不偏性 (unbiasedness)
E[β1] = β1 (15)
OLS推定量の期待値が母回帰係数になる
OLS推定量の一致性 (consistency)
plim β1 = β1 + Cov(xi, ϵi)Var(xi)
= β1 (16)
n → ∞で,OLS推定量が母回帰係数に確率収束する▶ 大数の法則と中心極限定理を思い出す▶ 仮定 1より,Cov(xi, ϵi) = 0に注意
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 3 / 4
Berry, William D; Jacqueline H R DeMeritt & Justin Esarey (2010) Testing for Interaction Effects in BinaryLogit and Probit Models: Is an Interaction Term Essential? American Journal of Political Science 54(1):248–266.
Berry, William D; Matt Golder & Daniel Milton (2012) Improving Tests of Theories Positing Interaction.Journal of Politics 74(3): 653–671.
Brambor, Thomas; William Clark & Matt Golder (2006) Understanding interaction models: Improvingempirical analyses. Political Analysis 14(1): 63–82.
Clark, William R; Michael J Gilligan & Matt Golder (2006) A simple multivariate test for asymmetrichypotheses. Political Analysis 14(3): 311–331.
Hanmer, Michael J & Kerem Ozan Kalkan (2013) Behind the Curve: Clarifying the Best Approach toCalculating Predicted Probabilities and Marginal Effects from Limited Dependent Variable Models.American Journal of Political Science 57(1): 263–277.
Kam, Cindy D & Robert J Franzese (2007) Modeling and Interpreting Interactive Hypotheses in RegressionAnalysis: A Refresher and Some Practical Advice. Ann Arbor, MI: University of Michigan Press.
Rainey, Carlisle (2015) Compression and Conditional Effects: A Product Term Is Essential When UsingLogistic Regression to Test for Interaction. Political Science Research and Methods forth.
伊藤 岳 (Toyama/NIHU) R による計量分析 January 22, 2018 4 / 4