En Crepon et al. (2015)1 se estudia una intervención en Marruecos en la que se analiza el efecto de la adopción de microfinanzas, a través de un experimento de campo. En 81 de 162 localidades estudiadas se introdujo aleatoriamente una empresa de microfinanzas. Para seleccionar las localidades de tratamiento, primero se emparejaron localidades de acuerdo a características observables y, para cada pareja se asignó a tratamiento y otra a control. La variable que identifica a las parejas es paire. La base de datos crepon_morocco_balance.csv contiene los datos de este estudio usados para mostrar la integridad del diseño. La variable treatment es la variable de asignación aleatoria, mientras que la variable client es la variable de adopción
[3 puntos] Primero recordaremos cómo mostrar que el tratamiento efectivamente fue asignado de manera aleatoria. El siguiente código lee los datos que debemos usar y se queda con las observaciones de la línea base. Con estos datos, mostraremos que la variable members_resid_bl, que indica el número de personas que viven en cada hogar está balanceado entre los grupos asignados a tratamiento y control. Noten que la media del número de personas que viven en el hogar en el grupo de control es 5.14 (d.e. 2.70) y que hay 2,266 hogares en dicho grupo de control. Esto es exactamente lo que se reporta en la fila correspondiente a Number members en la tabla 1 del artículo.
# A tibble: 2 × 4
treatment mean std n
<dbl> <dbl> <dbl> <int>
1 0 5.14 2.69 2266
2 1 5.19 2.76 2199
Obtenga ahora el valor de la diferencia entre el grupo de tratamiento y el de control, así como su valor \(p\) (últimas dos columnas). Para ello, estime una regresión en la que la variable dependiente sea número de personas que vive en el hogar members_resid_bl, en función de la variable de asignación treatment y variables dummy de pareja de localidad (la variable paire indica cuáles son las parejas). La regresión permite recuperar la diferencia de 0.04 personas que se reporta en la fila correspondiente en la tabla 1. Para recuperar el valor \(p\), estime errores agrupados usando la variable demi_paire, que es la clave de las distintas localidades, como variable de agrupación. Una forma de realizar esto es con la función coef_test del paquete clubSandwich.2
Estimamos la regresión con el número de personas como variable dependiente en función de la asignación al tratamiento y de las parejas:
Obtenemos un coeficiente de 0.04334484, que se redondea a 0.04 en la tabla. El valor \(p\) de 0.583 es exactamente el reportado en la última columna. Aquí lo clave es calcular los errores agrupados.
[2 puntos] Ahora mostremos que efectivamente este es un ejemplo de una intervención con cumplimiento imperfecto. Genere un cuadro que indique: 1) cuántas personas que fueron asignadas a recibir el tratamiento efectivamente fueron clientes; 2) cuántas personas que fueron asignadas a recibir el tratamiento no se convirtieron en clientes; 3) cuántas personas que no fueron asignadas a recibir el tratamiento sí se convirtieron en clientes; y 4) cuántas personas que no fueron asignadas a recibir el tratamiento tampoco se convirtieron en clientes.
treatment No cliente Cliente
Control 2101 0
Tratamiento 1753 251
Este es un ejemplo de una intervención con incumplimiento de un solo lado. De aquellos asignados al tratamiento, 251 se convirtieron en clientes y 1,753 no. De aquellos asignados al control, ninguno tuvo acceso a microfinanzas. En otras palabras, podemos descartar la presencia de siempre cumplidores (always-takers). Por tanto, en este tipo de aplicaciones, el efecto del tratamiento en los tratados (támbien llamado TOT, ATET o TT) es igual al LATE.
[5 puntos] Ahora mostraremos que la adopción, es decir, convertirse en cliente, no es independiente de las características de los hogares. Considere las variables members_resid_bl y act_number_bl, que indican el número de miembros del hogar y el número de actividades económicas del hogar. Para cada una de estas dos variables, utilice la misma especificación que en la parte a., pero ahora usando la variable cliente como regresor. ¿Qué concluye?
La adopción no es independiente de las características de los hogares. Parece ser que los hogares que se convierten en clientes son más grandes y tienen más actividades económicas. Por tanto, comparar las variables de impacto entre quienes adoptarony no adoptaron implicaría un sesgo de selección.
[5 puntos] Con estos elementos estamos convencidos de que es necesario emplear lo que sabemos sobre cumplimiento imperfecto. Usaremos ahora los datos en crepon_morocco_analysis.csv, que contiene los datos empleados para evaluar el impacto de la adopción. Estos datos están listos para analizarse. Estime la forma reducida del efecto de ser asignado al tratamiento sobre gasto total, expense_total. Comente los resultados, en particular, comente sobre la magnitud y la significancia estadística de la variable treatment. Aquí y en adelante, incluya los siguientes controles en la regresión: members_resid_bl, nadults_resid_bl, head_age_bl, act_livestock_bl, act_business_bl, borrowed_total_bl, members_resid_d_bl, nadults_resid_d_bl, head_age_d_bl, act_livestock_d_bl, act_business_d_bl, borrowed_total_d_bl, ccm_resp_activ, other_resp_activ, ccm_resp_activ_d y other_resp_activ_d. Además, incluya efectos fijos por pareja introduciendo la variable paire como factor. Use los mismos errores estándar que en la parte a. Con esto deberá poder recuperar el coeficiente y el error estándar de la columna (3) de la tabla 3.
La forma reducida estima la relación causal entre la variable de gasto y la asignación aleatoria. Se estima un efecto de 4057 unidades monetarias en el gasto, estadísticamente significativo al 5%. Este es el efecto de ser asignado al tratamiento o ITT.
Este efecto estimado tiene una interpretación causal. Sin embargo, lo que nos está diciendo es la diferencia en el gasto en hogares donde el programa fue ofrecido y donde no. Pero no la diferencia en el efectivamente usar microfinanzas, que puede ser el parámetro de mayor interés. En otras palabras, el ITT es como un efecto del tratamiento, diluido por el no cumplimiento.
[5 puntos] Estime ahora la primera etapa, es decir, estime por MCO el efecto causal de la asignación sobre la adopción. Comente sobre la magnitud, la significancia estadística y la interpretación de la variable treatment en términos del comportamiento de los cumplidores. Debería poder replicar el coeficiente y el error estándar de la columna 1 en la tabla 2 del artículo.
La primera etapa muestra un aumento de 16.7% en la probabilidad de ser cliente debido al tratamiento. Este efecto es estadísticamente significativo al 10%. En otras palabras, 16.7% de los individuos en la muestra son cumplidores, es decir, se vuelven clientes solo porque se les ofreció el tratamiento.
[5 puntos] Considere la columna 3 del panel A en la Tabla 9 del artículo. Aquí se reporta la estimación por MCO de la relación entre client y gasto total, con los mismos controles y tipo de errores que antes. Replique este resultado. ¿Se puede interpretar de forma causal el coeficiente sobre client?
Noten que para replicar la entrada la clave está en condicionar a aquellos asignados al tratamiento (como se indica en la tabla del artículo). No se puede interpretar de manera causal la relación de 11934 unidades monetarias más en el gasto en los clientes con respecto a los no clientes pues es muy posible que haya sesgo de selección. Por ejemplo, si los hogares más educados deciden adoptar en mayor medida los productos de microfinanzas, es posible pensar que esos mismos hogares hubieran tenido mayor gasto incluso sin microfinanzas. Estaríamos entonces sobreestimando el efecto del tratamiento.
[5 puntos] ¿Cuáles son los dos supuestos econométricos que permiten la estimación del Local Average Treatment Effect (LATE) en el contexto de este problema? Comente sobre la evidencia que respalda el supuesto de que los instrumentos no son débiles en este problema.
Los supuestos necesarios son:
Relevancia del instrumento. Se requiere que la asignación aleatoria del tratamiento efectivamente afecte la probabilidad de ser cliente. La evidencia que respalda este requerimiento es el resultado de la primera etapa. El estadístico \(F\) de la primera etapa es 10.86, apenas arriba de la regla de dedo de 10 que comúnmente se usa para decir que no hay presencia de instrumentos débiles.
Exclusión. Se requiere que el instrumento no pertenezca a la ecuación estructural. Esto se garantiza por la asignación aleatoria del tratamiento.
[5 puntos] Estime el efecto del cumplimiento sobre el gasto total, usando la asignación aleatoria como instrumento del cumplimiento. Es decir, estime el LATE. Use los mismos controles y tipo de errores que en c. Este resultado se reporta en la columna 3 del panel B en la Tabla 9. ¿Cuál es la interpretación del coeficiente de la variable client? En R, la función ivreg del paquete AER le permite hacer la estimación de MC2E.
El LATE estimado es de 24263 monetarias adicionales de gasto debido a ser cliente. Esta cifra es considerablemente mayor que las 4057 unidades monetarias estimada en la forma reducida. Este es un efecto local pues solo considera el cambio en el gasto debido a ser cliente de la microfinanciera, en aquellos individuos que cambiaron su comportamiento debido a la asignación aleatoria del tratamiento. Noten también que en todas las regresiones se incluye errores agrupados a nivel pareja o paire.
Sea una variable de resultados \(y_i\), una variable de asignación aleatoria \(Z_i\) y una variable de adopción \(D_i\). El estimador de Wald se define como:
En esta pregunta mostraremos cómo el estimador de Wald es equivalente al estimador de VI cuando no hay controles. Use nuevamente los datos en crepon_morocco_analysis.csv.
[10 puntos] Obtenga el estimador de Wald como el cociente de la diferencia en gasto total promedio entre los hogares asignados a tratamiento y control dividido por la diferencia en la probabilidad de adopción entre los hogares asignados a tratamiento y control. Recuerde que la variable del gasto total es expense_total.
Obtenemos el estadístico de Wald, usando la definición:
data.morocco<-read_csv("../files/crepon_morocco_analysis.csv") %>%clean_names() mean_cliente<-data.morocco %>%group_by(treatment) %>%summarize(p_cliente=mean(client, na.rm=F)) %>%ungroup()mean_gasto<-data.morocco %>%group_by(treatment) %>%summarize(m_gasto=mean(expense_total, na.rm=F)) %>%ungroup()#Neceistamos la diferencia de gastos y de probabilidad de ser clientedif_gasto <- mean_gasto[2,2]-mean_gasto[1,2]dif_cliente <- mean_cliente[2,2]-mean_cliente[1,2]Wald <-as.numeric(dif_gasto / dif_cliente)Wald
[1] 22869.23
[5 puntos] Ahora estime por MC2E el efecto de la adopción sobre el gasto total, usando la variable de asignación como instrumento para la adopción. Use ivreg para estimar el efecto directamente. ¿Qué ventaja observa con respecto al estimador de Wald?
Notemos que obtenemos lo mismo al hacer una estimación de variables instrumentales. El coeficiente sobre la variable client es igual al estadístico de Wald. El estadístico de Wald es idéntico al estimador de variables instrumentales cuando el instrumento es binario. La mayor ventaja de realizar la estimación de esta manera es que podemos obtener errores estándar, lo cual nos permite hacer inferencia estadística sobre el tamaño del efecto de ser cliente en el gasto.
Wald_vi <-ivreg(expense_total ~ client | treatment,data=data.morocco)#Notemos que obtenemos directamente el error estándarsummary(Wald_vi)
Call:
ivreg(formula = expense_total ~ client | treatment, data = data.morocco)
Residuals:
Min 1Q Median 3Q Max
-44264 -21394 -17064 -4804 1305816
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 21395 1496 14.298 <2e-16 ***
client 22869 12684 1.803 0.0714 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 74610 on 4932 degrees of freedom
Multiple R-Squared: 0.00651, Adjusted R-squared: 0.006309
Wald test: 3.251 on 1 and 4932 DF, p-value: 0.07144
[10 puntos] Ahora estime por MC2E el efecto de la adopción sobre el gasto total, usando la variable de asignación como instrumento para la adopción. A diferencia del punto previo, realice la estimación a mano, es decir, primero estime los valores ajustados de la variable endógena en una primera etapa y luego use estos valores ajustados en la estimación estructural. ¿Qué desventaja observa con respecto a la estimación del punto previo?
Podemos obtener el mismo coeficiente haciendo MC2E a mano, lo cual nunca es recomendable debido a que la inferencia sobre el coeficiente de la segunda etapa es incorrecta. Sin embargo, nos deja ver cómo podemos entender el proceso de estimación conceptualmente.
Estimamos la primera etapa y obtenemos los valores ajustados:
Call:
lm(formula = expense_total ~ client_hat, data = data.morocco)
Residuals:
Min 1Q Median 3Q Max
-25225 -21394 -17879 -5647 1305816
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 21395 1501 14.256 <2e-16 ***
client_hat 22869 12721 1.798 0.0723 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 74830 on 4932 degrees of freedom
Multiple R-squared: 0.0006549, Adjusted R-squared: 0.0004522
F-statistic: 3.232 on 1 and 4932 DF, p-value: 0.07228
Y obtenemos de nuevo 22,869 unidades monetarias como impacto estimado.
La desventaja de este procedimiento es que los errores estándar son incorrectos pues la estimación de la ecuación estructural no considera el error muestral de la primera etapa y, por tanto, considera a los valores de client_hat como si fueran directamente observados.
Pregunta 3
En la Pregunta 2, parte a, obtuvo el estimador de Wald para aproximar el efecto de la adopción en el gasto total como un cosciente de dos diferencias de medias.
[5 puntos] Utilice un procedimiento bootstrap a mano para estimar el error estándar del estimador de Wald usando 50 repeticiones. Es decir, debe realizar un remuestreo de los datos originales y para cada muestra obtener el estimador de Wald. Luego, obtenga la desviación estándar de los 50 estadísticos calculados. Utilice una semilla para poder replicar sus resultados.
Ya sabemos calcular un estadístico de Wald, como en la Pregunta 2, parte a. La idea ahora es repetir dicho proceso B veces, pero en cada repetición con una muestra bootstrap a la mano:
data.morocco<-read.csv("../files/crepon_morocco_analysis.csv") %>%select(treatment,client,expense_total)obs <-nrow(data.morocco)#Solo para ejemplificar, la siguiente línea pide el remuestreo, es decir, obtener una muestra de tamaño N de la muestra original, con reemplazodata.b <-data.morocco[sample(nrow(data.morocco),obs, replace =TRUE),]#Simplemente repetimos el proceso anterior B vecesset.seed(821)B=50#Inicializamos el vector donde guardaremos los W estimadosWrep50_1 <-data.frame(W=matrix(ncol =1, nrow = B))for (i in1:B){ data.b <-data.morocco[sample(nrow(data.morocco),obs, replace =TRUE),]#Literalmente pegamos el cálculo de un W, hecho en la Pregunta 2a mean_cliente<-data.b %>%group_by(treatment) %>%summarize(p_cliente=mean(client, na.rm=F)) %>%ungroup() mean_gasto<-data.b %>%group_by(treatment) %>%summarize(m_gasto=mean(expense_total, na.rm=F)) %>%ungroup() dif_gasto <- mean_gasto[2,2]-mean_gasto[1,2] dif_cliente <- mean_cliente[2,2]-mean_cliente[1,2]#Y lo guardamos en la posición adecuada Wrep50_1[i,1] <-as.numeric(dif_gasto / dif_cliente)}#El error estimado es simplemente la desviación estándar de los B estadísticos estimadossd(Wrep50_1$W)
[1] 14735.91
[5 puntos] Reemplace la semilla de la parte a. por una nueva semilla y estime nuevamente el error estándar del estimador de Wald con 50 repeticiones. Comente sobre la diferencia entre este error estándar y el de la parte a.
El cambio que observamos en el error estándar estimado por bootstrap entre esta parte y la parte a. es que al cambiar la semilla, los números aleatorios generados son distitnos y, por tanto, cada muestra bootstrap tiene distintos individuos.
#Simplemente cambiamos la semillaset.seed(8212)B=50#Inicializamos el vector donde guardaremos los W estimadosWrep50_2 <-data.frame(W=matrix(ncol =1, nrow = B))for (i in1:B){ data.b <-data.morocco[sample(nrow(data.morocco),obs, replace =TRUE),] mean_cliente<-data.b %>%group_by(treatment) %>%summarize(p_cliente=mean(client, na.rm=F)) %>%ungroup() mean_gasto<-data.b %>%group_by(treatment) %>%summarize(m_gasto=mean(expense_total, na.rm=F)) %>%ungroup() dif_gasto <- mean_gasto[2,2]-mean_gasto[1,2] dif_cliente <- mean_cliente[2,2]-mean_cliente[1,2] Wrep50_2[i,1] <-as.numeric(dif_gasto / dif_cliente)}sd(Wrep50_2$W)
[1] 14869.02
[5 puntos] Regrese el valor de la semilla al usado en a. y estime nuevamente el error estándar del estimador de Wald, esta vez usando 1000 repeticiones. Comente sobre la diferencia entre este error estándar y el de la parte a.
Ahora las diferencias en el error estimado surgen porque tenemos muchas más repeticiones bootstrap. Lo más importante de estos procedimientos es que pueda implementarlos a otros contextos. Por ejemplo, podemos hacer obtener errores bootstrap para el vector de coeficientes de una estimación de MC2E, para el producto de dos coeficientes, etc.
#Regresamos a la primera semilla pero ahora B=1000set.seed(820)B=1000Wrep1000 <-data.frame(W=matrix(ncol =1, nrow = B))for (i in1:B){ data.b <-data.morocco[sample(nrow(data.morocco),obs, replace =TRUE),] mean_cliente<-data.b %>%group_by(treatment) %>%summarize(p_cliente=mean(client, na.rm=F)) %>%ungroup() mean_gasto<-data.b %>%group_by(treatment) %>%summarize(m_gasto=mean(expense_total, na.rm=F)) %>%ungroup() dif_gasto <- mean_gasto[2,2]-mean_gasto[1,2] dif_cliente <- mean_cliente[2,2]-mean_cliente[1,2] Wrep1000[i,1] <-as.numeric(dif_gasto / dif_cliente)}#El error estimado es simplemente la desviación estándar de los B estadísticos estimadossd(Wrep1000$W)
[1] 12998.05
Pregunta 4
Considere nuevamente la base STAR_public_use.csv usada en la Tarea 1 del artículo Angrist, Lang y Oreopoulos (2009)3. En esta pregunta nos concentraremos en los efectos de la intervención en el año 2, mostrados en la columna (4) de la Tabla 6, sobre dos variables, el promedio de calificaciones gpa_year2 y los créditos completados credits_earned2.
El propósito de esta pregunta es mostrar la función de los \(z\)-scores en el análisis de efectos de tratamiento. De nuevo, puede quedarse solo con las observaciones que tienen noshow igual a 0. Antes de comenzar su análisis, sustituya por NA los valores en credits_earned2 para aquellas observaciones que tienen \(NA\) en la variable prob_year1.
[5 puntos] Para tener un punto de comparación, estime la ecuación del efecto de tratamiento para gpa_year2 usando la misma especificación que en la pregunta 5 de la Tarea 1. Use también errores robustos. Deberá poder replicar los coeficientes y errores estándar del panel A, columna (4). ¿Cómo se interpretan el coeficiente sobre la variable ssp?
Usando la misma especificación que usamos en la Tarea 1, obtenemos los coeficientes en el artículo.
[5 puntos] Genere un \(z\)-score para la variable gpa_year2 al que llame gpa_year2_sd. Para ello, calcule la media y desviación estándar de gpa_year2 para el grupo de control y luego genere gpa_year2_sd restándole a gpa_year2 la media obtenida y dividiendo esta diferencia por la desviación estándar obtenida. Compruebe que si calcula la media y la desviación estándar de gpa_year2_sd, en el grupo de control estas deberían ser 0 y 1, respectivamente.
[5 puntos] Realice la misma estimación que en la parte a., pero ahora use como variable dependiente gpa_year2_sd. ¿Cómo se interpreta el coeficiente sobre ssp? ¿Qué es diferente y qué es igual entre los resultados obtenidos en esta parte y los obtenidos en la parte a.?
Realizamos la estimación, pero con la variable dependiente estandarizada:
Los coeficientes estimados son diferentes. Ahora el coeficiente sobre ssp es el efecto que tiene el programa en el z-score del promedio de calificaciones, es decir, el SSP tiene un efecto de 0.056 desviaciones estándar en el z-score del promedio de calificaciones, aunque este efecto no es estadísticamente significativo. La magnitud del error estándar también es diferente, pues ahora las variables están en distintas unidades. Noten, en cambio, que el estadístico t asociado a SSP es exactamente igual al de la parte a., por lo que en ambos casos no se rechaza la \(H_0\).
[5 puntos] Ahora realizaremos un índice de mejora en educación, al agregar los resultados de estos dos indicadores en una sola variable, como se describe en Banerjee et al. (2015)4. Para ello, primero genere credits_earned2_sd, que será la versión estandarizada de credits_earned2, siguiendo el mismo procedimiento que en la parte b. En seguida, genere una nueva variable llamada indice_escolar, que será el promedio de credits_earned2_sd y gpa_year2_sd. Luego, calcule la media y la desviación estándar de indice_escolar en el grupo de control. Finalmente, genere una nueva variable indice_escolar_sd restándole a indice_escolar la media antes calculada y dividiendo esta diferencia por la desviación estándar antes calculada. Muestre que la variable indice_escolar_sd tiene media 0 y desviación estándar 1 en el grupo de control.
Primero creamos la versión estandarizada de la variable de créditos:
[5 puntos] Estime ahora el efecto de tratamiento sobre indice_escolar_sd, siguiendo la misma especificación econométrica que en la parte a. y usando errores robustos. ¿Qué concluye?
Estimamos usando la misma especificación, pero ahora con el índice compuesto como variable de impacto:
La ventaja de este procedimiento es que solo probamos una hipótesis en lugar de dos. Si tuviéramos muchas variables de impacto, tendríamos que probar múltiples hipótesis, incrementando la probabilidad de falsos rechazos. La construcción de índices es una alternativa para enfrentar este problema.
Notas
Por ejemplo, suponga que estima un modelo al que llame modelo1. Entonces, si ejecuta
obtendrá los coeficientes con los errores agrupados requeridos. La opción CR1S toma en cuenta el número de grupos o clusters para realizar inferencia. Puede leer más al respecto en la ayuda al ejecutar ?vcovCR. Este es el tipo de ajuste de muestras finitas que usan los autores. Esta corrección consiste en multiplicar la matriz de sándwich agrupada CR0 por \(\frac{G(N-1)}{(G-1)(N-p)}\), donde \(G\) es el número de grupos, \(N\) es el número total de observaciones y \(p\) es el número de regresores.↩︎
Crépon, B., Devoto, F., Duflo, E., & Parienté, W. (2015). Estimating the impact of microcredit on those who take it up: Evidence from a randomized experiment in Morocco. American Economic Journal: Applied Economics, 7(1), 123-50.↩︎
Angrist, J., Lang, D., y Oreopoulos, P. (2009). Incentives and services for college achievement: Evidence from a randomized trial. American Economic Journal: Applied Economics, 1(1), 136-63.↩︎
Banerjee, A. et al. (2015). A multifaceted program causes lasting progress for the very poor: Evidence from six countries. Science, 348(6236).↩︎