【第4章予測】練習問題4.5.2「メキシコにおける選挙と条件付き現金給付プログラム」

1.データセット

(1)データセット
  ・第4章の練習問題を解く際に使うデータセットは、以下のリンク先からダウンロードできる。

(2)元論文
  ・この練習問題の元論文を参考のためリンクを貼っておく。

2.練習問題4.5.2「メキシコにおける選挙と条件付き現金給付プログラム」

(1)簡易的な方法による条件付き現金給付プログラムの効果推定
 <投票率(変数t2000)への影響>
  ①トリートメントグループの投票率の平均値は約68.08%  。一方、コン
   トロールグループの平均値は約63.81%。
  ②各グループへの割当がランダムに行われたと仮定すれば、条件付き現
   金給付プログラムは約4.26%も投票率を引き上げる。
  ③線形回帰モデルの結果は、切片がコントロールグループの平均値と、
   予測変数の係数は平均的なトリートメント効果と一致している。
 <得票率(変数pri2000s)への影響>
  
①トリートメントグループにおける与党の得票率の平均値は約38.1% 、
   コントロールグループの平均値は約34.5%
  ②各グループへの割当がランダムに行われたと仮定すれば、条件付き現
   金給付プログラムは約3.62%も得票率を引き上げる。
  ③線形回帰モデルの結果は、切片がコントロールグループの平均値と、
   予測変数の係数は平均的なトリートメント効果と一致している。

> progresa <- read.csv("progresa.csv")
> dim(progresa)
[1] 417  20

> mean(progresa$t2000[progresa$treatment == 1])
[1] 68.08451

> mean(progresa$t2000[progresa$treatment == 0])
[1] 63.81483

> mean(progresa$t2000[progresa$treatment == 1]) - mean(progresa$t2000[progresa$treatment == 0])
[1] 4.269676

> fit1 <- lm(t2000 ~ treatment,data = progresa)
> fit1
Call:
lm(formula = t2000 ~ treatment, data = progresa)
Coefficients:
(Intercept)    treatment  
      63.81         4.27  

> mean(progresa$pri2000s[progresa$treatment == 1])
[1] 38.11145

> mean(progresa$pri2000s[progresa$treatment == 0])
[1] 34.48895

> mean(progresa$pri2000s[progresa$treatment == 1]) - mean(progresa$pri2000s[progresa$treatment == 0])
[1] 3.622496

> fit2 <- lm(pri2000s ~ treatment,data = progresa)
> fit2
Call:
lm(formula = pri2000s ~ treatment, data = progresa)
Coefficients:
(Intercept)    treatment  
     34.489        3.622  

(2)重回帰モデルによる条件付き現金給付プログラムの効果推定
  <投票率(変数t2000)への影響>
  ①トリートメントの係数は約4.59%で単回帰モデルと同水準の値。
   なお、重回帰モデルの係数の方が約0.33%大きい。
  ②但し、このモデルの調整済決定係数は0.062と小さく、説明力は低い。
 <得票率(変数pri2000s)への影響>
  ①トリートメントの係数は約2.92%で単回帰モデルと同水準の値。
   なお、重回帰モデルの係数の方が約0.7%小さく効果を推定している。
  ②このモデルの調整済決定係数約0.20は、結果変数が投票率の場合より
   も大きいが、依然として説明力は低い。

> fit3 <- lm(t2000 ~ treatment + avgpoverty + pobtot1994 + votos1994 + pri1994 + pan1994 + prd1994,data = progresa)
> fit3
Call:
lm(formula = t2000 ~ treatment + avgpoverty + pobtot1994 + votos1994 + 
    pri1994 + pan1994 + prd1994, data = progresa)

Coefficients:
(Intercept)    treatment   avgpoverty   pobtot1994    votos1994      pri1994      pan1994      prd1994  
  64.011735     4.549445     0.310255    -0.001213    -0.026152     0.036055     0.026538     0.017575  

> fit3.summary <- summary(fit3)
> fit3.summary$adj.r.squared
[1] 0.06273301

> fit4 <- lm(pri2000s ~ treatment + avgpoverty + pobtot1994 + votos1994 + pri1994 + pan1994 + prd1994,data = progresa)
> fit4
Call:
lm(formula = pri2000s ~ treatment + avgpoverty + pobtot1994 + 
    votos1994 + pri1994 + pan1994 + prd1994, data = progresa)

Coefficients:
(Intercept)    treatment   avgpoverty   pobtot1994    votos1994      pri1994      pan1994      prd1994  
 37.9500862    2.9277395    0.5329801   -0.0004996   -0.0417278    0.0624589   -0.0487349   -0.0287363  

> fit4.summary <- summary(fit4)
> fit4.summary$adj.r.squared
[1] 0.2072516

