Respuestas a la tarea 2

Respuestas

Pregunta 1

En esta pregunta usaremos un ejemplo de el estudio con asignación experimental de Banerjee et al. (2015)1 para fijar algunas ideas referentes al análisis de una intervención de este tipo. A diferencia de otros ejemplos vistos en clase, este es un experimento a gran escala. Por favor, utilice la versión publicada, así como el material suplementario.

  1. [5 puntos] Describa brevemente en qué consiste la intervención que se discute en el artículo.

    La intervención que se reporta en el artículo es descrita como una intervención holística. Se trata de un paquete de intervenciones que incluyen una transferencia monetaria periódica, la dotación de activos productivos, un instrumento de acceso a ahorro, así como servicios de salud y educación básicos.

    La idea es inducir un fuerte impulso para el ingreso y las oportunidades de generar ingreso de los hogares pobres. El programa tiene un enfoque de graduación, es decir, busca que, a partir de cierto momento, los hogares ya no requieran el apoyo del programa para sostener unas condiciones de vida mejores.

  2. [5 puntos] Describa brevemente en qué consiste el diseño experimental, es decir, ¿cómo se construye la variación que permite identificar el efecto del tratamiento? ¿Cómo se construyen los grupos de tratamiento y control?

    El experimento se desarrolló en seis países. En cada uno, un proceso participativo permitió identificar a los hogares elegibles. En tres de los países del experimento, la asignación del tratamiento fue aleatorizada de manera simple, es decir, aproximadamente la mitad de los hogares fueron asignados al azar a ser tratados y la otra parte no.

    En los otros tres países, la asignación fue mediante una aleatorización por grupos, con una primera asignación aleatoria del tratamiento a nivel localidad y una segunda asignación aleatoria a nivel hogar. Es decir, en estos tres países existieron localidades de tratamiento y de control. En las localidades de control nadie recibió el tratamiento. En las localidades de tratamiento, sin embargo, algunos hogares recibieron la intervención y algunos no.

  3. [5 puntos] En la página 1260799-7 se presenta una subsección denominada Atrition. Describa brevemente el propósito de este análisis y qué se concluye al respecto.

    Este análisis tiene el objetivo de demostrar que los hogares que abandonaron el programa no eran diferentes de aquellos que permanecieron en el mismo. Esto es importante porque podría ser que los hogares que dejan el programa sean distintos que los que se quedan, ocasionando un problema de selección. Por ejemplo, si los hogares más pobres dejan el programa en una mayor proporción que los hogares menos pobres, el grupo final con el que se estima el impacto tendrá una composición relativamente menos pobre, con lo que es probable que se sobre estime el impacto del programa.

    En este experimento, la atrición fue, en promedio, de 6% en la encuesta de seguimiento después de 24 meses, y de 9% en la encuesta de seguimiento después de 36 meses.

    Los autores concluyen que la atrición no dio lugar a un sesgo porla composición del grupo de personas que tomaron las dos encuestas de seguimiento (ver tabla S1f del material suplementario).

  4. [5 puntos] En la página 1260799-7, la subsección Compliance with treatment assignment concluye que los efectos estimados en el artículo se refieren a un efecto de intención a tratar o intent-to-treat o ITT. ¿Por qué?

    Los autores reportan que en cinco de los seis países la adopción del tratamiento fue perfecta: ninguno de los hogares asignados al grupo de control recibió el tratamiento y todos los hogares asignados a ser tratados recibieron la intervención. Son embargo, en India esto no fue así. Solo el 52% de los hogares asignados al tratamiento lo recibieron, por razones que van desde cuestiones religiosas hasta normas sociales.

    Por esta razón, los investigadores reconocen que el efecto estimado es un efecto de intención a tratar o ITT, que compara los resultados entre los grupos de asignación, ignorando la decisión de adoptar o no.

    Los autores pudieron haber decidido estimar aquí el LATE. Aunque en el caso de los cinco países con cumplimiento perfecto, el resultado se mantendría inalterado.

  5. [5 puntos] En la página 1260799-8 se discuten dos métodos para tomar en cuenta la prueba de hipótesis múltiples. Describa brevemente por qué puede ser problemático probar múltiples hipótesis y cuáles son las dos formas en que los autores enfrentan este problema.

    Probar múltiples hipótesis incrementa exponencialmente la probabilidad de obtener un efecto estadísticamente signficativo por suerte. Para tomar en cuenta este problema, los autores emplean dos métodos que son los vistos en clase.

    Primero, se emplean índices para agregar las variables que pertenecen a una familia en un solo indicador. De hecho, los impactos sobre los índices de la tabla 3 del artículo son los que se consideran los resultados principales del trabajo.

    Segundo, se emplea la corrección de Benjamini & Hochberg, descrita en clase. Esto se describe en la página 5 del material suplementario. Los autores realizan un procedimiento un poco más general. Realizan el mismo procedimiento que vimos en clase pero para todos los posibles valores de \(\alpha\), el nivel de significancia. Por ejemplo, primero se fija \(\alpha=1.000\) y se realiza el procedimiento de Benjamini & Hochberg. Luego se toma \(\alpha=0.0999\) y se realiza lo mismo. Así sucesivamente hasta llegar a fijar \(\alpha=0.000\). Así, para cada hipótesis, los autores son capaces de identificar el valor de \(\alpha\) más pequeño tal que se rechace la hipótesis nula y a dicho valor le llaman valor \(q\). Este valor se reporta en la columna 5 de la tabla 3 y se puede interpretar como interpretamos el valor \(p\).

    NOTA: El procedimiento de Benjamini & Hochberg es tedioso y lo es más el cálculo de los valores \(q\). No es algo que se pediría hacer en un examen, aunque sí es importante entender el concepto y la idea detrás de la corrección.

  6. [5 puntos] En la página 1260799-12 se discute la posible presencia de efectos de derramamiento o spillovers. Describa brevemente en qué consisten dichos efectos de derramamiento y cómo los autores muestran la presencia o ausencia de dichos efectos usando regresiones.

    Los efectos de derramamiento ocurren cuando hogares asignados al grupo de control se benefician indirectamente del tratamiento. Podría ocurrir, por ejemplo, que los hogares tratados le donaran parte de los recursos de su transferencia monetaria a hogares del grupo de control. Otra forma de efecto de derramamiento ocurre son los efectos de equilibrio general, por ejemplo, cuando la intervención genera inflación a nivel local, afectando el nivel de ingreso real de los hogares tratados y no tratados por igual.

    El diseño experimental de este estudio permite probar empíricamente la presencia de efectos de derramamiento al explotar la variación entre localidades en los tres países con aleatorización por grupos. En particular, se pueden comparar a los hogares en las localidades de control (controles puros) con los hogares no tratados en localidades de tratamiento, que son los que pudieron estar expuestos a los efectos de derramamiento.

    Dado que no existen diferencias estadísticamente significativas en las variables de impacto (ver tabla S6a del material suplementario), se descarta la presencia de efectos de derramamiento.

