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.
library(tidyverse)
library(AER)
library(stargazer)
library(clubSandwich)
library(estimatr)
library(formattable)
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\)
modelb <- ivreg(expense_total ~ client | treatment, data = data)
stargazer(modelb, title="Resultados", align=TRUE, type = "html")
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 |
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 *
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.
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
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
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.
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\).
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.
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\).
[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}\]
[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.
Se define el estadístico
Se encuentra el valor de dicho estadístico
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.
En cada repetición \(s\), se obtiene el estadístico con los tratamientos falsos
Se calcula el valor \(p\) como el promedio de las veces que el estadístico original es mayor que el falso
Si \(p\) es menor que el nivel de significancia \(\alpha\), entonces el programa tuvo impacto.
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 == "")
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.
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
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.
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
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
valorp<-read_csv("Datos/pvalues.csv")
[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 |
[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
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 |
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.↩
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).↩