(3)代替モデルによる条件付き現金給付プログラムの効果推定
    <投票率(変数t2000)への影響>
  ①トリートメントの係数は約-0.15%と実質的に影響をあたない水準で、
   元の重回帰モデルと異なる結果になっている。
  ②調整済決定係数の値は約0.68と元のモデルよりもかなり改善しており
   説明力が高いモデルになっている。
 <得票率(変数pri2000s)への影響>
  ①トリートメントの係数は約0.23%と実質的に影響を与えない水準で、
   元の重回帰モデルと異なる結果になっている。
  ②また、調整済決定係数は約0.57と元のモデルよりも改善しており、
   説明力が高くなっている。

> fit6 <- lm(t2000 ~ treatment + avgpoverty + I(log(pobtot1994)) + t1994 + pri1994s + pan1994s + prd1994s,data = progresa)
> fit6
Call:
lm(formula = t2000 ~ treatment + avgpoverty + I(log(pobtot1994)) + 
    t1994 + pri1994s + pan1994s + prd1994s, data = progresa)

Coefficients:
       (Intercept)           treatment          avgpoverty  I(log(pobtot1994))               t1994  
           19.7984             -0.1530              2.8621             -3.2471              0.6605  
          pri1994s            pan1994s            prd1994s  
            0.1943              0.6374              0.3065  

> fit6.summary <- summary(fit6)
> fit6.summary$adj.r.squared
[1] 0.6868331

> fit7 <- lm(pri2000s ~ treatment + avgpoverty + I(log(pobtot1994)) + t1994 + pri1994s + pan1994s + prd1994s,data = progresa)
> fit7
Call:
lm(formula = pri2000s ~ treatment + avgpoverty + I(log(pobtot1994)) + 
    t1994 + pri1994s + pan1994s + prd1994s, data = progresa)

Coefficients:
       (Intercept)           treatment          avgpoverty  I(log(pobtot1994))               t1994  
          35.85174             0.23547             2.47163            -4.62934             0.03257  
          pri1994s            pan1994s            prd1994s  
           0.51047            -0.18384            -0.05293  

> fit7.summary <- summary(fit7)
> fit7.summary$adj.r.squared
[1] 0.5721621

(4)グループ別の予測変数の確認
  ①いずれの予測変数も第1四分位〜第3四分の範囲及び中央値は、コント
   ロールグループとトリートメントグループで殆ど同じ。
  ②但し、トリートメントグループの方がコントロールグループより外れ
   値を多く含んでいる。特に投票率とPRI支持率は高い外れ値が目立つ。

> par(mfrow = c(1,2),cex=1)
> boxplot(log(pobtot1994)~treatment,data = progresa,ylab = "log pobtot")

> boxplot(avgpoverty~treatment,data = progresa,ylab = "avgpoverty")

> boxplot(t1994~treatment,data = progresa,ylab = "vote rate 1994")

> boxplot(pri1994s~treatment,data = progresa,ylab = "pri rate 1994")

画像1

画像2

(5)予測変数の変更による重回帰モデルへの影響
 <投票率(変数t2000r)への影響>
  ①トリートメントの係数は約-1.0%で、投票率に与える影響は小さい。
  ②調整済決定係数の値は約0.16と小さく、説明力が低い。
 <得票率(変数pri2000v)への影響>
  ①トリートメントの係数は約0.8%で、得票率に与える影響は小さい。
  ②調整済決定係数は約0.47と上記の投票率のモデルよりは高いが、
   このモデルによる得票率の説明力は半分程度になっている。

> fit8 <- lm(t2000r ~ treatment + avgpoverty + I(log(pobtot1994)) + t1994r + pri1994v + pan1994v + prd1994v,data = progresa)
> summary(fit8)
Call:
lm(formula = t2000r ~ treatment + avgpoverty + I(log(pobtot1994)) + 
    t1994r + pri1994v + pan1994v + prd1994v, data = progresa)

Residuals:
    Min      1Q  Median      3Q     Max 
-38.041  -4.555   0.029   5.010  29.069 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)    
(Intercept)        33.47237    8.85553   3.780 0.000180 ***
treatment          -1.08094    0.81683  -1.323 0.186465    
avgpoverty         -0.27734    0.88768  -0.312 0.754874    
I(log(pobtot1994)) -0.27878    0.47487  -0.587 0.557487    
t1994r              0.22238    0.03102   7.168 3.59e-12 ***
pri1994v            0.12473    0.05489   2.272 0.023586 *  
pan1994v            0.27356    0.07257   3.770 0.000188 ***
prd1994v            0.11323    0.05790   1.955 0.051209 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 7.795 on 408 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.1809,	Adjusted R-squared:  0.1669 
F-statistic: 12.87 on 7 and 408 DF,  p-value: 5.603e-15

> fit9 <- lm(pri2000v ~ treatment + avgpoverty + I(log(pobtot1994)) + t1994r + pri1994v + pan1994v + prd1994v,data = progresa)
> summary(fit9)
Call:
lm(formula = pri2000v ~ treatment + avgpoverty + I(log(pobtot1994)) + 
    t1994r + pri1994v + pan1994v + prd1994v, data = progresa)

Residuals:
    Min      1Q  Median      3Q     Max 
