Tarea 2

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. 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
10-01-2020

Table of Contents



library(tidyverse)
library(AER)
library(stargazer)
library(clubSandwich)
library(estimatr)
library(formattable)

Pregunta 1

En la Sesión 7 introducimos los datos de una intervención en Marruecos en la que un producto financiero fue ofrecido de manera aleatoria, pero la adopción del producto obedeció a un proceso de selección. Para este problema use la base crepon_morocco_analysis.csv, que tiene un subconjunto de los datos usados en dicha sesión ya listos para su análisis. La variable treatment contiene la variable de tratamiento y la variable client es la variable de adopción. En esta pregunta nos enfocaremos en el efecto causal de la adopción en el gasto total de los hogares, expense_total.

1a.

[5 puntos] Primero mostraremos cómo el estimador de Wald es equivalente al estimador de VI cuando no hay controles y cuando las variables de asignación y adopción son binarias. 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.

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

med<-data %>%
  group_by(treatment)%>%
  summarise(mean = mean(expense_total))

prob<- data %>%
  group_by(treatment)%>%
  summarise(pro = sum(client)/length(client))  

Wald<- (med[2,"mean"]-med[1,"mean"])/
  (prob[2,"pro"]-prob[1,"pro"])

Wald[1,1]

[1] 22869.23

El estimador de Wald es \(22869.23\)

1b.

[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? En R, la función ivreg del paquete AER le permite hacer la estimación de MC2E.

modelb <- ivreg(expense_total ~ client | treatment, data = data)

stargazer(modelb, title="Resultados", align=TRUE, type = "html")
Resultados
Dependent variable:
expense_total
client 22,869.230*
(12,683.700)
Constant 21,394.460***
(1,496.320)
Observations 4,934
R2 0.007
Adjusted R2 0.006
Residual Std. Error 74,606.240 (df = 4932)
Note: * p<0.1; * * p<0.05; * * *p<0.01
La ventaja que observo es que el cálculo es más sencillo, además el resultado está acompañado de una prueba estadística, con lo que se puede concluir sobre la significancia de forma directa, en este caso rechazamos que el coeficiente asociado a client cero a un nivel de significancia del \(10\%\), es decir, el ser cliente tiene un efecto positivo, dado por el valor de su coeficiente, en el gasto total. Todo esto suponiendo que el instrumento es válido

1c.

[3 puntos] Estime la forma reducida del efecto de ser asignado al tratamiento sobre gasto 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_bll, 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. Y finalmente, para realizar inferencia, reporte los errores estándar agrupados a nivel demi_paire usando la función coef_test del paquete clubSandwich.1

modelc <- 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)

coef_test(modelc, vcov = "CR1S", cluster = data$demi_paire, 
          test = "naive-t")[1:2,]

        Coef. Estimate   SE t-stat p-val (naive-t) Sig.
1 (Intercept)   -18493 6735  -2.75         0.00672   **
2   treatment     4057 1721   2.36         0.01960    *
El efecto de treatment es positivo, estadísticamente significativo a un nivel del \(5\%\) (en promedio, cinco de cada cien veces esta afirmación será falsa). Observamos que ser asignado al tratamiento influye positivamente en el gasto total, en \(4057\) más respecto a no ser asignado a tratamiento.

1d.

[2 puntos] Estime ahora la primera etapa, es decir, estime por MCO el efecto causal de la asignación sobre la adopción. Use los mismos controles que en la parte c. Comente sobre la magnitud, la significancia estadística y la interpretación de la variable treatment en términos del comportamiento de los cumplidores.

modeld <- 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)

coef_test(modeld, vcov = "CR1S", cluster = data$demi_paire, 
          test = "naive-t")[1:2,]

        Coef. Estimate     SE t-stat p-val (naive-t) Sig.
1 (Intercept)  -0.0988 0.0549   -1.8          0.0739    .
2   treatment   0.1672 0.0118   14.2          <0.001  ***

Observamos que el coeficiente de treatment es estadísticamente significativo a un nivel del \(0.1\%\), lo cual habla de la influencia en ser asignado al tratamiento sobre la adopción, con una magnitud \(0.1672\), es decir, el ser asignado al tratamiento aumenta la adopción en esta cantidad.

