Tarea 3

La tarea debe entregarse de manera individual, pero se recomienda ampliamente colaborar en grupos de estudio. Las secciones teóricas deben estar desarrolladas en un procesador de textos y enviadas en formato .docx o .pdf. Alternativamente, puede escribir sus respuestas en lápiz y papel, con letra legible y adjuntar un escaneo de sus respuestas. Las secciones prácticas deberán contener archivos de código replicable y archivos de salida en R (o similares, en caso de usar otro software) para considerarse completas. Las tareas deben entregarse antes de la fecha límite a través de Teams. Puede crear una carpeta comprimida que contenga todos sus archivos y subir esta carpeta en Teams. Recuerde que en Teams debe asegurarse de que los archivos se han subido correctamente.

Rafael Martínez Martínez https://github.com/rafneta (CIDE-ME2019)https://cide.edu/programas/me
11-12-2020s

Table of Contents



library(tidyverse)
library(Matching)
library(stargazer)
library(rdrobust)

Pregunta 1

[15 puntos] Esta pregunta se refiere al artículo de Caliendo y Kopeining (2008)1. La Tabla 1 hace un comparativo en términos de sesgo y varianza de algunas de las decisiones importantes que se deben tomar en el contexto de la estimación del TOT usando propensity score matching. Genere una tabla similar agregando una columna después de la de “Sesgo” llamada “Justificación sesgo” y otra después de “Varianza” llamada “Justificación varianza” donde argumente por qué la decisión en cada fila tiene costos y beneficios en términos de sesgo y varianza.

La tabla esta en el siguiente enlace

Pregunta 2

El siguiente ejercicio se refiere a los datos programa_regularizacion.csv. Esta base contiene una muestra de 4 mil estudiantes. La variable de resultados es la calificación de una prueba estandarizada de matemáticas. La variable asesoria indica si el estudiante recibió asesorías en el verano anterior como parte de un programa de regularización académica. Otras variables incluidas en la base de datos son: la distancia (estandarizada) a la escuela, la educación (estandarizada) de la madre, el valor monetarios de los activos del hogar y un índice (estandarizado) de pobreza.

data <- read_csv("Datos/programa_regularizacion.csv")

2a.

[5 puntos] Estime el propensity score usando el modelo de probabilidad no lineal de su elección para la variable de tratamiento asesoria. Justifique la elección de la especificación del modelo de probabilidad no lineal.

modela <- glm( asesoria ~ escuela_dist + educacion_madre + activos +
                 consumo_calorico + pobreza_ind, 
               family = binomial(link="probit"),
               data = data)
summary(modela)

Call:
glm(formula = asesoria ~ escuela_dist + educacion_madre + activos + 
    consumo_calorico + pobreza_ind, family = binomial(link = "probit"), 
    data = data)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.3747  -0.7523  -0.4983   0.7683   3.0694  

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)      -7.398e-01  7.588e-02  -9.749   <2e-16 ***
escuela_dist      5.283e-01  2.546e-02  20.749   <2e-16 ***
educacion_madre   2.315e-01  2.320e-02   9.977   <2e-16 ***
activos           5.685e-05  8.273e-05   0.687    0.492    
consumo_calorico -3.928e-03  7.719e-03  -0.509    0.611    
pobreza_ind      -3.185e-01  2.425e-02 -13.133   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 4578.2  on 3999  degrees of freedom
Residual deviance: 3789.5  on 3994  degrees of freedom
AIC: 3801.5

Number of Fisher Scoring iterations: 5

El desempeño del logit y probit es muy parecido, si se toma un probit se trabaja sobre la parametrización de la variable dependiente de na distribución normal lo cual tiene una asociación más clara.

2b.

[5 puntos] Genere una gráfica que represente la región de soporte común que resulta de la especificación elegida.

datab <- data %>% 
  mutate( pro = predict(modela, type = "response"))

ggplot(datab, aes(x = pro, y = ..density.., color = factor(asesoria))) +
  geom_histogram() +
  #facet_wrap(~asesoria) +
  xlab("Probabilidad ajustada")+
  geom_density()

