92. Rによる実装( lalonde data)
傾向スコアの算出
> logi <- glm(treat ~ age + educ + black + hisp + married + nodegr + re74 + re75 + u74+ u75, family=binomial,
data=lalonde)
> summary(logi)
Call:
glm(formula = treat ~ age + educ + black + hisp + married + nodegr +
re74 + re75 + u74 + u75, family = binomial, data = lalonde)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.4884 -0.9934 -0.8708 1.2242 1.7403
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.622e+00 1.102e+00 1.472 0.1410
age 8.276e-03 1.452e-02 0.570 0.5687
educ -8.282e-02 7.230e-02 -1.145 0.2520
black -2.216e-01 3.684e-01 -0.601 0.5476 ←素朴な疑問:関連が強くなさそうな変数も
hisp -8.557e-01 5.128e-01 -1.669 0.0952 .
married
nodegr
1.960e-01 2.784e-01 0.704
-8.981e-01 3.146e-01 -2.855
0.4813
0.0043 **
入ってるっぽいけどこれいいのかなあ?
re74 -4.466e-05 3.010e-05 -1.483 0.1380
re75 2.924e-05 4.788e-05 0.611 0.5414
u74 -1.927e-01 3.765e-01 -0.512 0.6088
u75 -3.369e-01 3.213e-01 -1.048 0.2945
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 604.20 on 444 degrees of freedom
Residual deviance: 584.26 on 434 degrees of freedom
AIC: 606.26
Number of Fisher Scoring iterations: 4
12年4月27日金曜日
93. Rによる実装( lalonde data)
マッチングによる因果効果の推定
>
> Y78 <- lalonde$re78
> Tre <- lalonde$treat
> lm(Y78 Tre)
> mout1 <- Match(Y=Y78,Tr=Tre,X=logi$fitted)
> summary(mout1)
Call:
lm(formula = Y78 Tre)
Estimate... 2138.6
AI SE...... 797.76
Coefficients:
T-stat..... 2.6807 Tre
(Intercept)
p.val...... 0.0073468
4555 1794 ←補正なしの線形モデルにおける処置効果
> mout1 number of observations.............. 445
Original <- Match(Y=Y78,Tr=Tre,X=logi$fitted)
> summary(mout1) treated obs............... 185
Original number of
Matched number of observations............... 185
Estimate... 2138.6 observations (unweighted). 322
Matched number of
←傾向スコアによるマッチング後の処置群での因果効果
AI SE...... 797.76
T-stat..... 2.6807
p.val...... 0.0073468
Original number of observations.............. 445
Original number of treated obs............... 185
Matched number of observations............... 185
Matched number of observations (unweighted). 322
12年4月27日金曜日
94. Rによる実装( lalonde data)
マッチングにより共変量の分布は近づいているか?
> MatchBalance(treat ~ age + educ + black + hisp + married + nodegr + re74 + re75 + u74+ u75,
> mout1 <- Match(Y=Y78,Tr=Tre,X=logi$fitted)
match.out=mout1, nboots=1000, data=lalonde)
> summary(mout1)
...(略)...
Estimate... 2138.6
***** (V4) hisp *****
AI SE...... 797.76
Before Matching $ $ After Matching
meanT-stat..... 2.6807
treatment........ 0.059459 $ $ 0.059459
meanp.val...... 0.0073468
control..........
std mean diff.........
0.10769 $
-20.341 $
$
$
0.048649
4.5591
←meanが近づいている
meanOriginal number of observations.............. 445
raw eQQ diff..... 0.048649 $ $ 0.015528
med Original number of treated obs............... 185
raw eQQ diff..... 0 $ $ 0
max Matched number of observations............... 185
raw eQQ diff..... 1 $ $ 1
Matched number of observations (unweighted). 322
mean eCDF diff........ 0.024116 $ $ 0.007764
med eCDF diff........ 0.024116 $ $ 0.007764
max eCDF diff........ 0.048233 $ $ 0.015528
var ratio (Tr/Co)..... 0.58288 $ $ 1.2083
T-test p-value........ 0.064043 $ $ 0.52743
var ratio (Tr/Co)..... 0.58288 $ $ 1.2083
T-test p-value........ 0.064043 $ $ 0.52743
12年4月27日金曜日
95. Rによる実装( lalonde data)
IPW推定量を用いた因果効果の解析
> > #Analysis ny IPW estimation
> ivec1 <- lalonde$treat
> ivec2 <- <- Match(Y=Y78,Tr=Tre,X=logi$fitted)
> mout1 rep(1, nrow(lalonde)) - ivec1
> ivec <- cbind(ivec1,ivec2)
> summary(mout1)
> iestp1 <- ivec1/logi$fitted
> iestp2 <- ivec2/(1-logi$fitted)
> Estimate... 2138.6
iestp <- iestp1 + iestp2
> ipwe <- lm(lalonde$re78 ~ ivec-1,weight=iestp, data=lalonde)
AI SE...... 797.76
> summary(ipwe)
T-stat..... 2.6807
p.val...... 0.0073468
Call:
lm(formula = lalonde$re78 ~ ivec - 1, data = lalonde, weights = iestp)
Original number of observations.............. 445
Residuals:
Original number of treated obs............... 185
Min 1Q Median 3Q Max
-11116 -5935 -2502 observations............... 185
Matched number of 4084 83691
Matched number of observations (unweighted). 322
Coefficients: ↓この差が因果効果(=1623.6)
Estimate Std. Error t value Pr(>|t|)
ivecivec1 6213.0 457.3 13.59 <2e-16 ***
ivecivec2 4571.4 455.9 10.03 <2e-16 ***
--- ↑推定誤差も計算できるよ
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 9630 on 443 degrees of freedom
Multiple R-squared: 0.3916,$ Adjusted R-squared: 0.3888
F-statistic: 142.6 on 2 and 443 DF, p-value: < 2.2e-16
12年4月27日金曜日