1e.

[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 en c. Replique este resultado. ¿Se puede interpretar de forma causal el coeficiente sobre client?

datae <- data%>%filter(treatment==1)

modele <- 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 = datae)

coef_test(modele, vcov = "CR1S", cluster = datae$demi_paire, 
          test = "naive-t")[1:2,]

        Coef. Estimate   SE t-stat p-val (naive-t) Sig.
1 (Intercept)   -12718 9447  -1.35          0.1820     
2      client    11934 5580   2.14          0.0355    *

Se logra reproducir el resultado, el coeficiente de client es \(11934\) y el error estándar agrupado es \(5580\) con nivel de significancia al \(5\%\).

No se puede interpretar de forma causal el coeficiente de client, como observamos anteriormente (1d.) client está correlacionada con treatment de forma significativa, lo que ocasiona que al no aparecer treatment en la regresión, tiene como consecuencia que client sea una variable endógena

1f.

[5 puntos] ¿Cuáles son los 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, son que client y treatment estén correlacionados (como se observó en 1d.), y que treatment y el error no estén correlacionados, este último se cumple pues el tratamiento se asigno de forma aleatoria.

Respecto a que el instrumento no sea débil, se puede argumentar que en la primera etapa (1d.) el coeficiente fue estadísticamente significativo y su magnitud se interpreta en un aumento de casi \(17\%\) de la variable client

1g.

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

modelg <- 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) |
               . - client + treatment,
             data = data)

coef_test(modelg, vcov = "CR1S", cluster = data$demi_paire, 
          test = "naive-t")[1:2,]

        Coef. Estimate   SE t-stat p-val (naive-t) Sig.
1 (Intercept)   -16096 7144  -2.25          0.0256    *
2      client    24263 9944   2.44          0.0158    *

Se logró reproducir el resultado, el coeficiente de client es \(24263\) y el error estándar agrupado es \(9944\) a un nivel de significancia del \(5\%\).

La interpretación del coeficiente implica que el ser cliente (client=1), aumenta en \(24263\) el gasto total expense_total respecto a no ser cliente.

Pregunta 2

En la Pregunta 1 obtuvo el estimador de Wald para aproximar el efecto de la adopción en el gasto total. Considere dicho cálculo sin controles.

2a.

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

muestra <- function (data, tam)
          {
          return(data[sample(nrow(data),tam, replace = TRUE),])
            }

wald <- function (data)
        {
        med<-data %>%
          group_by(treatment)%>%
          summarise(mean = mean(expense_total))
        
        prob<- data %>%
          group_by(treatment)%>%
          summarise(pro = sum(client)/length(client))  
        
        Wald<- (med[2,"mean"]-med[1,"mean"])/
          (prob[2,"pro"]-prob[1,"pro"])
        
        return(Wald[1,1])
        }

set.seed(123)
estwalda <- c()
tam <- nrow(data)
for (i in 1:50)
  {
  estwalda <- c(estwalda, wald(muestra(data,tam)))
}

erstdwalta <- sd(estwalda) 
erstdwalta

[1] 13779.99

La desviación estándar del estimador de Wald resultó de \(13779.99\), mientras que en 1b. fue de \(12683.7\).

2b.

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

set.seed(1234)

estwaldb <- c()

tam <- nrow(data)
for (i in 1:50)
  {
  estwaldb <- c(estwaldb, wald(muestra(data,tam)))
}

erstdwaltb <- sd(estwaldb) 
erstdwaltb

[1] 11781.29

La desviación estándar del estimador de Wald resultó de \(11781.29\), mientras que en 2a. fue en \(13779.99\). Era de esperarse un resulado distinto debido al cambio de semilla, pues en general los datos utilizados en cada iteración no serán los mismos.

2c.

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

set.seed(123)

estwaldc <- c()

tam <- nrow(data)
for (i in 1:1000)
  {
  estwaldc <- c(estwaldc, wald(muestra(data,tam)))
}