2c.

[10 puntos] Estime el TOT por el método de vecino más cercano usando la especificación para el propensity score elegida anteriormente.

set.seed(123)
modelc <- Match(Y = data$calificacion,
               Tr = data$asesoria, 
               X = modela$fitted.values, 
               M = 1, 
               replace = FALSE, 
               CommonSupport = TRUE)
summary(modelc)

Estimate...  0.081022 
SE.........  0.046856 
T-stat.....  1.7292 
p.val......  0.083781 

Original number of observations..............  3972 
Original number of treated obs...............  1037 
Matched number of observations...............  1037 
Matched number of observations  (unweighted).  1037 

El TOT es 0.081 unidades más de clasificación con un nivel de significancia al 10%.

2d.

[5 puntos] Estime el TOT por el método de radio usando la especificación para el propensity score elegida anteriormente. Justifique la elección del número de vecinos y el tamaño del caliper.

set.seed(123)
modeld <- Match(Y = data$calificacion,
               Tr = data$asesoria, 
               X = modela$fitted.values, 
               caliper = 0.1, 
               replace = FALSE, 
               CommonSupport = TRUE)
summary(modeld)

Estimate...  0.15973 
SE.........  0.053085 
T-stat.....  3.0089 
p.val......  0.0026218 

Original number of observations..............  3972 
Original number of treated obs...............  1037 
Matched number of observations...............  766 
Matched number of observations  (unweighted).  766 

Caliper (SDs)........................................   0.1 
Number of obs dropped by 'exact' or 'caliper'  271 

El TOT es 0.16 unidades más de clasificación con un nivel de significancia al 1%. LA valor del caliper se eloge a partie de la distribución mostrada anteriormente.

Pregunta 3

Suponga que se convierte en asesor de la instancia gubernamental encargada de la seguridad alimentaria. Al gobierno le interesa que la seguridad alimentaria de las familias productoras de maíz para autoconsumo no se vea afectada negativamente por la presencia de cierta plaga y dará una transferencia per cápita a todos los pequeños productores de maíz cuyos cultivos se considere están afectados por dicha plaga. Para determinar qué hogares reciben la transferencia se decide usar un índice de prevalencia de la plaga y se selecciona un umbral por arriba del cual está demostrado que los rendimientos del cultivo del maíz se ven seriamente afectados. Esta inspección se llevará a cabo por autoridades federales y el umbral es conocido solo por estas autoridades. Cuando se determine que la prevalencia está por encima del umbral, el monto del programa será transferido de manera inmediata, electrónicamente.

3a.

[5 puntos] ¿Qué aspectos del programa permitirían emplear un diseño de regresión discontinua para evaluar la efectividad de este sobre la seguridad alimentaria y cómo mostraría su validez empíricamente?
Se puede modelar como regresión discontinua porque se tiene un score (indice de prevalencia de la plaga continuo). Al superar el umbral se tiene acceso al programa (recibir la transferencia), entonces se tiene que tenemos a tratados y no tratados que se especifican por el valor del umbral (discontinuidad). No tenemos autoselección, pues los únicos que conocen el valor de umbral son las autoridades federales. Para estimar la validez empírica, se puede proponer un modelo de regresión discontinua, como variables independientes se utilizaría una dummy de accedo al tratamiento, el umbral \(a\) (podría ser un polinomio) y distintos controles. Como variable dependiente e tendría la seguridad alimentaria

3b.

[5 puntos] ¿Cómo emplearía el diseño de este programa para evaluar su efectividad con un modelo de regresión discontinua nítida? Elabore una gráfica donde explique una situación en la que el programa muestra ser efectivo. Describa cómo usaría una regresión para hacer inferencia respecto a la efectividad del programa.
Regresión discontinua
Regresión discontinua

En la gráfica se muestra un bosquejo de la relación entre la seguridad alimentaria y e índice de prevalencia de la plaga, esta relación es decreciente (a mayor indice menor seguridad). Se espera la discontinuidad en el valor del umbral.

