# ======================================================== # # Tema 12: Evaluación de impacto - Métodos # # ======================================================== # setwd("G:/Mi unidad/3. Trabajos/8. Senamhi Análisis de datos en R/4. Curso R/Módulo 4") # Instalar paquetes install.packages(c("readxl", "dplyr", "broom", "purrr")) # Cargar librerías library(readxl) library(dplyr) library(broom) library(purrr) # Cargar base data_agri <- read_excel("base_agricultores.xlsx") # Prueba t ---- t.test(edad ~ tratamiento, data = data_agri) t.test(ingreso ~ tratamiento, data = data_agri) t.test(gasto ~ tratamiento, data = data_agri) t.test(produccion ~ tratamiento, data = data_agri) t.test(sexo ~ tratamiento, data = data_agri) # Tabla de balance vars <- c("edad","ingreso","gasto","produccion","sexo") tabla_balance <- data.frame( variable = vars, media_control = sapply(vars, function(v) mean(data_agri[[v]][data_agri$tratamiento==0], na.rm=TRUE)), media_tratado = sapply(vars, function(v) mean(data_agri[[v]][data_agri$tratamiento==1], na.rm=TRUE)), p_value = sapply(vars, function(v) t.test(data_agri[[v]] ~ data_agri$tratamiento)$p.value) ) tabla_balance # Diferencias en diferencias ---- data_dif <- read_excel("base_DiD_12meses.xlsx") # Gráfico de tendencias install.packages("gglopt2") library(dplyr) library(ggplot2) data_dif %>% group_by(mes, tratamiento) %>% summarise(ingreso_prom = mean(ingreso, na.rm = TRUE)) %>% ggplot(aes(x = mes, y = ingreso_prom, color = factor(tratamiento))) + geom_line(size = 1.2) + geom_point() + labs( title = "Evolución de ingresos: Tratados vs Control", x = "Mes", y = "Ingreso promedio", color = "Grupo" ) + scale_color_manual(labels = c("Control", "Tratado"), values = c("blue", "red")) + theme_minimal() # Calculo de average treatment effect (ATE) modelo <- lm(ingreso ~ tratamiento*post, data = data_dif) summary(modelo) # Propensity Score Matching (PSM) ---- install.packages("MatchIt") library(MatchIt) # Base data("lalonde") table(lalonde$treat) prop1<-matchit(treat ~ age + educ + race + married + nodegree, data=lalonde, method = "nearest", distance = "glm") lalondem<-match.data(prop1) table(lalondem$treat) t.test(re78 ~ treat, data = lalondem)