erstdwaltc <- sd(estwaldc) 
erstdwaltc

[1] 13435.62

La desviación estándar del estimador de Wald resultó de \(13435.62\), mientras que en 2a. fue en \(13779.99\). Era de esperarse un resultado distinto debido, pues tenemos más iteraciones, en particular este valor es más cercano al de 1b. que fue \(12683.7\).

Pregunta 3

Se propone evaluar el efecto de usar cubrebocas en la tasa de transmisión del covid-19 en el país A, que está compuesto por cientos de islas y donde cada isla es una ciudad. Al inicio de la epidemia, se prohibieron los viajes entre islas. Se dispone de datos de la tasa de fatalidad en varias ciudades en los momentos \(t=0\) y \(t=1\). Entre el periodo \(0\) y el \(1\) se sabe que en un subconjunto de cinco ciudades se ordenó el uso obligatorio del cubrebocas.

3a.

[5 puntos] ¿Cómo evaluar los resultados de ordenar el uso del cubrebocas por medio de diferencia en diferencias? ¿Cómo seleccionaria al grupo de ciudades que se usarían para llevar a cabo esta evaluación?

Se tienen cinco ciudades donde se ordeno el uso de cubrebocas, este será nuestro brazo de tratamiento. Suponemos que de estas ciudades se conoce la tasa de fatalidad en \(t=0\) y en \(t=1\). Se denota su promedio de tasa de fatalidad en el instante \(t\) como \(\bar{T}_t\). Así la diferencia promedio en el brazo de tratamiento será \(\Delta \bar{T}=\bar{T}_1-\bar{T}_0\)

De las ciudades a las cuales no se les obligó a utilizar cubrebocas, se selecciona un subconjunto (que será el brazo de control) cuyo promedio de tasa de mortalidad en \(t=0\) sea lo más cercano al del grupo de tratamiento. Se denota su promedio de tasa de fatalidad en el instante \(t\) como \(\bar{C}_t\). Así la diferencia promedio en el brazo de control será \(\Delta \bar{C} = \bar{C}_1-\bar{C}_0\)

Así el impacto del uso de cubrebocas se puede evaluar como la diferencia en diferencias del promedio de la tasa de fatalidad entre el brazo de tratamiento y el de control

\[\Delta = \Delta \bar{T} - \Delta \bar{C}\]

3b.

[5 puntos] ¿Cuáles son los supuestos sobre los que recae la estrategia de evaluación por diferencia en diferencias? ¿Qué factores podrían amenazar el uso de esta estrategia para evaluar el efecto de la intervención?

En ausencia del programa (uso de cubrebocas), las tendencias del promedo de la tasa de fatalidad entre los participantes (las ciudades que usan cubrebocas) y los no participantes (el conjunto de ciudades elegidas que no usan cubrebocas) se mantendrían paralelas

Podría suceder que el grupo de control comience a usar cubrebocas debido a que se sabe que con esto se reduce el contagio, esto podría amenazar el uso de la estrategia para evaluar el efecto de la intervención.

3c.

[5 puntos] Suponga que un archipiélago vecino, el país B, también conformado por 1000 ciudades-isla implementa un programa de entrega de cubrebocas. El país solo puede entregar cubrebocas en 100 de las ciudades, las cuales serán escogidas en una lotería pública con un generador de números aleatorios. Expliqué cómo usaría inferencia por aleatorización (randomization inference) para estimar el impacto de la interevención en la tasa de fatalidad. Describa con detalle el procedimiento seguido y cómo juzgaría la significancia estadística de las diferencias que observe.
  1. Se define el estadístico

  2. Se encuentra el valor de dicho estadístico

  3. Para \(s = 1, ..., S\) repeticiones, se realiza una asignación de cubrebocas de forma aleatoria como se hizo previamente. \(S=1000\) es un valor usual.

  4. En cada repetición \(s\), se obtiene el estadístico con los tratamientos falsos

  5. Se calcula el valor \(p\) como el promedio de las veces que el estadístico original es mayor que el falso

  6. Si \(p\) es menor que el nivel de significancia \(\alpha\), entonces el programa tuvo impacto.