El programa puede evaluarse por medio de la estimación del coeficiente \(\rho\) de la siguiente regresión

\[y=\alpha +\rho D_a+ P(a,D_a)+\varepsilon_a\]

\(D_a\) es la variable dummy de acceso al tratamiento, \(P\) puede ser un polinomio en la variable \(a\) y/o en la variable \(a-a_0\). El polinomio modela las no linealidades y los términos pueden estar ponderados por \(D_a\), todo lo anterior para darle flexibilidad al modelo. Se supone tomar valores cercanos al umbral, esto tiene como consecuencia que los efectos no lineales (sobre el efecto del tratamiento) sean despreciables, ademas de garantizar de trabajar con individuos estadísticamente equivalentes.

3c.

[5 puntos] ¿Qué factores podrían invalidar el uso de este método para evaluar el programa?
Con el objetivo de contar con grupos de control y tratamiento estadísticamente equivalentes se utilizan los datos que se encuentran cerca de la discontinuidad (se define una ventana), esto podría reducir el numero de datos y con esto no asegurar consistencia de las estimaciones. Podría filtrarse el valor del umbral (para tener acceso al programa) entonces habría autoselección y los grupos podrían estar sesgados en alguna característica.

3d.

Suponga que otro de los asesores juzga como demasiado paternalista la transferencia y propone que, en su lugar, se otorgue un cupón válido para canjearse por bultos de un plaguicida. Asumiendo que en una encuesta posterior usted podría conocer la cantidad precisa de plaguicida aplicado, ¿cómo emplearía un diseño de regresión discontinua difusa para evaluar el efecto del uso del plaguicida sobre la seguridad alimentaria? En particular, describa:

3di.

[5 puntos] ¿Cómo estimaría la forma reducida? ¿Cuál es el coeficiente relevante y cuál es su interpretación?
Regresando la seguridad alimentaria sobre el instrumento dummy que indica si se supera o no umbral, el valor del coeficiente de la variable dummy indicara el efecto al ser asignado, pero no tendrá en cuenta la cantidad del tratamiento (cantidad de plaguicida utilizado). De ahi que se tenga un modelo difuso

3dii.

[5 puntos] ¿Cómo estimaría la primera y la segunda etapa? ¿Cuáles son los coeficientes relevantes y cuál es su interpretación?

Para la primera etapa se realiza la regresión de la cantidad de plaguicida (variable endógena) sobre la variable indicadora del umbral (instrumento)

Para la segunda etapa se toman los estimados de la cantidad de plaguicida (que ya no presenta endógeneidad) y sobre ellos se regresa la seguridad alimentaria. En este caso el coeficiente asociado a la cantidad de plaguicida representa el efecto de haber sido beneficiado al programa (superar el umbral) respecto a no ser beneficiado

3diii.

[5 puntos] ¿Cuáles son los supuestos necesarios para estimar este modelo usando mínimos cuadrados en dos etapas?

Los supuestos, son que la cantidad de plaguicida y la variable indicadora de umbral estén correlacionadas (Relevancia), y que la variable indicadora no este correlacionada con el error (exógeneidad), en este caso la aleatoriedad en la asignación puede suponerse por la privacidad del valor de umbral y esto a su vez provoca la exógeneidad

Pregunta 4

El siguiente problema se basa en una publicación reciente de Calonico, Cattaneo, Farrell y Titiunik (2019)2. La base de datos headstar.csv contiene información de 2,810 condados de los Estados Unidos. La variable mort_age59_related_postHS indica la mortalidad infantil en cada uno de los condados. El programa Head Star otorgó fondos de su componente de salud a todos los condados con un índice de pobreza superior a 59.1984. La variable povrate60 es el índice de pobreza para cada condado. Se desea estimar el efecto del programa en la mortalidad infantil empleando un diseño de regresión discontinua.

4a.

