## ----setup, include=FALSE----------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 8, fig.height = 8, message = FALSE, warning = FALSE ) library(ggplot2); library(dplyr); library(tidyr) data.table::setDTthreads(1L) options(dplyr.summarise.inform = FALSE, scipen = 999, digits = 5) theme_set(theme_bw(base_size = 12)) ## ----draw_data---------------------------------------------------------------- library(childpen) data <- simulate_data(n_individuals = 5000, treatment_groups = 24:28) data |> tibble() ## ----estimation--------------------------------------------------------------- res = multiple_treatment_group_analysis(data = data, treatment_groups = 24:25, # which treatment groups to run in the analysis periods_post = 2, # estimate results for post periods 0:2 periods_pre = 2, # estimate pre-trend diagnostics, set to NULL to omit from estimation max_age = 40, # dont estimate results if age is above 40 min_age = 20, # dont estimate results if age is below 20 pre = 1, # use 1 period before treatment, can make further away if anticipation is concern verbose = FALSE # set to TRUE to output progress (i like to time loops) set to FALSE to omit messages ) ## ----results_first------------------------------------------------------------ res |> tibble() ## ----------------------------------------------------------------------------- res |> filter(d == 24, a < d, estimand == "ATE", method == "DID_Female") |> mutate(control_offset = dp - d, control_offset = factor(control_offset)) |> ggplot(aes(x = event_time, y = est, ymin = ci_l, ymax = ci_h, color = control_offset, fill = control_offset)) + geom_ribbon(alpha = .15, color = NA) + geom_point() + geom_line() + scale_x_continuous(breaks = -3:-2) + facet_grid(cols = vars(control_offset)) ## ----------------------------------------------------------------------------- res |> filter(d == 24, a < d, estimand == "ATE", method == "DID_Female") |> mutate(control_offset = dp - d, control_offset = factor(control_offset)) |> ggplot(aes(x = event_time, y = est, ymin = ci_l, ymax = ci_h, color = control_offset, fill = control_offset)) + geom_ribbon(alpha = .15, color = NA) + geom_point() + geom_line() + scale_x_continuous(breaks = -3:-2) ## ----------------------------------------------------------------------------- res |> filter(a < d, estimand == "ATE", method == "DID_Female") |> mutate(control_offset = dp - d, control_offset = factor(control_offset)) |> ggplot(aes(x = event_time, y = est, ymin = ci_l, ymax = ci_h, color = control_offset, fill = control_offset)) + geom_ribbon(alpha = .15, color = NA) + geom_point() + geom_line() + scale_x_continuous(breaks = -3:-2) + facet_grid(cols = vars(d)) ## ----------------------------------------------------------------------------- res |> filter(a < d, estimand == "ATE" & (method == "DID_Female" | method == "DID_Male" | method == "TD") | estimand == "theta" & method == "NTD_Conv") |> mutate(control_offset = dp - d, control_offset = factor(control_offset)) |> ggplot(aes(x = event_time, y = est, ymin = ci_l, ymax = ci_h, color = control_offset, fill = control_offset)) + geom_ribbon(alpha = .15, color = NA) + geom_point() + geom_line() + scale_x_continuous(breaks = -3:-2) + facet_grid(cols = vars(d), rows = vars(method), scales = "free")