Pregunta 4

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

datos <- read.csv("Datos/STAR_public_use.csv") 

datos <-filter(datos, noshow == 0) 

datos <-filter(datos, !prob_year1 == "" & !credits_earned2 == "")

datos <-filter(datos, !dad_edn == "" & !mom_edn == "") 

4a.

[5 puntos] Para tener un punto de comparación, estime la ecuación del efecto de tratamiento para credits_earned2 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 D, columna (4). ¿Cómo se interpretan el coeficiente sobre la variable ssp?

modela <- lm_robust(credits_earned2 ~ ssp + sfp + sfsp + 
                       factor(sex) + factor(mtongue) +
                       factor(hsgroup) + factor(numcourses_nov1) +
                       factor(lastmin) + factor(mom_edn) + 
                       factor(dad_edn), data = datos)
resmodela <- summary(modela)
resmodela$coefficients[1:4,]

               Estimate Std. Error    t value   Pr(>|t|)   CI Lower
(Intercept)  1.64433959  0.6887310  2.3874918 0.01709721  0.2932710
ssp         -0.09849430  0.1145630 -0.8597395 0.39008144 -0.3232300
sfp          0.02661974  0.1077142  0.2471330 0.80484190 -0.1846809
sfsp         0.07157034  0.1304966  0.5484460 0.58347409 -0.1844220
             CI Upper   DF
(Intercept) 2.9954082 1385
ssp         0.1262414 1385
sfp         0.2379204 1385
sfsp        0.3275627 1385

Como no es posible rechazar que el coeficiente de ssp sea diferente de cero, se tiene que las asesorías y otros servicios para los estudiantes no son estadísticamente significativas en la obtención de creditos conseguidos al final del segundo año.

4b.

[5 puntos] Genere un \(z\)-score para la variable credits_earned2 al que llame credits_earned2_sd. Para ello, calcule la media y desviación estándar de credits_earned2 para el grupo de control y luego genere credits_earned2_sd restándole a credits_earned2 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 credits_earned2_sd, en el grupo de control estas deberían ser 0 y 1, respectivamente.

media <- mean(filter(datos, control == 1)$credits_earned2)
sd <- sd(filter(datos, control == 1)$credits_earned2)


datos<- datos %>%
  mutate(credits_earned2_sd = (credits_earned2 - media)/sd)


media <- mean(filter(datos, control==1)$credits_earned2_sd) 
sd <- sd(filter(datos, control==1)$credits_earned2_sd) 
print(media) 

[1] -1.295033e-16

print(sd)

[1] 1

4c.

[5 puntos] Realice la misma estimación que en la parte a., pero ahora use como variable dependiente credits_earned2_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.?

modelc <- lm_robust(credits_earned2_sd ~ ssp + sfp + sfsp + 
                       factor(sex) + factor(mtongue) +
                       factor(hsgroup) + factor(numcourses_nov1) +
                       factor(lastmin) + factor(mom_edn) + 
                       factor(dad_edn), data = datos)
resmodelc <- summary(modelc)
resmodelc$coefficients[1:4,]

               Estimate Std. Error    t value  Pr(>|t|)   CI Lower
(Intercept) -0.56408774 0.45852178 -1.2302311 0.2188195 -1.4635600
ssp         -0.06557246 0.07627015 -0.8597395 0.3900814 -0.2151900
sfp          0.01772206 0.07171060  0.2471330 0.8048419 -0.1229511
sfsp         0.04764786 0.08687795  0.5484460 0.5834741 -0.1227787
              CI Upper   DF
(Intercept) 0.33538448 1385
ssp         0.08404503 1385
sfp         0.15839518 1385
sfsp        0.21807445 1385

Como no es posible rechazar que el coeficiente de ssp sea diferente de cero (al igual que 4a., pero con errores estándar menores), se tiene que las asesorías y otros servicios para los estudiantes no son estadísticamente significativas en la obtención de creditos conseguidos al final del segundo año considerando este efecto en desviaciones estándar con respecto ala media del grupo del control.

4d.