[10 puntos] Genere una gráfica donde muestre evidencia de una discontinuidad en la tasa de mortalidad para aquellos condados que recibieron fondos del programa.

data <- read_csv("Datos/headstar.csv")
data1 <- data %>% mutate(indica =ifelse(povrate60>59.1984,"T","C") )

dataa <- na.omit(data1)

ggplot(subset(dataa, mort_age59_related_postHS>0),
       aes(x=povrate60 ,y= mort_age59_related_postHS, 
           color=as.factor(indica), shape=as.factor(indica)))+
  labs(x = "índice de pobreza", y = "mortalidad infantil")+
  geom_point()+
  xlim(50, 70)+
  ylim(0, 20)+
  geom_smooth(se=FALSE)+
  geom_vline(xintercept=59.1984, linetype="dashed", color = "blue")


ggplot(dataa,
       aes(x=povrate60 ,y= mort_age59_related_postHS, 
           color=as.factor(indica), shape=as.factor(indica)))+
  labs(x = "índice de pobreza", y = "mortalidad infantil")+
  geom_point()+
  xlim(50, 70)+
  ylim(0, 10)+
  geom_smooth(se=FALSE)+
  geom_vline(xintercept=59.1984, linetype="dashed", color = "blue")

4b.

[10 puntos] Estime la versión más básica de un modelo de regresión discontinua. Reporte el coeficiente estimado del efecto del tratamiento y su significancia estadística. Interprete su resultado.

summary(data1$mort_age59_related_postHS)

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
  0.000   0.000   0.000   2.253   2.824 136.054      25 

modelb <- lm(mort_age59_related_postHS ~ indica + povrate60,
             data = data1 )
stargazer(modelb, type = "text")

===============================================
                        Dependent variable:    
                    ---------------------------
                     mort_age59_related_postHS 
-----------------------------------------------
indicaT                      -0.949**          
                              (0.467)          
                                               
povrate60                    0.035***          
                              (0.009)          
                                               
Constant                     1.072***          
                              (0.333)          
                                               
-----------------------------------------------
Observations                   2,783           
R2                             0.005           
Adjusted R2                    0.004           
Residual Std. Error      5.713 (df = 2780)     
F Statistic           7.031*** (df = 2; 2780)  
===============================================
Note:               *p<0.1; **p<0.05; ***p<0.01

En el modelo más simple no suponemos un ancho de ventana y el polinomio en la variable independiente se supone de primer grado. En este caso el tener acceso al programa supone una reducción en la tasa de mortalidad de -0.949 a un nivel de significancia del 5%. Al observar la estadística descriptiva de la variable dependiente no se tiene una idea clara de la medición de la tasa de mortalidad.

4c.

[10 puntos] En el artículo de Calonico et al. (2019) se reportan los resultados al emplear un modelo flexible de regresión discontinua con controles. Los controles están incluidos en la misma base de datos, sin embargo, los autores no reportan la forma precisa en que realizan esta estimación. Proponga un modelo con controles y con un ancho de ventana. Use la función rdbwselect para explorar algunas posibilidades de ancho de ventana elegidos de manera óptima y compare sus resultados con los reportados en el artículo.

modelc <- rdbwselect(y = data1$mort_age59_related_postHS, 
           x = data1$povrate60, 
           c = 59.1984,
           all = T)
summary(modelc)

Call: rdbwselect

Number of Obs.                 2783
BW type                         All
Kernel                   Triangular
VCE method                       NN

Number of Obs.                2489         294
Order est. (p)                   1           1
Order bias  (q)                  2           2
Unique Obs.                   2489         294

=======================================================
                  BW est. (h)    BW bias (b)
            Left of c Right of c  Left of c Right of c
=======================================================
     mserd     6.810      6.810     10.725     10.725
    msetwo    16.745      4.607     22.850      8.915
    msesum     7.475      7.475     10.968     10.968
  msecomb1     6.810      6.810     10.725     10.725
  msecomb2     7.475      6.810     10.968     10.725
     cerrd     4.581      4.581     10.725     10.725
    certwo    11.263      3.099     22.850      8.915
    cersum     5.028      5.028     10.968     10.968
  cercomb1     4.581      4.581     10.725     10.725
  cercomb2     5.028      4.581     10.968     10.725
