今回使うパッケージを読み込む。MatchIt と Zelig は初めて使うので、必要ならまずインストールする。
#install.packages(c("MatchIt", "Zelig"), dependencies = TRUE)
library("tidyverse")
library("broom")
library("MatchIt")
library("Zelig")
次に、教科書のサポートページ からデータのzipファイル をダウンロードして展開し、10_1_income.csv をプロジェクト内の data フォルダに保存する。
保存できたら、データを読み込む。
## Parsed with column specification:
## cols(
## cograd = col_double(),
## female = col_double(),
## married = col_double(),
## pacograd = col_double(),
## sibs = col_double(),
## lincome = col_double()
## )
データの中身を確認する。
## Observations: 4,371
## Variables: 6
## $ cograd <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ female <dbl> 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1…
## $ married <dbl> 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0…
## $ pacograd <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ sibs <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ lincome <dbl> 4.605170, 5.010635, 5.298317, 5.010635, 4.605170, 5.010…
6つの変数が含まれていることがわかる。
教科書のデータを使い、大学教育(大学を卒業したかどうか、cograd)が所得(対数所得、lincome)に与える影響を推定する場合を考えよう。大学を卒業したかどうかはランダムに割当てられていないと考えられるので、観察された4つの共変量 (female, married, pacogra, sibs) でマッチングを行う。
Rでマッチング法を使うためのパッケージ、関数はいくつかあるが、今回は MatchIt パッケージを使う。
まず、処置群(大学を卒業した人たい)の各個体に対し、統制群(大学を卒業していない人たち)の中から共変量の値が完全に同じものを見つけてマッチングしよう。matchit()
関数を使い、次のように書く。method(方法)には、exact(正確に)を指定する。
m_exact <- matchit(cograd ~ female + married + pacograd + sibs,
data = INC, method = "exact")
summary(m_exact)
##
## Call:
## matchit(formula = cograd ~ female + married + pacograd + sibs,
## data = INC, method = "exact")
##
## Sample sizes:
## Control Treated
## All 3003 1368
## Matched 2979 1366
## Discarded 24 2
##
## Matched sample sizes by subclass:
## Treated Control Total
## 1 17 39 56
## 2 12 38 50
## 3 8 38 46
## 4 16 28 44
## 5 134 232 366
## 6 85 260 345
## 7 61 301 362
## 8 149 201 350
## 9 63 169 232
## 10 42 172 214
## 11 31 219 250
## 12 58 135 193
## 13 5 44 49
## 14 8 32 40
## 15 6 32 38
## 16 11 24 35
## 17 1 7 8
## 18 1 6 7
## 19 2 9 11
## 20 1 1 2
## 21 19 21 40
## 22 19 24 43
## 23 2 28 30
## 24 13 11 24
## 25 123 149 272
## 26 81 165 246
## 27 94 80 174
## 28 58 112 170
## 29 73 86 159
## 30 35 80 115
## 31 46 92 138
## 32 58 58 116
## 33 7 22 29
## 34 7 15 22
## 35 10 11 21
## 36 1 21 22
## 37 3 4 7
## 38 4 7 11
## 39 2 6 8
マッチングの結果、処置群 (Treated) の1,366の個体に対して、統制群 (Control) の2,979の個体がマッチングされたことがわかる。また、処置群から2個体、統制群から24個体が、マッチング相手が見つからなかったために捨てられている。
次に、区間マッチング (subclassificaiton) を行ってみよう。先ほどと同じ関数を使うが、今回は method = subclass
を指定する。また、subclass の数を 5 に設定する。 距離は、傾向スコア (propensity score) で測ることにする(既定値なので、何も指定しなくて良い)。
m_subclass <- matchit(cograd ~ female + married + pacograd + sibs,
data = INC, method = "subclass", subclass = 5)
summary(m_subclass)
##
## Call:
## matchit(formula = cograd ~ female + married + pacograd + sibs,
## data = INC, method = "subclass", subclass = 5, sub.by = "treat")
## Summary of balance for all data:
## Means Treated Means Control Mean Diff eQQ Med eQQ Mean eQQ Max
## distance 0.3497 0.2963 0.0534 0.0441 0.0535 0.1384
## female 0.3728 0.5611 -0.1883 0.0000 0.1879 1.0000
## married 0.4525 0.4762 -0.0237 0.0000 0.0234 1.0000
## pacograd 0.4788 0.3370 0.1418 0.0000 0.1418 1.0000
## sibs 1.3392 1.4712 -0.1320 0.0000 0.1308 2.0000
##
##
## Summary of balance by subclasses:
## , , Subclass 1
##
## Means Treated Means Control Mean Diff eQQ Med eQQ Mean eQQ Max
## distance 0.1957 0.1924 0.0033 0.0000 0.0039 0.0369
## female 0.9890 0.9875 0.0015 0.0000 0.0037 1.0000
## married 0.4228 0.5471 -0.1243 0.0000 0.1250 1.0000
## pacograd 0.0551 0.0567 -0.0016 0.0000 0.0037 1.0000
## sibs 1.5110 1.6214 -0.1103 0.0000 0.1213 1.0000
##
## , , Subclass 2
##
## Means Treated Means Control Mean Diff eQQ Med eQQ Mean eQQ Max
## distance 0.2955 0.2962 -0.0007 0.0000 0.0009 0.0312
## female 0.3665 0.3227 0.0438 0.0000 0.0452 1.0000
## married 0.4706 0.4503 0.0203 0.0000 0.0226 1.0000
## pacograd 0.3665 0.3246 0.0419 0.0000 0.0407 1.0000
## sibs 2.0860 2.1107 -0.0247 0.0000 0.0317 2.0000
##
## , , Subclass 3
##
## Means Treated Means Control Mean Diff eQQ Med eQQ Mean eQQ Max
## distance 0.3377 0.3343 0.0033 0.0000 0.0033 0.0336
## female 0.4826 0.5795 -0.0969 0.0000 0.0972 1.0000
## married 0.7188 0.6548 0.0639 0.0000 0.0660 1.0000
## pacograd 0.4826 0.5795 -0.0969 0.0000 0.0972 1.0000
## sibs 1.0000 1.0000 0.0000 0.0000 0.0000 0.0000
##
## , , Subclass 4
##
## Means Treated Means Control Mean Diff eQQ Med eQQ Mean eQQ Max
## distance 0.3869 0.3795 0.0073 0.0000 0.0075 0.0489
## female 0.0792 0.1166 -0.0373 0.0000 0.0377 1.0000
## married 0.3245 0.2915 0.0330 0.0000 0.0340 1.0000
## pacograd 0.3698 0.3296 0.0402 0.0000 0.0415 1.0000
## sibs 1.1660 1.0538 0.1122 0.0000 0.1698 1.0000
##
## , , Subclass 5
##
## Means Treated Means Control Mean Diff eQQ Med eQQ Mean eQQ Max
## distance 0.4970 0.4958 0.0012 0.0000 0.0016 0.0474
## female 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
## married 0.3323 0.2622 0.0701 0.0000 0.0714 1.0000
## pacograd 1.0000 1.0000 0.0000 0.0000 0.0000 0.0000
## sibs 1.1273 1.1556 -0.0283 0.0000 0.0248 1.0000
##
##
## Sample sizes by subclasses:
## Subclass 1 Subclass 2 Subclass 3 Subclass 4 Subclass 5
## Treated 272 221 288 265 322
## Control 1199 533 478 446 347
## Total 1471 754 766 711 669
##
## Summary of balance across subclasses
## Means Treated Means Control Mean Diff eQQ Med eQQ Mean eQQ Max
## distance 0.3497 0.3467 0.0017 0 0.0035 0.0401
## female 0.3728 0.3931 0.0228 0 0.0358 0.7646
## married 0.4525 0.4376 0.0334 0 0.0658 1.0000
## pacograd 0.4788 0.4849 0.0229 0 0.0358 0.7646
## sibs 1.3392 1.3500 0.0318 0 0.0680 0.9510
##
## Percent Balance Improvement:
## Mean Diff. eQQ Med eQQ Mean eQQ Max
## distance 94.4712 100 93.5385 71.0519
## female 89.2441 0 80.9339 23.5380
## married 37.0964 0 -181.2500 0.0000
## pacograd 95.6717 0 74.7423 23.5380
## sibs 91.7824 0 48.0447 52.4488
結果を確認してみよう。まず、各サブクラスごとにそれぞれの共変量について処置群の平均値 (Means Treated) と統制群の平均値 (Means Control)、そして2つの平均値の差 (Mean Diff) が 示されている。すべての Mean Diff が0になるのが理想である。実際には、0から離れている値がないかどうか確認する。差が大きいところがあれば、バランスが悪いということであり、マッチングがうまくいかなかったと判断できる。
しかし、共変量ごとに単位が違うと、どれくらいの差まで許容できるかどうかわかりにくいので、標準化バイアス(standardized difference)を使う。summary()
で standardize = TRUE
を指定すればよい。
##
## Call:
## matchit(formula = cograd ~ female + married + pacograd + sibs,
## data = INC, method = "subclass", subclass = 5, sub.by = "treat")
## Summary of balance for all data:
## Means Treated Means Control Std. Mean Diff. eCDF Med eCDF Mean
## distance 0.3497 0.2963 0.5023 0.1461 0.1184
## female 0.3728 0.5611 -0.3893 0.0941 0.0941
## married 0.4525 0.4762 -0.0476 0.0119 0.0119
## pacograd 0.4788 0.3370 0.2838 0.0709 0.0709
## sibs 1.3392 1.4712 -0.1763 0.0031 0.0165
## eCDF Max
## distance 0.2164
## female 0.1883
## married 0.0237
## pacograd 0.1418
## sibs 0.0762
##
##
## Summary of balance by subclasses:
## , , Subclass 1
##
## Means Treated Means Control Std. Mean Diff. eCDF Med eCDF Mean
## distance 0.1957 0.1924 0.0311 0.0074 0.0254
## female 0.9890 0.9875 0.0031 0.0007 0.0007
## married 0.4228 0.5471 -0.2497 0.0622 0.0622
## pacograd 0.0551 0.0567 -0.0031 0.0008 0.0008
## sibs 1.5110 1.6214 -0.1473 0.0061 0.0158
## eCDF Max
## distance 0.1133
## female 0.0015
## married 0.1243
## pacograd 0.0016
## sibs 0.0790
##
## , , Subclass 2
##
## Means Treated Means Control Std. Mean Diff. eCDF Med eCDF Mean
## distance 0.2955 0.2962 -0.0067 0.0108 0.0136
## female 0.3665 0.3227 0.0906 0.0219 0.0219
## married 0.4706 0.4503 0.0408 0.0102 0.0102
## pacograd 0.3665 0.3246 0.0839 0.0210 0.0210
## sibs 2.0860 2.1107 -0.0330 0.0019 0.0076
## eCDF Max
## distance 0.0339
## female 0.0438
## married 0.0203
## pacograd 0.0419
## sibs 0.0210
##
## , , Subclass 3
##
## Means Treated Means Control Std. Mean Diff. eCDF Med eCDF Mean
## distance 0.3377 0.3343 0.0312 0.0329 0.0433
## female 0.4826 0.5795 -0.2002 0.0484 0.0484
## married 0.7188 0.6548 0.1284 0.0320 0.0320
## pacograd 0.4826 0.5795 -0.1938 0.0484 0.0484
## sibs 1.0000 1.0000 0.0000 0.0000 0.0000
## eCDF Max
## distance 0.0969
## female 0.0969
## married 0.0639
## pacograd 0.0969
## sibs 0.0000
##
## , , Subclass 4
##
## Means Treated Means Control Std. Mean Diff. eCDF Med eCDF Mean
## distance 0.3869 0.3795 0.0689 0.0702 0.0564
## female 0.0792 0.1166 -0.0772 0.0187 0.0187
## married 0.3245 0.2915 0.0664 0.0165 0.0165
## pacograd 0.3698 0.3296 0.0805 0.0201 0.0201
## sibs 1.1660 1.0538 0.1499 0.0171 0.0338
## eCDF Max
## distance 0.0947
## female 0.0373
## married 0.0330
## pacograd 0.0402
## sibs 0.0776
##
## , , Subclass 5
##
## Means Treated Means Control Std. Mean Diff. eCDF Med eCDF Mean
## distance 0.4970 0.4958 0.0117 0.0072 0.0140
## female 0.0000 0.0000 0.0000 0.0000 0.0000
## married 0.3323 0.2622 0.1407 0.0350 0.0350
## pacograd 1.0000 1.0000 0.0000 0.0000 0.0000
## sibs 1.1273 1.1556 -0.0378 0.0072 0.0094
## eCDF Max
## distance 0.0402
## female 0.0000
## married 0.0701
## pacograd 0.0000
## sibs 0.0211
##
##
## Sample sizes by subclasses:
## Subclass 1 Subclass 2 Subclass 3 Subclass 4 Subclass 5
## Treated 272 221 288 265 322
## Control 1199 533 478 446 347
## Total 1471 754 766 711 669
##
## Summary of balance across subclasses
## Means Treated Means Control Std. Mean Diff. eCDF Med eCDF Mean
## distance 0.3497 0.3467 0.0164 0.0254 0.0306
## female 0.3728 0.3931 0.0471 0.0175 0.0175
## married 0.4525 0.4376 0.0671 0.0322 0.0322
## pacograd 0.4788 0.4849 0.0457 0.0176 0.0176
## sibs 1.3392 1.3500 0.0425 0.0065 0.0131
## eCDF Max
## distance 0.0762
## female 0.0350
## married 0.0644
## pacograd 0.0353
## sibs 0.0391
##
## Percent Balance Improvement:
## Std. Mean Diff. eCDF Med eCDF Mean eCDF Max
## distance 94.4712 82.5907 74.1900 64.7853
## female 89.2441 81.4133 81.4133 81.4133
## married 37.0964 -171.4687 -171.4687 -171.4687
## pacograd 95.6717 75.1291 75.1291 75.1291
## sibs 91.7824 -108.1016 20.3643 48.7077
各共変量について標準化バイアス (Std. Mean Diff.) の絶対値が0.1未満になっていれば、バランスがいいと判断できる。結果を見ると、絶対値が0.1より大きいところがいくつもあるので、あまりバランスはよくないと判断できる。
バランスチェックには、図も使う。まず、標準化バイアスを図にしてみよう。
5つの線は、4つの共変量とマッチングに利用した傾向スコア距離 (distance) である。plot()
のオプションで interactive = TRUE
指定し、図中の点をクリックすると、どの線がどの変数に対応しているかがわかる(RMarkdown だとインタラクティブに図をクリックできないので、Console にコマンドをコピペして実行する)。距離と3つの共変量(グレーの線)については、マッチング前よりマッチング後の方が標準化バイアスが小さくなっており、マッチングによっバランスが改善していることがわかる。しかし、1つの共変量(黒い線、married)については、マッチングしたことによりバランスが悪くなってしまった。
次に、Q-Qプロットを確認してみよう。処置群と統制群が完全にバランスすれば、点が45度線上に並ぶはずである。
続いて、傾向スコアの分布を確認してみよう。
同様に、傾向スコアの分布をヒストグラムでも確認してみよう。
処置群と統制群で、分布の範囲は共有されているようである。
最近傍マッチングをしてみよう。method = nearest
を指定する。また、マハラノビス距離を使ってみる。
m_nn <- matchit(cograd ~ female + married + pacograd + sibs,
data = INC, method = "nearest", distance = "mahalanobis")
summary(m_nn)
##
## Call:
## matchit(formula = cograd ~ female + married + pacograd + sibs,
## data = INC, method = "nearest", distance = "mahalanobis")
##
## Summary of balance for all data:
## Means Treated Means Control SD Control Mean Diff eQQ Med eQQ Mean
## female 0.3728 0.5611 0.4963 -0.1883 0 0.1879
## married 0.4525 0.4762 0.4995 -0.0237 0 0.0234
## pacograd 0.4788 0.3370 0.4728 0.1418 0 0.1418
## sibs 1.3392 1.4712 0.8673 -0.1320 0 0.1308
## eQQ Max
## female 1
## married 1
## pacograd 1
## sibs 2
##
##
## Summary of balance for matched data:
## Means Treated Means Control SD Control Mean Diff eQQ Med eQQ Mean
## female 0.3728 0.3808 0.4858 -8e-03 0 8e-03
## married 0.4525 0.4518 0.4978 7e-04 0 7e-04
## pacograd 0.4788 0.4788 0.4997 0e+00 0 0e+00
## sibs 1.3392 1.3472 0.7554 -8e-03 0 8e-03
## eQQ Max
## female 1
## married 1
## pacograd 0
## sibs 1
##
## Percent Balance Improvement:
## Mean Diff. eQQ Med eQQ Mean eQQ Max
## female 95.7297 0 95.7198 0
## married 96.9163 0 96.8750 0
## pacograd 100.0000 0 100.0000 100
## sibs 93.9090 0 93.8547 50
##
## Sample sizes:
## Control Treated
## All 3003 1368
## Matched 1368 1368
## Unmatched 1635 0
## Discarded 0 0
バランスはどうだろうか?標準化してみよう。
##
## Call:
## matchit(formula = cograd ~ female + married + pacograd + sibs,
## data = INC, method = "nearest", distance = "mahalanobis")
##
## Summary of balance for all data:
## Means Treated Means Control SD Control Std. Mean Diff. eCDF Med
## female 0.3728 0.5611 0.4963 -0.3893 0.0941
## married 0.4525 0.4762 0.4995 -0.0476 0.0119
## pacograd 0.4788 0.3370 0.4728 0.2838 0.0709
## sibs 1.3392 1.4712 0.8673 -0.1763 0.0031
## eCDF Mean eCDF Max
## female 0.0941 0.1883
## married 0.0119 0.0237
## pacograd 0.0709 0.1418
## sibs 0.0165 0.0762
##
##
## Summary of balance for matched data:
## Means Treated Means Control SD Control Std. Mean Diff. eCDF Med
## female 0.3728 0.3808 0.4858 -0.0166 0.0040
## married 0.4525 0.4518 0.4978 0.0015 0.0004
## pacograd 0.4788 0.4788 0.4997 0.0000 0.0000
## sibs 1.3392 1.3472 0.7554 -0.0107 0.0015
## eCDF Mean eCDF Max
## female 0.0040 0.0080
## married 0.0004 0.0007
## pacograd 0.0000 0.0000
## sibs 0.0013 0.0029
##
## Percent Balance Improvement:
## Std. Mean Diff. eCDF Med eCDF Mean eCDF Max
## female 95.7297 95.7297 95.7297 95.7297
## married 96.9163 96.9163 96.9163 96.9163
## pacograd 100.0000 100.0000 100.0000 100.0000
## sibs 93.9090 53.3659 91.8787 96.1640
##
## Sample sizes:
## Control Treated
## All 3003 1368
## Matched 1368 1368
## Unmatched 1635 0
## Discarded 0 0
それなりに良さそうに見える。
図でも確認しよう。
4つある共変量のすべてにおいてバランスが改善んしており、標準化バイアスの絶対値が0.1未満になっている。
次に、Q-Qプロットを確認してみよう。
マッチング後のQ-Qプロットを見ると、ほぼ直線上に並んでいることがわかる。 バランスは良さそうだ。
マッチングできたら、マッチング後のデータを使って因果効果を推定する。 推定したいのは、大学卒業 (cograd) が対数所得 (lincome) に与える影響である。
比較のため、まずマッチング前のデータを使って推定を行う。 共変量を無視して単回帰する。
## # A tibble: 2 x 5
## term estimate std.error statistic p.value
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) 5.12 0.0147 348. 0.
## 2 cograd 0.603 0.0263 22.9 8.38e-110
大学卒業の係数の推定値は0.60、つまり、大学教育の収益率の推定値は60%であり、この効果は統計的に有意である。
共変量を使って重回帰する。
fit_1 <- lm(lincome ~ cograd + female + married + pacograd + sibs,
data = INC)
tidy(fit_1, detail = TRUE, digits = 3)
## # A tibble: 6 x 5
## term estimate std.error statistic p.value
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) 5.43 0.0310 175. 0.
## 2 cograd 0.548 0.0259 21.2 7.82e-95
## 3 female -0.431 0.0237 -18.1 5.58e-71
## 4 married 0.0663 0.0235 2.82 4.84e- 3
## 5 pacograd -0.192 0.0244 -7.89 3.73e-15
## 6 sibs -0.0197 0.0141 -1.40 1.61e- 1
大学卒業の係数の推定値は0.55、つまり、大学教育の収益率の推定値は55%であり、この効果は統計的に有意である。共変量を統制しないと、効果が過大推定されることがわかる。
上で試したマッチングのうち、最近傍マッチングのバランスが良さそうなので、その結果を使って分析しよう。matchit()
の結果を使った分析を行うときは、match.data()
でマッチング相手が見つかったデータを取り出した後、Zelig::zelig()
を以下のように使う。
## How to cite this model in Zelig:
## R Core Team. 2007.
## ls: Least Squares Regression for Continuous Dependent Variables
## in Christine Choirat, Christopher Gandrud, James Honaker, Kosuke Imai, Gary King, and Olivia Lau,
## "Zelig: Everyone's Statistical Software," http://zeligproject.org/
## Model:
##
## Call:
## z5$zelig(formula = lincome ~ cograd, data = data_m)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.8941 -0.2052 0.1313 0.4879 2.0211
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.20516 0.02070 251.43 <2e-16
## cograd 0.52151 0.02928 17.81 <2e-16
##
## Residual standard error: 0.7657 on 2734 degrees of freedom
## Multiple R-squared: 0.104, Adjusted R-squared: 0.1037
## F-statistic: 317.3 on 1 and 2734 DF, p-value: < 2.2e-16
##
## Next step: Use 'setx' method
単回帰でも、マッチング前の重回帰とほぼ同じ推定量が得られる。
共変量を使って重回帰する。
## How to cite this model in Zelig:
## R Core Team. 2007.
## ls: Least Squares Regression for Continuous Dependent Variables
## in Christine Choirat, Christopher Gandrud, James Honaker, Kosuke Imai, Gary King, and Olivia Lau,
## "Zelig: Everyone's Statistical Software," http://zeligproject.org/
## Model:
##
## Call:
## z5$zelig(formula = lincome ~ cograd + female + married + pacograd +
## sibs, data = data_m)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.8876 -0.2835 0.1165 0.4431 2.1703
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.35983 0.03808 140.748 < 2e-16
## cograd 0.51835 0.02793 18.557 < 2e-16
## female -0.39105 0.02890 -13.529 < 2e-16
## married 0.14473 0.02818 5.135 3.02e-07
## pacograd -0.18128 0.02805 -6.462 1.22e-10
## sibs 0.01164 0.01860 0.626 0.532
##
## Residual standard error: 0.7305 on 2730 degrees of freedom
## Multiple R-squared: 0.1857, Adjusted R-squared: 0.1842
## F-statistic: 124.5 on 5 and 2730 DF, p-value: < 2.2e-16
##
## Next step: Use 'setx' method
大学卒業の係数の推定値は0.54、つまり、大学教育の収益率の推定値は54%であり、この効果は統計的に有意である。マッチングする前と比べ、少しだけ効果量が小さくなった。
正確マッチングしたデータを使うとどうなるか試してみよう。
data_exact <- match.data(m_exact)
fit_m2 <- zelig(lincome ~ cograd, data = data_exact, model = "ls")
## How to cite this model in Zelig:
## R Core Team. 2007.
## ls: Least Squares Regression for Continuous Dependent Variables
## in Christine Choirat, Christopher Gandrud, James Honaker, Kosuke Imai, Gary King, and Olivia Lau,
## "Zelig: Everyone's Statistical Software," http://zeligproject.org/
## Model:
##
## Call:
## z5$zelig(formula = lincome ~ cograd, data = data_exact)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.8939 -0.2946 0.1754 0.4881 2.1033
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.12295 0.01477 346.85 <2e-16
## cograd 0.60352 0.02634 22.91 <2e-16
##
## Residual standard error: 0.8062 on 4343 degrees of freedom
## Multiple R-squared: 0.1078, Adjusted R-squared: 0.1076
## F-statistic: 524.9 on 1 and 4343 DF, p-value: < 2.2e-16
##
## Next step: Use 'setx' method
収益率が60%と推定された。統制群の個体を比較的多く棄てたため、処置効果(因果効果) の推定値としてはバイアスが大きくなったと考えられる。