[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)3. Para ello, primero genere gpa_year2_sd, que será la versión estandarizada de gpa_year2, siguiendo el mismo procedimiento que en la parte b. En seguida, genere una nueva variable llamda promedio_vars, que será el promedio de credits_earned2_sd y gpa_year2_sd. Luego, calcule la media y la desviación estándar de promedio_vars en el grupo de control. Finalmente, genere una nueva variable promedio_vars_sd restándole a promedio_vars la media antes calculada y dividiendo esta diferencia por la desviación estándar antes calculada. Muestre que la variable promedio_vars_sd tiene media 0 y desviación estándar 1 en el grupo de control.

media <- mean(filter(datos, control == 1, !GPA_year2 == "")$GPA_year2)
sd <- sd(filter(datos, control == 1, !GPA_year2 == "")$GPA_year2)

datos <- filter(datos, !GPA_year2 == "")

datos <- datos %>% 
  mutate(GPA_year2_sd = (GPA_year2 - media)/sd)

datos <-datos %>% 
  mutate(promedio_vars = (GPA_year2_sd + credits_earned2_sd)/2)

media <- mean(filter(datos, control == 1)$promedio_vars)
sd <- sd(filter(datos, control == 1)$promedio_vars)

datos <- datos %>% 
  mutate(promedio_vars_sd = (promedio_vars - media )/sd)

media <- mean(filter(datos, control == 1)$promedio_vars_sd)
sd <- sd(filter(datos, control == 1)$promedio_vars_sd)
print(media)

[1] -1.480854e-17

print(sd)

[1] 1

4e.

[5 puntos] Estime ahora el efecto de tratamiento sobre promedio_vars_sd, siguiendo la misma especificación econométrica que en la parte a. y usando errores robustos. ¿Qué concluye?

modele <- lm_robust(promedio_vars_sd ~ ssp + sfp + sfsp + 
                       factor(sex) + factor(mtongue) +
                       factor(hsgroup) + factor(numcourses_nov1) +
                       factor(lastmin) + factor(mom_edn) + 
                       factor(dad_edn), data = datos)
resmodele <- summary(modele)
resmodele$coefficients[1:4,]

               Estimate Std. Error    t value  Pr(>|t|)   CI Lower
(Intercept)  0.48152878 0.52555581  0.9162277 0.3597311 -0.5495791
ssp          0.02836938 0.08327749  0.3406609 0.7334184 -0.1350159
sfp         -0.02563937 0.07457507 -0.3438062 0.7310521 -0.1719510
sfsp         0.03450968 0.09713214  0.3552859 0.7224377 -0.1560575
             CI Upper   DF
(Intercept) 1.5126366 1203
ssp         0.1917546 1203
sfp         0.1206723 1203
sfsp        0.2250769 1203

Como no es posible rechazar que el coeficiente de ssp sea diferente de cero (al igual que 4a.), se tiene que las asesorías y otros servicios para los estudiantes no son estadísticamente significativas en la obtención de creditos conseguidos al final del segundo año, incluso considerando estos nuevos índices

Pregunta 5

Considere los valores \(p\) del archivo pvalues.csv. Cada valor \(p_i\) está asociado a una prueba de hipótesis \(i\). La variable familia denota tres grupos de hipótesis sobre las cuales estamos interesados en hacer correcciones de múltiples hipótesis. La investigación en cuestión emplea \(\alpha=0.05\).

valorp<-read_csv("Datos/pvalues.csv")

5a.

[5 puntos] Para cada una de las pruebas de hipótesis, genere un cuadro como el que se presenta a continuación y diga si se rechaza o no la hipótesis nula, bajo los siguientes criterios:

Hipótesis sin corrección Corrigiendo \(\alpha\) dentro de la familia usando el método de Bonferroni Corrigiendo por la tasa de falso descubrimiento dentro de la familia usando el método de Benjamini y Hochberg
1
\(\vdots\)
15

valp <- valorp %>% 
  group_by(familia)%>%
  arrange(p, .by_group = TRUE) %>% 
  ungroup()%>%
  mutate(h = seq(1,15))

alpha <- 0.05
n <- c(5,3,7)