Pregunta 2

En Crepon et al. (2015)2 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

  1. [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.

      data.morocco<-read_csv("../files/crepon_morocco_balance.csv",
                             locale = locale(encoding = "latin1")) %>% 
        clean_names() %>% 
        filter(merge_indicator!=1)
    
      data.morocco %>% 
        group_by(treatment) %>%
        summarize(mean=mean(members_resid_bl, na.rm=T),
                  std=sd(members_resid_bl, na.rm=T),
                  n=n()) %>% 
        ungroup()
    # 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.3

    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:

    dif_members <- lm(members_resid_bl ~ treatment + factor(paire),
       data=data.morocco)
    
    summary(dif_members)$coef[1:7,]
                      Estimate Std. Error    t value     Pr(>|t|)
    (Intercept)     4.06166091  0.3047365 13.3284357 9.311212e-40
    treatment       0.04334484  0.0707258  0.6128576 5.400023e-01
    factor(paire)2  1.78431373  0.4152704  4.2967514 1.770771e-05
    factor(paire)3  1.06107184  0.4356350  2.4356902 1.490300e-02
    factor(paire)4 -3.08333333  0.4594672 -6.7106719 2.184193e-11
    factor(paire)5  1.85814080  0.4442115  4.1830089 2.933028e-05
    factor(paire)6  2.88352450  0.4262934  6.7641779 1.517259e-11
    nobs(dif_members)
    [1] 4465
    coef_test(dif_members,
              vcov = "CR1S", 
              cluster = data.morocco$demi_paire)[1:2,]
           Coef. Estimate     SE t-stat d.f. (Satt) p-val (Satt) Sig.
     (Intercept)   4.0617 0.0647  62.80        1.03      0.00911   **
       treatment   0.0433 0.0787   0.55       76.54      0.58361     

    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. [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.

    data.morocco %>%
      mutate(treatment=factor(treatment, levels=c(0,1),labels=c("Control", "Tratamiento"))) %>%
          mutate(client=factor(client, levels=c(0,1),labels=c("No cliente", "Cliente"))) %>% 
      tabyl(treatment, client,
            show_na = F)
       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.

  3. [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?

    Para el número de miembros del hogar:

    r1 <- lm(members_resid_bl ~ client + factor(paire),
                             data=data.morocco)
    coef_test(r1,
              vcov = "CR1S", 
              cluster = data.morocco$demi_paire)[1:2,]
           Coef. Estimate    SE t-stat d.f. (Satt) p-val (Satt) Sig.
     (Intercept)     4.18 0.128  32.70         1.0       0.0195    *
          client     0.43 0.180   2.38        45.4       0.0214    *

    Para el número de actividades económicas del hogar:

    r2 <- lm(act_number_bl ~ client + factor(paire),
                                data=data.morocco)
    coef_test(r2,
              vcov = "CR1S", 
              cluster = data.morocco$demi_paire)[1:2,]
           Coef. Estimate     SE t-stat d.f. (Satt) p-val (Satt) Sig.
     (Intercept)    1.109 0.2330   4.76         1.0      0.13185     
          client    0.191 0.0687   2.78        45.4      0.00787   **

    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.

  4. [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.

    data.morocco<-read_csv("../files/crepon_morocco_analysis.csv")   %>% 
      clean_names() 
    
    res_fr<- lm(expense_total ~ treatment +
                  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 + 
                  other_resp_activ_d + factor(paire),
                data=data.morocco)
    
    coef_test(res_fr,
              vcov = "CR1S",
              cluster = data.morocco$demi_paire)[1:2,]
           Coef. Estimate   SE t-stat d.f. (Satt) p-val (Satt) Sig.
     (Intercept)   -18493 6735  -2.75         2.1        0.105     
       treatment     4057 1721   2.36        74.4        0.021    *

    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. [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.

    res_fs<- lm(client ~ treatment +
                  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 + 
                    other_resp_activ_d + factor(paire),
                data=data.morocco)
    
    coef_test(res_fs,
              vcov = "CR1S", 
              cluster = data.morocco$demi_paire)[1:2,]
           Coef. Estimate     SE t-stat d.f. (Satt) p-val (Satt) Sig.
     (Intercept)  -0.0988 0.0549   -1.8         2.1        0.208     
       treatment   0.1672 0.0118   14.2        74.4       <0.001  ***
  6. [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.

    res_mco <- lm(expense_total ~ client +
                    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 + 
                    other_resp_activ_d + factor(paire),
                  data=filter(data.morocco,treatment==1))
    
    coef_test(res_mco,
              vcov = "CR1S", 
              cluster =filter(data.morocco,treatment==1)$demi_paire)[1:2,]
           Coef. Estimate   SE t-stat d.f. (Satt) p-val (Satt) Sig.
     (Intercept)   -12718 9447  -1.35        65.8       0.1828     
          client    11934 5580   2.14        41.1       0.0384    *
  7. [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.

  8. [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.

    res_iv <- ivreg(expense_total ~ client + 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  + other_resp_activ_d + factor(paire) |
           treatment +  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  + other_resp_activ_d + factor(paire),
         data=data.morocco)
    
    summary(res_iv)$coefficients[1:2,]
                 Estimate Std. Error   t value   Pr(>|t|)
    (Intercept) -16095.68   11033.49 -1.458802 0.14468442
    client       24263.46   12419.55  1.953651 0.05080007
    coef_test(res_iv,
              vcov = "CR1S", 
              cluster = data.morocco$demi_paire)[1:2,]
           Coef. Estimate   SE t-stat d.f. (Satt) p-val (Satt) Sig.
     (Intercept)   -16096 7144  -2.25        2.11       0.1464     
          client    24263 9944   2.44       74.45       0.0171    *

Pregunta 3

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:

\[\hat{\beta}_{Wald}=\frac{\bar{Y}_{Z_i=1}-\bar{Y}_{Z_i=0}}{\bar{D}_{Z_i=1}-\bar{D}_{Z_i=0}}\]

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.

  1. [5 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 cliente
    dif_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
  2. [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. ¿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ándar
    summary(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 

    Más aún, podríamos 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:

    p.e <- lm(client ~ treatment,
                    data=data.morocco)
    
    data.morocco <- data.morocco %>% 
      mutate(client_hat = predict(p.e))

    Ahora usamos los valores ajustados en la regresión de la segunda etapa:

    s.e <- lm(expense_total ~ client_hat,
                    data=data.morocco)
    
    summary(s.e)
    
    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.

Pregunta 4

Considere nuevamente la base STAR_public_use.csv usada en la Tarea 1 del artículo Angrist, Lang y Oreopoulos (2009)4. 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.

  1. [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.

    data.angrist<-read_csv("../files/STAR_public_use.csv",
                     locale = locale(encoding = "latin1"))   %>% 
      clean_names()
    
    data.angrist<-data.angrist %>% 
      filter(noshow==0) %>% 
      mutate(credits_earned2=ifelse(is.na(prob_year1),NA,credits_earned2)) 
    
    
    r1 <-lm(gpa_year2 ~ ssp + sfp+ sfsp+
                 factor(sex)+
                 factor(mtongue)+
                 factor(hsgroup)+
                 factor(numcourses_nov1)+
                 factor(lastmin)+
                 factor(mom_edn)+
                 factor(dad_edn),
               data.angrist)
    coeftest(r1, vcov = vcovHC(r1, "HC1"))[1:4,]
                   Estimate Std. Error    t value     Pr(>|t|)
    (Intercept)  2.87240513 0.45314003  6.3388908 3.261488e-10
    ssp          0.05018813 0.07423854  0.6760388 4.991454e-01
    sfp         -0.01807372 0.06618352 -0.2730848 7.848347e-01
    sfsp         0.07158763 0.09081195  0.7883063 4.306722e-01
  2. [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.

    Creamos un z-score:

    gpa_year2_stats <- data.angrist %>% 
        filter(control==1) %>% 
        summarize(media=mean(gpa_year2,na.rm=T),
                  desvest=sd(gpa_year2,na.rm=T))
    
    data.angrist <- data.angrist %>% 
        mutate(gpa_year2_sd=(gpa_year2-gpa_year2_stats$media)/gpa_year2_stats$desvest)

    Tiene media igual a 0:

    data.angrist %>%
      filter(control==1) %>% 
      summarize(media=mean(gpa_year2_sd,na.rm=T))
    # A tibble: 1 × 1
         media
         <dbl>
    1 1.60e-16

    Y desviación estándar igual a 1:

    data.angrist %>%
      filter(control==1) %>% 
      summarize(desvest=sd(gpa_year2_sd,na.rm=T)) 
    # A tibble: 1 × 1
      desvest
        <dbl>
    1       1
  3. [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:

    r2 <-lm(gpa_year2_sd ~ ssp + sfp+ sfsp+
                 factor(sex)+
                 factor(mtongue)+
                 factor(hsgroup)+
                 factor(numcourses_nov1)+
                 factor(lastmin)+
                 factor(mom_edn)+
                 factor(dad_edn),
               data.angrist)
    
    coeftest(r2, vcov = vcovHC(r2, "HC1"))[1:4,]
                   Estimate Std. Error    t value   Pr(>|t|)
    (Intercept)  0.94640721 0.50806908  1.8627530 0.06273961
    ssp          0.05627187 0.08323764  0.6760388 0.49914542
    sfp         -0.02026459 0.07420621 -0.2730848 0.78483470
    sfsp         0.08026539 0.10182006  0.7883063 0.43067220

    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\).

    coeftest(r1, vcov = vcovHC(r1, "HC1"))[1:4,]
                   Estimate Std. Error    t value     Pr(>|t|)
    (Intercept)  2.87240513 0.45314003  6.3388908 3.261488e-10
    ssp          0.05018813 0.07423854  0.6760388 4.991454e-01
    sfp         -0.01807372 0.06618352 -0.2730848 7.848347e-01
    sfsp         0.07158763 0.09081195  0.7883063 4.306722e-01
  4. [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)5. 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:

    credits_earned2_stats <- data.angrist %>% 
      filter(control==1) %>% 
      summarize(media=mean(credits_earned2,na.rm=T),
                desvest=sd(credits_earned2,na.rm=T))
    
    data.angrist <- data.angrist %>% 
      mutate(credits_earned2_sd=(credits_earned2-credits_earned2_stats$media)/credits_earned2_stats$desvest)

    Luego calculamos la media de las dos variables estandarizadas:

    data.angrist <- data.angrist %>% 
      mutate(indice_escolar=rowMeans(select(.,credits_earned2_sd,gpa_year2_sd)))

    Ahora obtenemos la media y la desviación estándar en el grupo de control del promedio antes calculado:

    indice_escolar_stats <- data.angrist %>% 
      filter(control==1) %>% 
      summarize(media=mean(indice_escolar,na.rm=T),
                desvest=sd(indice_escolar,na.rm=T))
    
    data.angrist <- data.angrist %>% 
      mutate(indice_escolar_sd=(indice_escolar-indice_escolar_stats$media)/indice_escolar_stats$desvest)

    Efectivamente tiene media igual a 0:

    data.angrist %>%
      filter(control==1) %>% 
      summarize(media=mean(indice_escolar_sd,na.rm=T))
    # A tibble: 1 × 1
          media
          <dbl>
    1 -1.33e-17

    Y desviación estándar igual a 1:

    data.angrist %>%
      filter(control==1) %>% 
      summarize(desvest=sd(indice_escolar_sd,na.rm=T)) 
    # A tibble: 1 × 1
      desvest
        <dbl>
    1       1
  5. [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:

    r3 <-lm(indice_escolar_sd ~ ssp + sfp+ sfsp+
                                 factor(sex)+
                                 factor(mtongue)+
                                 factor(hsgroup)+
                                 factor(numcourses_nov1)+
                                 factor(lastmin)+
                                 factor(mom_edn)+
                                 factor(dad_edn),
                               data.angrist)
    
    coeftest(r3, vcov = vcovHC(r3, "HC1"))[1:4,]
                   Estimate Std. Error    t value  Pr(>|t|)
    (Intercept)  0.49452306 0.46650249  1.0600652 0.2893277
    ssp          0.02805373 0.08261358  0.3395778 0.7342338
    sfp         -0.02543190 0.07385703 -0.3443396 0.7306511
    sfsp         0.03404990 0.09616572  0.3540753 0.7233445

    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

  1. Banerjee, A. et al. (2015). A multifaceted program causes lasting progress for the very poor: Evidence from six countries. Science, 348(6236).↩︎

  2. Por ejemplo, suponga que estima un modelo al que llame modelo1. Entonces, si ejecuta

    coef_test(modelo1,
              vcov="CR1S",
              cluster=mis_datos$demi_paire)[1:2,]

    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.↩︎

  3. 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.↩︎

  4. 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.↩︎

  5. Banerjee, A. et al. (2015). A multifaceted program causes lasting progress for the very poor: Evidence from six countries. Science, 348(6236).↩︎