-37.876  -7.686   1.072   7.461  34.758 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)    
(Intercept)        50.22721   14.43904   3.479 0.000558 ***
treatment           0.80172    1.33185   0.602 0.547536    
avgpoverty          3.19082    1.44737   2.205 0.028042 *  
I(log(pobtot1994)) -2.59489    0.77428  -3.351 0.000879 ***
t1994r             -0.08612    0.05058  -1.703 0.089421 .  
pri1994v            0.35738    0.08950   3.993 7.73e-05 ***
pan1994v           -0.48863    0.11832  -4.130 4.41e-05 ***
prd1994v           -0.24158    0.09441  -2.559 0.010862 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 12.71 on 408 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.4836,	Adjusted R-squared:  0.4747 
F-statistic: 54.58 on 7 and 408 DF,  p-value: < 2.2e-16

(6)貧困レベルによる平均トリートメント効果の差異
 <投票率(変数t2000)への影響>

> fit10 <- lm(t2000 ~ treatment  + I(log(pobtot1994)) + avgpoverty + I(avgpoverty^2) + treatment:avgpoverty + treatment:I(avgpoverty^2),data = progresa)
> summary(fit10)
Call:
lm(formula = t2000 ~ treatment + I(log(pobtot1994)) + avgpoverty + 
    I(avgpoverty^2) + treatment:avgpoverty + treatment:I(avgpoverty^2), 
    data = progresa)
Residuals:
    Min      1Q  Median      3Q     Max 
-41.389 -13.710  -2.435   7.475 280.248 

Coefficients:
                          Estimate Std. Error t value Pr(>|t|)    
(Intercept)                125.832    186.017   0.676    0.499    
treatment                   34.809    211.509   0.165    0.869    
I(log(pobtot1994))         -16.114      1.662  -9.693   <2e-16 ***
avgpoverty                  29.018     85.369   0.340    0.734    
I(avgpoverty^2)             -3.794      9.790  -0.388    0.699    
treatment:avgpoverty       -18.037     98.477  -0.183    0.855    
treatment:I(avgpoverty^2)    2.321     11.342   0.205    0.838    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 27.78 on 410 degrees of freedom
Multiple R-squared:  0.2051,	Adjusted R-squared:  0.1935 
F-statistic: 17.63 on 6 and 410 DF,  p-value: < 2.2e-16

> par(mfrow = c(1,2))
> plot(x = 0:5,y = yT.hat,type = "l",xlim = c(-1,6),ylim = c(10,70),xlab = "avgpoverty",ylab = "t2000",col="blue")
> lines(x = 0:5 , y = yC.hat , lty ="dashed",col ="red")
> text(0.5,65,"Treatment",col="blue")
> text(2.5,35,"Control",col="red")
> plot(x = 0:5,y=yT.hat-yC.hat,type = "l",xlim = c(0,5),ylim = c(-10,40),xlab = "avgpoverty",ylab = "ATE")

画像3

 <得票率(変数pri2000s)への影響>

> fit11 <- lm(pri2000s ~ treatment  + I(log(pobtot1994)) + avgpoverty + I(avgpoverty^2) + treatment:avgpoverty + treatment:I(avgpoverty^2),data = progresa)
> summary(fit11)
Call:
lm(formula = pri2000s ~ treatment + I(log(pobtot1994)) + avgpoverty + 
    I(avgpoverty^2) + treatment:avgpoverty + treatment:I(avgpoverty^2), 
    data = progresa)

Residuals:
    Min      1Q  Median      3Q     Max 
-34.498  -9.430  -1.569   7.553  98.038 

Coefficients:
                          Estimate Std. Error t value Pr(>|t|)    
(Intercept)                36.7179   104.0801   0.353    0.724    
treatment                 109.0592   118.3435   0.922    0.357    
I(log(pobtot1994))        -10.8381     0.9301 -11.652   <2e-16 ***
avgpoverty                 33.1890    47.7658   0.695    0.488    
I(avgpoverty^2)            -3.6441     5.4776  -0.665    0.506    
treatment:avgpoverty      -51.4069    55.0998  -0.933    0.351    
treatment:I(avgpoverty^2)   6.0420     6.3459   0.952    0.342    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 15.54 on 410 degrees of freedom
Multiple R-squared:  0.2897,	Adjusted R-squared:  0.2793 
F-statistic: 27.88 on 6 and 410 DF,  p-value: < 2.2e-16

> par(mfrow = c(1,2))
> plot(x = 0:5,y = yT.hat2,type = "l",xlim = c(-1,6),ylim = c(-40,70),xlab = "avgpoverty",ylab = "pri2000s",col="blue")
> lines(x = 0:5 , y = yC.hat2 , lty ="dashed",col ="red")
> text(3.5,65,"Treatment",col="blue")
> text(0,35,"Control",col="red")
> plot(x = 0:5,y=yT.hat2-yC.hat2,type = "l",xlim = c(0,5),ylim = c(-5,110),xlab = "avgpoverty",ylab = "ATE")

画像4


この記事が気に入ったらサポートをしてみませんか?