tablaa <- valp %>% 
  mutate(Bonferroni_alpha = ifelse(familia == 1,alpha/n[1],
                                  ifelse(familia == 2, alpha/n[2],
                                         ifelse(familia == 3, alpha/n[3],0)))) %>% 
  mutate(Bonferroni = ifelse(p <= Bonferroni_alpha, "Rechazar", "No Rechazar")) %>% 
  mutate(Hochberg_alpha = ifelse(familia == 1,alpha/(n[1]-h+1),
                                  ifelse(familia == 2, alpha/(n[2]+5-h+1),
                                         ifelse(familia == 3, alpha/(n[3]+8-h+1),0)))) %>% 
  mutate(Hochberg = ifelse(p <= Hochberg_alpha, "Rechazar", "No Rechazar"))

formattable(tablaa)
hipotesis p familia familia_corregida h Bonferroni_alpha Bonferroni Hochberg_alpha Hochberg
4 0.0021 1 1 1 0.010000000 Rechazar 0.010000000 Rechazar
1 0.0145 1 1 2 0.010000000 No Rechazar 0.012500000 No Rechazar
5 0.0401 1 1 3 0.010000000 No Rechazar 0.016666667 No Rechazar
3 0.0678 1 1 4 0.010000000 No Rechazar 0.025000000 No Rechazar
2 0.2301 1 1 5 0.010000000 No Rechazar 0.050000000 No Rechazar
7 0.0018 2 4 6 0.016666667 Rechazar 0.016666667 Rechazar
6 0.3221 2 4 7 0.016666667 No Rechazar 0.025000000 No Rechazar
8 0.5126 2 4 8 0.016666667 No Rechazar 0.050000000 No Rechazar
15 0.0018 3 4 9 0.007142857 Rechazar 0.007142857 Rechazar
9 0.0034 3 4 10 0.007142857 Rechazar 0.008333333 Rechazar
11 0.0211 3 4 11 0.007142857 No Rechazar 0.010000000 No Rechazar
13 0.0273 3 4 12 0.007142857 No Rechazar 0.012500000 No Rechazar
12 0.0412 3 4 13 0.007142857 No Rechazar 0.016666667 No Rechazar
14 0.1198 3 4 14 0.007142857 No Rechazar 0.025000000 No Rechazar
10 0.1762 3 4 15 0.007142857 No Rechazar 0.050000000 No Rechazar

5b.

[5 puntos] Suponga que encuentra buenas razones conceptuales para afirmar que las familias 2 y 3 deben ser consideraras una sola familia. Tendríamos ahora solo dos familias, la familia 1 original y una nueva familia numerada como 4, como se indica en la variable familia_corregida. ¿Cómo cambian sus conclusiones respecto a la parte a. de esta pregunta? Genere un nuevo cuadro con esta redefinición.


valp <- valorp %>% 
  group_by(familia_corregida)%>% 
  arrange(p, .by_group = TRUE) %>% 
  ungroup()%>%
  mutate(h = seq(1,15))

n <- c(n,10)

tablab <- valp %>% 
  mutate(Bonferroni_alpha = ifelse(familia == 1,alpha/n[1],
                                  ifelse(familia_corregida == 4, alpha/n[4], 0))) %>% 
  mutate(Bonferroni = ifelse(p <= Bonferroni_alpha, "Rechazar", "No Rechazar")) %>% 
  mutate(Hochberg_alpha = ifelse(familia == 1,alpha/(n[1]-h+1),
                                  ifelse(familia_corregida == 4, alpha/(n[4]+5-h+1),0))) %>% 
  mutate(Hochberg = ifelse(p <= Hochberg_alpha, "Rechazar", "No Rechazar"))