=======================================================

Con ayuda de enlace se logran tomar los controles adecuados para reproducir los resultados del artículo mencionado


modelc1 <- rdrobust(y = data1$mort_age59_related_postHS, 
                    x = data1$povrate60, 
                    c=59.1968)
summary(modelc1)

Call: rdrobust

Number of Obs.                 2783
BW type                       mserd
Kernel                   Triangular
VCE method                       NN

Number of Obs.                2489         294
Eff. Number of Obs.            234         180
Order est. (p)                   1           1
Order bias  (q)                  2           2
BW est. (h)                  6.808       6.808
BW bias (b)                 10.724      10.724
rho (h/b)                    0.635       0.635
Unique Obs.                   2489         294

=============================================================================
        Method     Coef. Std. Err.         z     P>|z|      [ 95% C.I. ]       
=============================================================================
  Conventional    -2.410     1.205    -2.000     0.046    [-4.773 , -0.048]    
        Robust         -         -    -2.034     0.042    [-5.463 , -0.101]    
=============================================================================

modelc2 <- rdrobust(y = data1$mort_age59_related_postHS, 
                    x = data1$povrate60, 
                    c=59.1968, 
                    covs = data1 %>% dplyr::select(-mort_age59_related_postHS,
                                   -povrate60, -belowline,
                                   -indica), 
                    h=6.810, 
                    b=10.725)
summary(modelc2)

Call: rdrobust

Number of Obs.                 2779
BW type                      Manual
Kernel                   Triangular
VCE method                       NN

Number of Obs.                2485         294
Eff. Number of Obs.            234         180
Order est. (p)                   1           1
Order bias  (q)                  2           2
BW est. (h)                  6.810       6.810
BW bias (b)                 10.725      10.725
rho (h/b)                    0.635       0.635
Unique Obs.                   2485         294

=============================================================================
        Method     Coef. Std. Err.         z     P>|z|      [ 95% C.I. ]       
=============================================================================
  Conventional    -2.507     1.097    -2.284     0.022    [-4.658 , -0.356]    
        Robust         -         -    -2.316     0.021    [-5.366 , -0.446]    
=============================================================================

modelc3 <- rdrobust(y = data1$mort_age59_related_postHS, 
                x = data1$povrate60, 
                c= 59.1984,
                covs = data1 %>% dplyr::select(!c(mort_age59_related_postHS,
                                   povrate60, belowline,
                                   indica)), 
                masspoints="off", 
                stdvars="on")
summary(modelc3)

Call: rdrobust

Number of Obs.                 2779
BW type                       mserd
Kernel                   Triangular
VCE method                       NN

Number of Obs.                2485         294
Eff. Number of Obs.            240         184
Order est. (p)                   1           1
Order bias  (q)                  2           2
BW est. (h)                  6.980       6.980
BW bias (b)                 11.639      11.639
rho (h/b)                    0.600       0.600

=============================================================================
        Method     Coef. Std. Err.         z     P>|z|      [ 95% C.I. ]       
=============================================================================
  Conventional    -2.473     1.089    -2.271     0.023    [-4.608 , -0.339]    
        Robust         -         -    -2.256     0.024    [-5.206 , -0.366]    
=============================================================================

Se tiene una opción para estimar una regresión discontinua configurable.


a <- rdplot(y= data1$mort_age59_related_postHS, 
       x = data1$povrate60, 
       c = 59.1984)


  1. Caliendo, M., & Kopeinig, S. (2008). Some practical guidance for the implementation of propensity score matching. Journal of economic surveys, 22(1), 31-72.

  2. Calonico, S., Cattaneo, M. D., Farrell, M. H., & Titiunik, R. (2019). Regression discontinuity designs using covariates. Review of Economics and Statistics, 101(3), 442-451.