formattable(tablab)
hipotesis p familia familia_corregida h Bonferroni_alpha Bonferroni Hochberg_alpha Hochberg
4 0.0021 1 1 1 0.010 Rechazar 0.010000000 Rechazar
1 0.0145 1 1 2 0.010 No Rechazar 0.012500000 No Rechazar
5 0.0401 1 1 3 0.010 No Rechazar 0.016666667 No Rechazar
3 0.0678 1 1 4 0.010 No Rechazar 0.025000000 No Rechazar
2 0.2301 1 1 5 0.010 No Rechazar 0.050000000 No Rechazar
7 0.0018 2 4 6 0.005 Rechazar 0.005000000 Rechazar
15 0.0018 3 4 7 0.005 Rechazar 0.005555556 Rechazar
9 0.0034 3 4 8 0.005 Rechazar 0.006250000 Rechazar
11 0.0211 3 4 9 0.005 No Rechazar 0.007142857 No Rechazar
13 0.0273 3 4 10 0.005 No Rechazar 0.008333333 No Rechazar
12 0.0412 3 4 11 0.005 No Rechazar 0.010000000 No Rechazar
14 0.1198 3 4 12 0.005 No Rechazar 0.012500000 No Rechazar
10 0.1762 3 4 13 0.005 No Rechazar 0.016666667 No Rechazar
6 0.3221 2 4 14 0.005 No Rechazar 0.025000000 No Rechazar
8 0.5126 2 4 15 0.005 No Rechazar 0.050000000 No Rechazar

Se rechazan las mismas hipótesis que en 5a. entonces las familias son las mismas

5c.

[5 puntos] Suponga que su asistente de investigación olvidó el concepto de familia y realiza las correcciones por pruebas de múltiples hipótesis ignorando las familias. ¿Qué concluiría en este caso? Genere un nuevo cuadro bajo esta circunstancia. Comente sobre la diferencia en las conclusiones entre las partes b. y c.

valp <- valorp %>%
  arrange( p)%>% 
  mutate(h = seq(1,15))
  

n <- c(n,15)

tablac <- valp %>% 
  mutate(Bonferroni_alpha = alpha/n[5]) %>% 
  mutate(Bonferroni = ifelse(p <= Bonferroni_alpha, "Rechazar", "No rechazar")) %>% 
  mutate(Hochberg_alpha = alpha/(n[5]-h+1)) %>% 
  mutate(Hochberg = ifelse(p <= Hochberg_alpha, "Rechazar", "No Rechazar"))

formattable(tablac)
hipotesis p familia familia_corregida h Bonferroni_alpha Bonferroni Hochberg_alpha Hochberg
7 0.0018 2 4 1 0.003333333 Rechazar 0.003333333 Rechazar
15 0.0018 3 4 2 0.003333333 Rechazar 0.003571429 Rechazar
4 0.0021 1 1 3 0.003333333 Rechazar 0.003846154 Rechazar
9 0.0034 3 4 4 0.003333333 No rechazar 0.004166667 Rechazar
1 0.0145 1 1 5 0.003333333 No rechazar 0.004545455 No Rechazar
11 0.0211 3 4 6 0.003333333 No rechazar 0.005000000 No Rechazar
13 0.0273 3 4 7 0.003333333 No rechazar 0.005555556 No Rechazar
5 0.0401 1 1 8 0.003333333 No rechazar 0.006250000 No Rechazar
12 0.0412 3 4 9 0.003333333 No rechazar 0.007142857 No Rechazar
3 0.0678 1 1 10 0.003333333 No rechazar 0.008333333 No Rechazar
14 0.1198 3 4 11 0.003333333 No rechazar 0.010000000 No Rechazar
10 0.1762 3 4 12 0.003333333 No rechazar 0.012500000 No Rechazar
2 0.2301 1 1 13 0.003333333 No rechazar 0.016666667 No Rechazar
6 0.3221 2 4 14 0.003333333 No rechazar 0.025000000 No Rechazar
8 0.5126 2 4 15 0.003333333 No rechazar 0.050000000 No Rechazar
El número de hipótesis rechazadas con Hochberg no cambia, pues el criterio de rechazo es independiente del numero de familias. Con el método de Bonferroni se rechaza una hipótesis menos (3).

  1. Por ejemplo, suponga que estima un modelo al que llame modelo1. Entonces, si ejecuta coef_test(modelo1, vcov=“CR1S”,cluster=mis_datos$demi_paire, test=“naive-t”)[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.

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

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