From d3d4c543ef19c6ce37bd3efd7aae38231639e050 Mon Sep 17 00:00:00 2001 From: jsr-p Date: Fri, 15 Dec 2023 11:37:57 +0100 Subject: [PATCH 01/50] Move sp list into main code chunk of tutorial for visibility --- vignettes/did-basics.Rmd | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/vignettes/did-basics.Rmd b/vignettes/did-basics.Rmd index f4edf7f..9061e52 100644 --- a/vignettes/did-basics.Rmd +++ b/vignettes/did-basics.Rmd @@ -76,17 +76,13 @@ library(did) #source(here::here("vignettes/setup_sims.R")) ``` -```{r, echo=FALSE} -time.periods <- 4 -sp <- reset.sim() -sp$te <- 0 -``` - ```{r, message = FALSE, warning = FALSE} # set seed so everything is reproducible set.seed(1814) # generate dataset with 4 time periods +sp <- reset.sim() +sp$te <- 0 time.periods <- 4 # add dynamic effects From 6337fdee9eebece6323e8c2d3aa4591d808589d8 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Fri, 13 Sep 2024 19:40:16 -0400 Subject: [PATCH 02/50] adding new preprocess function --- DESCRIPTION | 9 +- NAMESPACE | 3 + R/RcppExports.R | 11 ++ R/pre_process_did2.R | 344 +++++++++++++++++++++++++++++++++++++++++ R/utility_functions.R | 1 - R/zzz.R | 4 + man/aggte.Rd | 97 +----------- man/att_gt.Rd | 87 +---------- man/pre_process_did.Rd | 33 +++- src/RcppExports.cpp | 46 ++++++ src/RcppExports.o | Bin 0 -> 576824 bytes src/did.so | Bin 0 -> 392072 bytes src/sanity_check.cpp | 48 ++++++ src/sanity_check.o | Bin 0 -> 707800 bytes 14 files changed, 502 insertions(+), 181 deletions(-) create mode 100644 R/RcppExports.R create mode 100644 R/pre_process_did2.R create mode 100644 src/RcppExports.cpp create mode 100644 src/RcppExports.o create mode 100755 src/did.so create mode 100644 src/sanity_check.cpp create mode 100644 src/sanity_check.o diff --git a/DESCRIPTION b/DESCRIPTION index 0c9854d..e6623f2 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -5,7 +5,7 @@ Authors@R: c(person("Brantly", "Callaway", email = "brantly.callaway@uga.edu", r URL: https://bcallaway11.github.io/did/, https://github.com/bcallaway11/did/ Description: The standard Difference-in-Differences (DID) setup involves two periods and two groups -- a treated group and untreated group. Many applications of DID methods involve more than two periods and have individuals that are treated at different points in time. This package contains tools for computing average treatment effect parameters in Difference in Differences setups with more than two periods and with variation in treatment timing using the methods developed in Callaway and Sant'Anna (2021) . The main parameters are group-time average treatment effects which are the average treatment effect for a particular group at a a particular time. These can be aggregated into a fewer number of treatment effect parameters, and the package deals with the cases where there is selective treatment timing, dynamic treatment effects, calendar time effects, or combinations of these. There are also functions for testing the Difference in Differences assumption, and plotting group-time average treatment effects. Depends: - R (>= 3.5), + R (>= 4.3), License: GPL-2 Encoding: UTF-8 LazyData: true @@ -20,9 +20,12 @@ Imports: methods, tidyr, parglm (>= 0.1.7), - data.table (>= 1.15.4) + data.table (>= 1.15.4), + Rcpp (>= 1.0.13) +LinkingTo: + Rcpp (>= 1.0.13) Roxygen: list(markdown = TRUE) -RoxygenNote: 7.3.1 +RoxygenNote: 7.3.2 VignetteBuilder: knitr Suggests: rmarkdown, diff --git a/NAMESPACE b/NAMESPACE index f3781ea..ed2deeb 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -35,13 +35,16 @@ export(splot) export(test.mboot) export(tidy) export(trimmer) +export(validate_args) import(BMisc) import(data.table) import(ggplot2) import(ggpubr) import(stats) import(utils) +importFrom(Rcpp,sourceCpp) importFrom(generics,glance) importFrom(generics,tidy) importFrom(methods,is) importFrom(tidyr,gather) +useDynLib(did) diff --git a/R/RcppExports.R b/R/RcppExports.R new file mode 100644 index 0000000..e6e35e6 --- /dev/null +++ b/R/RcppExports.R @@ -0,0 +1,11 @@ +# Generated by using Rcpp::compileAttributes() -> do not edit by hand +# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +checkTreatmentUniqueness <- function(dta, idname, treatName) { + invisible(.Call('_did_checkTreatmentUniqueness', PACKAGE = 'did', dta, idname, treatName)) +} + +checkWeightsUniqueness <- function(dta, idname) { + invisible(.Call('_did_checkWeightsUniqueness', PACKAGE = 'did', dta, idname)) +} + diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R new file mode 100644 index 0000000..b7939b6 --- /dev/null +++ b/R/pre_process_did2.R @@ -0,0 +1,344 @@ +#' @title validate_args +#' @description A utility function to validate arguments passed to a att_gt() +#' @param data data.table used in function +#' @param args list of arguments to validate +#' +#' @return nothing, but throws an error if any of the arguments are not valid +#' +#' @export +#' @noRd +validate_args <- function(args, data){ + + # ---------------------- Error Checking ---------------------- + + # Flag for control group types + if(!(args$control_group %in% c("nevertreated", "notyettreated"))){ + stop("control_group must be either 'nevertreated' or 'notyettreated'") + } + + # Flag for yname + if (!is.element(args$yname, base::colnames(data))) { + stop("yname = ",yname, " could not be found in the data provided.") + } + + # Flag for tname + if (!is.element(args$tname, base::colnames(data))) { + stop("tname = ",tname, " could not be found in the data provided.") + } + + # check if times periods are numeric + if (!all(sapply(data[, get(args$tname)], is.integer))) { + stop("tname = ",tname, " is not integer. Please convert it") + } + + # Flag for gname + if ( !is.element(gname, base::colnames(data))) { + stop("gname = ",gname, " could not be found in the data provided.") + } + + # Check if gname is numeric + if (!all(sapply(data[, get(args$gname)], is.numeric))) { + stop("gname = ",gname, " is not numeric. Please convert it") + } + + # Flag for idname + if(!is.null(args$idname)){ + # Check if idname is in the data + if ( !is.element(args$idname, base::colnames(data))) { + stop("idname = ",idname, " could not be found in the data provided.") + } + + # check if idname is integer + if (!all(sapply(data[, get(args$idname)], is.integer))) { + stop("data[, idname] must be integer Please convert it.") + } + + # Check if gname is unique by idname: irreversibility of the treatment + checkTreatmentUniqueness(data, args$idname, args$gname) + } + + + # Check if any combination of idname and tname is duplicated + n_id_year = anyDuplicated(data[, .(args$idname, args$tname)]) + # If any combination is duplicated, stop execution and throw an error + if (n_id_year > 0) { + stop("The value of idname must be unique (by tname)") + } + + # Flag for weightsname + if(!is.null(args$weightsname)){ + if (!is.element(args$weightsname, base::colnames(data))) { + stop("weightsname = ", weightsname, " could not be found in the data provided.") + } + } + + + # Flag for based period: not in c("universal", "varying"), stop + if (!args$base_period %in% c("universal", "varying")) { + stop("base_period must be either 'universal' or 'varying'.") + } + + # Flags for cluster variable + if (!is.null(args$clustervars)) { + # dropping idname from cluster + if (args$idname %in% args$clustervars) { + args$clustervars <- setdiff(args$clustervars, args$idname) + } + + # flag if cluster variable is not in dataset + if (!is.element(args$cluster, base::colnames(data))) { + stop("clustervars = ",cluster, " could not be found in the data provided. Please check your arguments.") + } + + # check if user is providing more than 2 cluster variables (different than idname) + if (length(args$cluster) > 1) { + stop("You can only provide 1 cluster variable additionally to the one provided in idname. Please check your arguments.") + } + + # Check that cluster variables do not vary over time within each unit + if (length(cluster) > 0) { + # Efficiently check for time-varying cluster variables + clust_tv <- data[, lapply(.SD, function(col) length(unique(col)) == 1), by = id, .SDcols = args$cluster] + # If any cluster variable varies over time within any unit, stop execution + if (!all(unlist(clust_tv[, -1, with = FALSE]))) { + stop("did cannot handle time-varying cluster variables at the moment. Please check your cluster variable.") + } + } + } + + # Check if anticipation is numeric + if (!is.numeric(args$anticipation)) { + stop("anticipation must be numeric. Please convert it.") + } + + # Check if anticipation is positive + if (args$anticipation < 0) { + stop("anticipation must be positive. Please check your arguments.") + } + + # Check if anticipation is integer + if (!is.integer(args$anticipation)) { + stop("anticipation must be an integer. Please check your arguments.") + } + +} + +did_standarization <- function(data, args){ + # keep relevant columns in data + cols_to_keep <- c(args$idname, args$tname, args$gname, args$yname, args$weightsname, args$clustervars) + + model_frame <- model.frame(args$xformla, data = data, na.action = na.pass) + # Subset the dataset to keep only the relevant columns + data <- data[, ..cols_to_keep] + + # Column bind the model frame to the data + data <- cbind(data, as.data.table(model_frame)) + + # Check if any covariates were missing + n_orig <- data[, .N] + data <- data[complete.cases(data)] + n_new <- data[, .N] + n_diff <- n_orig - n_new + if (n_diff != 0) { + warning(paste0("dropped ", n_diff, " rows from original data due to missing data")) + } + + # Set weights + base::ifelse(is.null(args$weightsname), weights <- rep(1, n_new), weights <- data[[args$weightsname]]) + # enforcing normalization of weights. At this point we already drop any missing values in weights. + weights <- weights/mean(weights) + data$weights <- weights + + # get a list of dates from min to max + tlist <- data[, sort(unique(get(args$tname)))] + + # Coerce control group identified with zero as Inf + data[get(args$gname) == 0, (args$gname) := Inf] + + # Working out the dates + # Identify groups with treatment time bigger than the maximum treatment time + # calculate the maximum treatment time + max_treatment_time <- max(tlist, na.rm = TRUE) + data[, asif_never_treated := (get(args$gname) > max_treatment_time)] + # replace NA values with FALSE in the logical vector + data[is.na(asif_never_treated), asif_never_treated := FALSE] + # set gname to 0 for those groups considered as never treated + data[asif_never_treated == TRUE, (args$gname) := Inf] + # remove the temporary column + data[, asif_never_treated := NULL] + + # get list of treated groups (by time) from min to max + glist <- sort(unique(data[[args$gname]])) + + # Check if there is a never treated group in the data + if (!(Inf %in% glist)) { + if (args$control_group == "nevertreated") { + stop("There is no available never-treated group") + } else { + # Drop all time periods with time periods >= latest treated + max_treated_time <- max(glist[is.finite(glist)], na.rm = TRUE) + latest_treated_time <- max_treated_time - args$anticipation + data <- data[get(args$tname) < latest_treated_time] + + tlist <- sort(unique(data[[args$tname]])) + glist <- sort(unique(data[[args$gname]])) + + # don't compute ATT(g,t) for groups that are only treated at end + # and only play a role as a comparison group + glist <- glist[glist < max_treated_time] + } + } + + # get only the first period + first_period <- tlist[1] + + # drop groups treated in the first period or before; keep only treated groups + glist <- glist[glist != Inf & glist > first_period + args$anticipation] + + # Check for groups treated in the first period and drop them + # identify groups treated in the first period + data[, treated_first_period := (get(gname) <= first_period)] + data[is.na(treated_first_period), treated_first_period := FALSE] + + # count the number of units treated in the first period + nfirstperiod <- uniqueN(data[treated_first_period == TRUE, get(args$idname)]) + + # handle units treated in the first period + if (nfirstperiod > 0) { + warning(paste0("Dropped ", nfirstperiod, " units that were already treated in the first period.")) + data <- data[get(args$gname) %in% c(glist, Inf)] + + # update tlist and glist + tlist <- data[, sort(unique(get(args$tname)))] + glist <- data[, sort(unique(get(args$gname)))] + + # Drop groups treated in the first period or before + first_period <- tlist[1] + glist <- glist[glist != Inf & glist > first_period + args$anticipation] + } + # remove the temporary column + data[, treated_first_period := NULL] + + # If user specifies repeated cross sections, + # set that it really is repeated cross sections + args$true_repeated_cross_sections <- FALSE + if (!args$panel) { + args$true_repeated_cross_sections <- TRUE + } + + #----------------------------------------------------------------------------- + # setup data in panel case + #----------------------------------------------------------------------------- + + + #----------------------------------------------------------------------------- + # setup data in repeated cross section + #----------------------------------------------------------------------------- + + + return(list(dt, args)) +} + +get_did_partitions <- function(data, args){ + return(did_partitions) +} + +augment_args <- function(did_partitions, args){ + return(args) +} + +#' @title Process `did` Function Arguments +#' +#' @description Function to process arguments passed to the main methods in the +#' `did` package as well as conducting some tests to make sure +#' data is in proper format / try to throw helpful error messages. +#' +#' @inheritParams att_gt +#' @param call Function call to att_gt +#' +#' @return a [`DIDparams`] object +#' +#' @export +pre_process_did <- function(yname, + tname, + idname, + gname, + xformla = NULL, + data, + panel = TRUE, + allow_unbalanced_panel, + control_group = c("nevertreated","notyettreated"), + anticipation = 0, + weightsname = NULL, + alp = 0.05, + bstrap = FALSE, + cband = FALSE, + biters = 1000, + clustervars = NULL, + est_method = "dr", + base_period = "varying", + print_details = TRUE, + pl = FALSE, + cores = 1, + call = NULL) { + + + # coerce data to data.table first + if (!is.data.table(data)) { + data <- as.data.table(data) + } + + # gathering all the arguments except data + args_names <- setdiff(names(formlas()), "data") + args <- mget(arg_names, sys.frame(sys.nframe())) + + # run error checking on arguments + validate_args(args, data) + + # put in blank xformla if no covariates + if (is.null(args$xformla)) { + args$xformla <- ~1 + } + + # Put the data in a standard format after some validation + cleaned_did <- did_standarization(data, args) + + # Partition staggered did into a 2by2 did for faster implementation + did_partitions <- get_did_partitions(cleaned_did$data, cleaned_did$args) + + # get the augmented arguments useful to perform estimation + args <- augment_args(did_partitions, cleaned_did$args) + + # store parameters for passing around later + + dp <- DIDparams(did_partitions, args) + dp <- DIDparams(yname=yname, + tname=tname, + idname=idname, + gname=gname, + xformla=xformla, + data=as.data.frame(data), + control_group=control_group, + anticipation=anticipation, + weightsname=weightsname, + alp=alp, + bstrap=bstrap, + biters=biters, + clustervars=clustervars, + cband=cband, + print_details=print_details, + pl=pl, + cores=cores, + est_method=est_method, + base_period=base_period, + panel=panel, + true_repeated_cross_sections=true_repeated_cross_sections, + n=n, + nG=nG, + nT=nT, + tlist=tlist, + glist=glist, + call=call) + + +} diff --git a/R/utility_functions.R b/R/utility_functions.R index 2b17235..7b1fa23 100644 --- a/R/utility_functions.R +++ b/R/utility_functions.R @@ -73,4 +73,3 @@ get_wide_data <- function(data, yname, idname, tname) { return(data) } - diff --git a/R/zzz.R b/R/zzz.R index 172ba5e..048fdc9 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -8,3 +8,7 @@ utils::globalVariables(c("year","att","att.se","post","group","x")) citation <- function() { cat("Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. \"Difference-in-Differences with Multiple Time Periods.\" Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , \n") } + +#' @useDynLib did +#' @importFrom Rcpp sourceCpp +NULL diff --git a/man/aggte.Rd b/man/aggte.Rd index 5b4ed92..a5fae62 100644 --- a/man/aggte.Rd +++ b/man/aggte.Rd @@ -88,7 +88,7 @@ and "calendar." Initial ATT(g,t) estimates from \code{\link[=att_gt]{att_gt()}} -\if{html}{\out{
}}\preformatted{data(mpdta) +\if{html}{\out{
", collapse = TRUE}">}}\preformatted{data(mpdta) out <- att_gt(yname="lemp", tname="year", idname="countyreal", @@ -101,109 +101,22 @@ You can aggregate the ATT(g,t) in many ways. \strong{Overall ATT:} -\if{html}{\out{
}}\preformatted{aggte(out, type = "simple") -#> -#> Call: -#> aggte(MP = out, type = "simple") -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> -#> -#> ATT Std. Error [ 95\% Conf. Int.] -#> -0.04 0.0126 -0.0647 -0.0152 * -#> -#> -#> --- -#> Signif. codes: `*' confidence band does not cover 0 -#> -#> Control Group: Never Treated, Anticipation Periods: 0 -#> Estimation Method: Doubly Robust +\if{html}{\out{
", collapse = TRUE}">}}\preformatted{aggte(out, type = "simple") }\if{html}{\out{
}} \strong{Dynamic ATT (Event-Study):} -\if{html}{\out{
}}\preformatted{aggte(out, type = "dynamic") -#> -#> Call: -#> aggte(MP = out, type = "dynamic") -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> -#> -#> Overall summary of ATT's based on event-study/dynamic aggregation: -#> ATT Std. Error [ 95\% Conf. Int.] -#> -0.0772 0.0213 -0.1189 -0.0356 * -#> -#> -#> Dynamic Effects: -#> Event time Estimate Std. Error [95\% Simult. Conf. Band] -#> -3 0.0305 0.0155 -0.0091 0.0701 -#> -2 -0.0006 0.0122 -0.0317 0.0306 -#> -1 -0.0245 0.0150 -0.0627 0.0138 -#> 0 -0.0199 0.0122 -0.0511 0.0112 -#> 1 -0.0510 0.0168 -0.0939 -0.0080 * -#> 2 -0.1373 0.0406 -0.2411 -0.0335 * -#> 3 -0.1008 0.0374 -0.1965 -0.0052 * -#> --- -#> Signif. codes: `*' confidence band does not cover 0 -#> -#> Control Group: Never Treated, Anticipation Periods: 0 -#> Estimation Method: Doubly Robust +\if{html}{\out{
", collapse = TRUE}">}}\preformatted{aggte(out, type = "dynamic") }\if{html}{\out{
}} \strong{ATT for each group:} -\if{html}{\out{
}}\preformatted{aggte(out, type = "group") -#> -#> Call: -#> aggte(MP = out, type = "group") -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> -#> -#> Overall summary of ATT's based on group/cohort aggregation: -#> ATT Std. Error [ 95\% Conf. Int.] -#> -0.031 0.0127 -0.0559 -0.0062 * -#> -#> -#> Group Effects: -#> Group Estimate Std. Error [95\% Simult. Conf. Band] -#> 2004 -0.0797 0.0273 -0.1408 -0.0187 * -#> 2006 -0.0229 0.0179 -0.0631 0.0173 -#> 2007 -0.0261 0.0179 -0.0663 0.0141 -#> --- -#> Signif. codes: `*' confidence band does not cover 0 -#> -#> Control Group: Never Treated, Anticipation Periods: 0 -#> Estimation Method: Doubly Robust +\if{html}{\out{
", collapse = TRUE}">}}\preformatted{aggte(out, type = "group") }\if{html}{\out{
}} \strong{ATT for each calendar year:} -\if{html}{\out{
}}\preformatted{aggte(out, type = "calendar") -#> -#> Call: -#> aggte(MP = out, type = "calendar") -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> -#> -#> Overall summary of ATT's based on calendar time aggregation: -#> ATT Std. Error [ 95\% Conf. Int.] -#> -0.0417 0.0175 -0.076 -0.0074 * -#> -#> -#> Time Effects: -#> Time Estimate Std. Error [95\% Simult. Conf. Band] -#> 2004 -0.0105 0.0246 -0.0687 0.0477 -#> 2005 -0.0704 0.0311 -0.1441 0.0033 -#> 2006 -0.0488 0.0206 -0.0975 -0.0001 * -#> 2007 -0.0371 0.0147 -0.0718 -0.0023 * -#> --- -#> Signif. codes: `*' confidence band does not cover 0 -#> -#> Control Group: Never Treated, Anticipation Periods: 0 -#> Estimation Method: Doubly Robust +\if{html}{\out{
", collapse = TRUE}">}}\preformatted{aggte(out, type = "calendar") }\if{html}{\out{
}} } diff --git a/man/att_gt.Rd b/man/att_gt.Rd index a5a8661..17a24e8 100644 --- a/man/att_gt.Rd +++ b/man/att_gt.Rd @@ -171,7 +171,7 @@ See Callaway and Sant'Anna (2021) for a detailed description. \section{Examples:}{ \strong{Basic \code{\link[=att_gt]{att_gt()}} call:} -\if{html}{\out{
}}\preformatted{# Example data +\if{html}{\out{
", collapse = TRUE}">}}\preformatted{# Example data data(mpdta) out1 <- att_gt(yname="lemp", @@ -181,76 +181,22 @@ out1 <- att_gt(yname="lemp", xformla=NULL, data=mpdta) summary(out1) -#> -#> Call: -#> att_gt(yname = "lemp", tname = "year", idname = "countyreal", -#> gname = "first.treat", xformla = NULL, data = mpdta) -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> -#> Group-Time Average Treatment Effects: -#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] -#> 2004 2004 -0.0105 0.0254 -0.0801 0.0591 -#> 2004 2005 -0.0704 0.0317 -0.1574 0.0165 -#> 2004 2006 -0.1373 0.0382 -0.2421 -0.0324 * -#> 2004 2007 -0.1008 0.0324 -0.1896 -0.0120 * -#> 2006 2004 0.0065 0.0236 -0.0582 0.0712 -#> 2006 2005 -0.0028 0.0194 -0.0559 0.0504 -#> 2006 2006 -0.0046 0.0183 -0.0548 0.0456 -#> 2006 2007 -0.0412 0.0200 -0.0960 0.0136 -#> 2007 2004 0.0305 0.0149 -0.0103 0.0713 -#> 2007 2005 -0.0027 0.0179 -0.0518 0.0464 -#> 2007 2006 -0.0311 0.0181 -0.0807 0.0185 -#> 2007 2007 -0.0261 0.0167 -0.0718 0.0197 -#> --- -#> Signif. codes: `*' confidence band does not cover 0 -#> -#> P-value for pre-test of parallel trends assumption: 0.16812 -#> Control Group: Never Treated, Anticipation Periods: 0 -#> Estimation Method: Doubly Robust }\if{html}{\out{
}} \strong{Using covariates:} -\if{html}{\out{
}}\preformatted{out2 <- att_gt(yname="lemp", +\if{html}{\out{
", collapse = TRUE}">}}\preformatted{out2 <- att_gt(yname="lemp", tname="year", idname="countyreal", gname="first.treat", xformla=~lpop, data=mpdta) summary(out2) -#> -#> Call: -#> att_gt(yname = "lemp", tname = "year", idname = "countyreal", -#> gname = "first.treat", xformla = ~lpop, data = mpdta) -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> -#> Group-Time Average Treatment Effects: -#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] -#> 2004 2004 -0.0145 0.0229 -0.0768 0.0478 -#> 2004 2005 -0.0764 0.0311 -0.1612 0.0084 -#> 2004 2006 -0.1404 0.0390 -0.2468 -0.0341 * -#> 2004 2007 -0.1069 0.0347 -0.2015 -0.0123 * -#> 2006 2004 -0.0005 0.0217 -0.0595 0.0586 -#> 2006 2005 -0.0062 0.0182 -0.0557 0.0433 -#> 2006 2006 0.0010 0.0206 -0.0553 0.0572 -#> 2006 2007 -0.0413 0.0187 -0.0922 0.0096 -#> 2007 2004 0.0267 0.0146 -0.0129 0.0664 -#> 2007 2005 -0.0046 0.0156 -0.0470 0.0378 -#> 2007 2006 -0.0284 0.0191 -0.0805 0.0236 -#> 2007 2007 -0.0288 0.0170 -0.0752 0.0176 -#> --- -#> Signif. codes: `*' confidence band does not cover 0 -#> -#> P-value for pre-test of parallel trends assumption: 0.23267 -#> Control Group: Never Treated, Anticipation Periods: 0 -#> Estimation Method: Doubly Robust }\if{html}{\out{
}} \strong{Specify comparison units:} -\if{html}{\out{
}}\preformatted{out3 <- att_gt(yname="lemp", +\if{html}{\out{
", collapse = TRUE}">}}\preformatted{out3 <- att_gt(yname="lemp", tname="year", idname="countyreal", gname="first.treat", @@ -258,33 +204,6 @@ summary(out2) control_group = "notyettreated", data=mpdta) summary(out3) -#> -#> Call: -#> att_gt(yname = "lemp", tname = "year", idname = "countyreal", -#> gname = "first.treat", xformla = ~lpop, data = mpdta, control_group = "notyettreated") -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> -#> Group-Time Average Treatment Effects: -#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] -#> 2004 2004 -0.0212 0.0227 -0.0818 0.0394 -#> 2004 2005 -0.0816 0.0302 -0.1621 -0.0011 * -#> 2004 2006 -0.1382 0.0366 -0.2356 -0.0408 * -#> 2004 2007 -0.1069 0.0329 -0.1946 -0.0192 * -#> 2006 2004 -0.0075 0.0223 -0.0670 0.0521 -#> 2006 2005 -0.0046 0.0191 -0.0555 0.0464 -#> 2006 2006 0.0087 0.0179 -0.0389 0.0563 -#> 2006 2007 -0.0413 0.0218 -0.0993 0.0167 -#> 2007 2004 0.0269 0.0131 -0.0079 0.0617 -#> 2007 2005 -0.0042 0.0161 -0.0472 0.0388 -#> 2007 2006 -0.0284 0.0190 -0.0790 0.0221 -#> 2007 2007 -0.0288 0.0170 -0.0741 0.0166 -#> --- -#> Signif. codes: `*' confidence band does not cover 0 -#> -#> P-value for pre-test of parallel trends assumption: 0.23326 -#> Control Group: Not Yet Treated, Anticipation Periods: 0 -#> Estimation Method: Doubly Robust }\if{html}{\out{
}} } diff --git a/man/pre_process_did.Rd b/man/pre_process_did.Rd index 08b9ddf..8896af1 100644 --- a/man/pre_process_did.Rd +++ b/man/pre_process_did.Rd @@ -1,9 +1,34 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/pre_process_did.R +% Please edit documentation in R/pre_process_did.R, R/pre_process_did2.R \name{pre_process_did} \alias{pre_process_did} \title{Process \code{did} Function Arguments} \usage{ +pre_process_did( + yname, + tname, + idname, + gname, + xformla = NULL, + data, + panel = TRUE, + allow_unbalanced_panel, + control_group = c("nevertreated", "notyettreated"), + anticipation = 0, + weightsname = NULL, + alp = 0.05, + bstrap = FALSE, + cband = FALSE, + biters = 1000, + clustervars = NULL, + est_method = "dr", + base_period = "varying", + print_details = TRUE, + pl = FALSE, + cores = 1, + call = NULL +) + pre_process_did( yname, tname, @@ -161,9 +186,15 @@ Default is \code{FALSE}.} \item{call}{Function call to att_gt} } \value{ +a \code{\link{DIDparams}} object + a \code{\link{DIDparams}} object } \description{ +Function to process arguments passed to the main methods in the +\code{did} package as well as conducting some tests to make sure +data is in proper format / try to throw helpful error messages. + Function to process arguments passed to the main methods in the \code{did} package as well as conducting some tests to make sure data is in proper format / try to throw helpful error messages. diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp new file mode 100644 index 0000000..28ea920 --- /dev/null +++ b/src/RcppExports.cpp @@ -0,0 +1,46 @@ +// Generated by using Rcpp::compileAttributes() -> do not edit by hand +// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +#include + +using namespace Rcpp; + +#ifdef RCPP_USE_GLOBAL_ROSTREAM +Rcpp::Rostream& Rcpp::Rcout = Rcpp::Rcpp_cout_get(); +Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); +#endif + +// checkTreatmentUniqueness +void checkTreatmentUniqueness(DataFrame dta, String idname, String treatName); +RcppExport SEXP _did_checkTreatmentUniqueness(SEXP dtaSEXP, SEXP idnameSEXP, SEXP treatNameSEXP) { +BEGIN_RCPP + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< DataFrame >::type dta(dtaSEXP); + Rcpp::traits::input_parameter< String >::type idname(idnameSEXP); + Rcpp::traits::input_parameter< String >::type treatName(treatNameSEXP); + checkTreatmentUniqueness(dta, idname, treatName); + return R_NilValue; +END_RCPP +} +// checkWeightsUniqueness +void checkWeightsUniqueness(DataFrame dta, String idname); +RcppExport SEXP _did_checkWeightsUniqueness(SEXP dtaSEXP, SEXP idnameSEXP) { +BEGIN_RCPP + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< DataFrame >::type dta(dtaSEXP); + Rcpp::traits::input_parameter< String >::type idname(idnameSEXP); + checkWeightsUniqueness(dta, idname); + return R_NilValue; +END_RCPP +} + +static const R_CallMethodDef CallEntries[] = { + {"_did_checkTreatmentUniqueness", (DL_FUNC) &_did_checkTreatmentUniqueness, 3}, + {"_did_checkWeightsUniqueness", (DL_FUNC) &_did_checkWeightsUniqueness, 2}, + {NULL, NULL, 0} +}; + +RcppExport void R_init_did(DllInfo *dll) { + R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); + R_useDynamicSymbols(dll, FALSE); +} diff --git a/src/RcppExports.o b/src/RcppExports.o new file mode 100644 index 0000000000000000000000000000000000000000..38062fdfff207162349951313cb76076a4c2be75 GIT binary patch literal 576824 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
1?>QTB#8)>>O*eCmVQD4Es1> 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 literal 0 HcmV?d00001 diff --git a/src/sanity_check.cpp b/src/sanity_check.cpp new file mode 100644 index 0000000..8f7aa0e --- /dev/null +++ b/src/sanity_check.cpp @@ -0,0 +1,48 @@ +#include +using namespace Rcpp; + +// This code contains a series of sanity checks for preprocessing. +// These checks are used to ensure that the input data is consistent +// Date: 2024-09-12 + +// [[Rcpp::export]] +void checkTreatmentUniqueness(DataFrame dta, String idname, String treatName) { + CharacterVector id = dta[idname]; + NumericVector cohort = dta[treatName]; + + std::map> cohortMap; + + // Building a map where each key is an idname and the value is a set of cohort.names + for (int i = 0; i < id.size(); ++i) { + cohortMap[id[i]].insert(cohort[i]); + } + + // Check if any id has more than one unique cohort.name + for (const auto &pair : cohortMap) { + if (pair.second.size() > 1) { + stop("The value of dname (treatment variable) must be the same across all periods for each particular unit"); + } + } + // If we reach here, all dname are unique by idname +} + +// [[Rcpp::export]] +void checkWeightsUniqueness(DataFrame dta, String idname) { + CharacterVector id = dta[idname]; + NumericVector weights = dta["weights"]; + + std::map> weightsMap; + + // Building a map where each key is an idname and the value is a set of weights + for (int i = 0; i < id.size(); ++i) { + weightsMap[id[i]].insert(weights[i]); + } + + // Check if any id has more than one unique weight + for (const auto &pair : weightsMap) { + if (pair.second.size() > 1) { + stop("The value of weights must be the same across all periods for each particular unit"); + } + } + // If we reach here, all weights are unique by idname +} diff --git a/src/sanity_check.o b/src/sanity_check.o new file mode 100644 index 0000000000000000000000000000000000000000..448774fc27aaab1a9b15236b88d03949d8869858 GIT binary patch literal 707800 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%0DI>8RwK!vm@W|H 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

t51yh?VjC;`wb;@ofqpQG@wW_(WQB1p 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

gt|H`b^QsfV;RFJ)mFDz#(HQKi`A-G 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�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 z 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 Date: Mon, 16 Sep 2024 21:49:18 -0400 Subject: [PATCH 03/50] adding did_standarization function --- R/pre_process_did2.R | 128 ++++++++++++++++++++++++++++++++++++++++++- src/did.so | Bin 392072 -> 392072 bytes 2 files changed, 126 insertions(+), 2 deletions(-) diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index b7939b6..c824942 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -229,14 +229,138 @@ did_standarization <- function(data, args){ #----------------------------------------------------------------------------- # setup data in panel case #----------------------------------------------------------------------------- + # Check if data is a balanced panel if panel = TRUE and allow_unbalanced_panel = TRUE + bal_panel_test <- (args$panel)*(args$allow_unbalanced_panel) + + if (bal_panel_test) { + # First, focus on complete cases and make a balanced dataset + data_comp <- data[complete.cases(data)] + + # uniqueN for faster unique counts + n_all <- uniqueN(data_comp[[args$idname]]) + + # Make balanced panel + data_bal <- BMisc::makeBalancedPanel(data_comp, args$idname, args$tname) + n_bal <- uniqueN(data_bal[[args$idname]]) + + # Determine if the panel is unbalanced + args$allow_unbalanced_panel <- n_bal < n_all + message(if (args$allow_unbalanced_panel) + "You have an unbalanced panel. Proceeding as such." + else + "You have a balanced panel. Setting allow_unbalanced_panel = FALSE.") + } + + if (args$panel) { + # Check for unbalanced panel + if (args$allow_unbalanced_panel) { + # Flag for true repeated cross sections + args$panel <- FALSE + args$true_repeated_cross_sections <- FALSE + } else { + # Coerce balanced panel + + # Focus on complete cases + keepers <- complete.cases(data) + n <- uniqueN(data[[args$idname]]) + n_keep <- uniqueN(data[keepers, ][[args$idname]]) + if (n_keep < n) { + warning(paste0("Dropped ", (n - n_keep), " observations that had missing data.")) + data <- data[keepers, ] + } + + + # Make balanced panel + n_old <- uniqueN(data[[args$idname]]) + data <- as.data.table(BMisc::makeBalancedPanel(data, args$idname, args$tname)) # coerce to data.table again. This is ugly, find a better way to do it. + n <- uniqueN(data[[args$idname]]) + + if (n < n_old) { + warning(paste0("Dropped ", n_old - n, " observations while converting to balanced panel.")) + } + + # If all data is dropped, stop execution + if (nrow(data) == 0) { + stop("All observations dropped while converting data to balanced panel. Consider setting `panel = FALSE` and/or revisiting 'idname'.") + } + n <- data[get(args$tname) == tlist[1], .N] + + # Ensure The value of gname must be the same across all periods for each particular individual. + checkTreatmentUniqueness(data, args$idname, args$gname) + } + } #----------------------------------------------------------------------------- # setup data in repeated cross section #----------------------------------------------------------------------------- + if (!args$panel) { + # Focus on complete cases + data <- data[complete.cases(data)] + + if (nrow(data) == 0) { + stop("All observations dropped due to missing data problems.") + } + + # n-row data.frame to hold the influence function + if (args$true_repeated_cross_sections) { + data[, .rowid := .I] # Create row index + args$idname <- ".rowid" + } else { + # Set rowid to idname for repeated cross section/unbalanced + data[, .rowid := get(args$idname)] + } + + # Count unique number of cross section observations + n <- uniqueN(data[[args$idname]]) + } + + # Check if groups is empty (usually a problem with the way people defined groups) + if(length(glist)==0){ + stop("No valid groups. The variable in 'gname' should be expressed as the time a unit is first treated (0 if never-treated).") + } + + # if there are only two time periods, then uniform confidence + # bands are the same as pointwise confidence intervals + if (length(tlist)==2) { + args$cband <- FALSE + } + + #----------------------------------------------------------------------------- + # more error handling after we have balanced the panel + + # Check against very small groups + # Calculate group sizes, dividing the count of each group by the length of tlist + gsize <- data[, .N / length(tlist), by = get(args$gname)] + + # How many in each group before giving a warning + reqsize <- length(BMisc::rhs.vars(xformla)) + 5 + + # Filter groups smaller than reqsize + gsize <- gsize[V1 < reqsize] + + # Warn if some groups are small + if (nrow(gsize) > 0) { + gpaste <- paste(gsize[[args$gname]], collapse = ",") + warning(paste0("Be aware that there are some small groups in your dataset.\n Check groups: ", gpaste, ".")) + + # Check if the never treated group is too small + if (Inf %in% gsize[[gname]] & control_group == "nevertreated") { + stop("Never treated group is too small, try setting control_group=\"notyettreated\"") + } + } + #----------------------------------------------------------------------------- + # Sort the data for easy access later on + setorderv(data, c(args$tname, args$gname, args$idname), c(1,1,1)) + + # Assign new args regarding number of time periods and groups + # How many time periods + args$time_periods_count <- length(tlist) + # How many treated groups + args$treated_groups_count <- length(glist) - return(list(dt, args)) + return(list(data = data, args = args)) } get_did_partitions <- function(data, args){ @@ -303,7 +427,7 @@ pre_process_did <- function(yname, # Put the data in a standard format after some validation cleaned_did <- did_standarization(data, args) - # Partition staggered did into a 2by2 did for faster implementation + # Partition staggered did into a 2x2 DiD for faster implementation did_partitions <- get_did_partitions(cleaned_did$data, cleaned_did$args) # get the augmented arguments useful to perform estimation diff --git a/src/did.so b/src/did.so index f5e048c4d73e906a58b371e96926263feb185a7e..dc3687104b6097e0f5f195aca38ed21e5a6ac3da 100755 GIT binary patch delta 183 zcmV;o07(Cc_ZNuw7qDOk5O}>DQAapBfT*qvQpIgC;e&7nhj0b~hj0c0w{QjnxMBkp zZ|JuxX#;(b1A#l|hpYJmx2yRC`1K$lHAMduM7;2dg znj7M`!|w&41|SrgsB{YcZK&^hfgT=wd4i{d_5}eTchku` lzadl@UN+d6a24FiP+~y9zQ0D*UxRQ4hj0b~hj0c0w{QjnxMBk| zs^qsTX#;(b12wAThpYJmx2yRC`1K&Cyly<=#HaxQxT^J@SDKq6yVk&GG%@=~>bms= z8$Rc^!|w&41|Yxd6*(+@C%Ydy(j2y21>@soh(AQ8Ta9J2`@HyU(D0{&_5}eTeP;~} lYD((L-ig{Q$|KKLX2z`uXB9hJAKK6I=)`2xx1;w3 Date: Wed, 18 Sep 2024 15:46:48 -0400 Subject: [PATCH 04/50] adding new preprocess and DIDparam, still WIP --- R/DIDparams2.R | 92 ++++++++++++ R/att_gt2.R | 344 +++++++++++++++++++++++++++++++++++++++++++ R/pre_process_did2.R | 120 +++++++++------ 3 files changed, 514 insertions(+), 42 deletions(-) create mode 100644 R/DIDparams2.R create mode 100644 R/att_gt2.R diff --git a/R/DIDparams2.R b/R/DIDparams2.R new file mode 100644 index 0000000..b0f4fd7 --- /dev/null +++ b/R/DIDparams2.R @@ -0,0 +1,92 @@ +#' @title DIDparams +#' +#' @description Object to hold did parameters that are passed across functions +#' +#' @inheritParams att_gt +#' @inheritParams pre_process_did +#' @param n The number of observations. This is equal to the +#' number of units (which may be different from the number +#' of rows in a panel dataset). +#' @param nG The number of groups +#' @param nT The number of time periods +#' @param tlist a vector containing each time period +#' @param glist a vector containing each group +#' @param true_repeated_cross_sections Whether or not the data really +#' is repeated cross sections. (We include this because unbalanced +#' panel code runs through the repeated cross sections code) +#' +#' @export +DIDparams2 <- function(did_tensors, args, call=NULL) { + # get the arguments from args + yname <- args$yname + tname <- args$tname + idname <- args$idname + gname <- args$gname + xformla <- args$xformla # formula of covariates + panel <- args$panel + est_method <- args$est_method + bstrap <- args$bstrap + biters <- args$biters + cband <- args$cband + anticipation <- args$anticipation + control_group <- args$control_group + allow_unbalanced_panel <- args$allow_unbalanced_panel + weightsname <- args$weightsname + base_period <- args$base_period + clustervars <- args$clustervars + cores <- args$cores + pl <- args$pl + print_details <- args$print_details + alp <- args$alp + true_repeated_cross_sections <- args$true_repeated_cross_sections + time_periods_count <- args$time_periods_count + time_periods <- args$time_periods + treated_groups_count <- args$treated_groups_count + treated_groups <- args$treated_groups + id_count <- args$id_count + + # get the arguments from did_tensors + outcomes_tensor <- did_tensors$outcomes_tensor + time_invariant_data <- did_tensors$time_invariant_data + cohort_counts <- did_tensors$cohort_counts + covariates <- did_tensors$covariates # matrix of covariates + cluster_vector <- did_tensors$cluster + weights_vector <- did_tensors$weights + + + out <- list(yname=yname, + tname=tname, + idname=idname, + gname=gname, + xformla=xformla, + panel=panel, + est_method=est_method, + bstrap=bstrap, + biters=biters, + cband=cband, + anticipation=anticipation, + control_group=control_group, + allow_unbalanced_panel=allow_unbalanced_panel, + weightsname=weightsname, + base_period=base_period, + clustervars=clustervars, + cores=cores, + pl = pl, + print_details=print_details, + alp=alp, + true_repeated_cross_sections=true_repeated_cross_sections, + time_periods_count=time_periods_count, + time_periods=time_periods, + treated_groups_count=treated_groups_count, + treated_groups=treated_groups, + id_count=id_count, + outcomes_tensor=outcomes_tensor, + time_invariant_data=time_invariant_data, + cohort_counts=cohort_counts, + covariates=covariates, + cluster_vector=cluster_vector, + weights_vector=weights_vector, + call=call) + class(out) <- "DIDparams" + return(out) +} diff --git a/R/att_gt2.R b/R/att_gt2.R new file mode 100644 index 0000000..bc07a12 --- /dev/null +++ b/R/att_gt2.R @@ -0,0 +1,344 @@ +#' @title Group-Time Average Treatment Effects +#' +#' @description `att_gt` computes average treatment effects in DID +#' setups where there are more than two periods of data and allowing for +#' treatment to occur at different points in time and allowing for +#' treatment effect heterogeneity and dynamics. +#' See Callaway and Sant'Anna (2021) for a detailed description. +#' +#' @param yname The name of the outcome variable +#' @param data The name of the data.frame that contains the data +#' @param tname The name of the column containing the time periods +#' @param idname The individual (cross-sectional unit) id name +#' @param gname The name of the variable in `data` that +#' contains the first period when a particular observation is treated. +#' This should be a positive number for all observations in treated groups. +#' It defines which "group" a unit belongs to. It should be 0 for units +#' in the untreated group. +#' @param weightsname The name of the column containing the sampling weights. +#' If not set, all observations have same weight. +#' @param alp the significance level, default is 0.05 +#' @param bstrap Boolean for whether or not to compute standard errors using +#' the multiplier bootstrap. If standard errors are clustered, then one +#' must set `bstrap=TRUE`. Default is `TRUE` (in addition, cband +#' is also by default `TRUE` indicating that uniform confidence bands +#' will be returned. If bstrap is `FALSE`, then analytical +#' standard errors are reported. +#' @param biters The number of bootstrap iterations to use. The default is 1000, +#' and this is only applicable if `bstrap=TRUE`. +#' @param clustervars A vector of variables names to cluster on. At most, there +#' can be two variables (otherwise will throw an error) and one of these +#' must be the same as idname which allows for clustering at the individual +#' level. By default, we cluster at individual level (when `bstrap=TRUE`). +#' @param cband Boolean for whether or not to compute a uniform confidence +#' band that covers all of the group-time average treatment effects +#' with fixed probability `1-alp`. In order to compute uniform confidence +#' bands, `bstrap` must also be set to `TRUE`. The default is +#' `TRUE`. +#' @param print_details Whether or not to show details/progress of computations. +#' Default is `FALSE`. +#' @param pl Whether or not to use parallel processing +#' @param cores The number of cores to use for parallel processing +#' @param est_method the method to compute group-time average treatment effects. The default is "dr" which uses the doubly robust +#' approach in the `DRDID` package. Other built-in methods +#' include "ipw" for inverse probability weighting and "reg" for +#' first step regression estimators. The user can also pass their +#' own function for estimating group time average treatment +#' effects. This should be a function +#' `f(Y1,Y0,treat,covariates)` where `Y1` is an +#' `n` x `1` vector of outcomes in the post-treatment +#' outcomes, `Y0` is an `n` x `1` vector of +#' pre-treatment outcomes, `treat` is a vector indicating +#' whether or not an individual participates in the treatment, +#' and `covariates` is an `n` x `k` matrix of +#' covariates. The function should return a list that includes +#' `ATT` (an estimated average treatment effect), and +#' `inf.func` (an `n` x `1` influence function). +#' The function can return other things as well, but these are +#' the only two that are required. `est_method` is only used +#' if covariates are included. +#' @param xformla A formula for the covariates to include in the +#' model. It should be of the form `~ X1 + X2`. Default +#' is NULL which is equivalent to `xformla=~1`. This is +#' used to create a matrix of covariates which is then passed +#' to the 2x2 DID estimator chosen in `est_method`. +#' @param panel Whether or not the data is a panel dataset. +#' The panel dataset should be provided in long format -- that +#' is, where each row corresponds to a unit observed at a +#' particular point in time. The default is TRUE. When +#' is using a panel dataset, the variable `idname` must +#' be set. When `panel=FALSE`, the data is treated +#' as repeated cross sections. +#' @param allow_unbalanced_panel Whether or not function should +#' "balance" the panel with respect to time and id. The default +#' values if `FALSE` which means that [att_gt()] will drop +#' all units where data is not observed in all periods. +#' The advantage of this is that the computations are faster +#' (sometimes substantially). +#' @param control_group Which units to use the control group. +#' The default is "nevertreated" which sets the control group +#' to be the group of units that never participate in the +#' treatment. This group does not change across groups or +#' time periods. The other option is to set +#' `group="notyettreated"`. In this case, the control group +#' is set to the group of units that have not yet participated +#' in the treatment in that time period. This includes all +#' never treated units, but it includes additional units that +#' eventually participate in the treatment, but have not +#' participated yet. +#' @param anticipation The number of time periods before participating +#' in the treatment where units can anticipate participating in the +#' treatment and therefore it can affect their untreated potential outcomes +#' @param base_period Whether to use a "varying" base period or a +#' "universal" base period. Either choice results in the same +#' post-treatment estimates of ATT(g,t)'s. In pre-treatment +#' periods, using a varying base period amounts to computing a +#' pseudo-ATT in each treatment period by comparing the change +#' in outcomes for a particular group relative to its comparison +#' group in the pre-treatment periods (i.e., in pre-treatment +#' periods this setting computes changes from period t-1 to period +#' t, but repeatedly changes the value of t) +#' +#' A universal base period fixes the base period to always be +#' (g-anticipation-1). This does not compute +#' pseudo-ATT(g,t)'s in pre-treatment periods, but rather +#' reports average changes in outcomes from period t to +#' (g-anticipation-1) for a particular group relative to its comparison +#' group. This is analogous to what is often reported in event +#' study regressions. +#' +#' Using a varying base period results in an estimate of +#' ATT(g,t) being reported in the period immediately before +#' treatment. Using a universal base period normalizes the +#' estimate in the period right before treatment (or earlier when +#' the user allows for anticipation) to be equal to 0, but one +#' extra estimate in an earlier period. +#' +#' @references Callaway, Brantly and Pedro H.C. Sant'Anna. \"Difference-in-Differences with Multiple Time Periods.\" Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. \doi{10.1016/j.jeconom.2020.12.001}, +#' +#' @return an [`MP`] object containing all the results for group-time average +#' treatment effects +#' +#' @details # Examples: +#' +#' **Basic [att_gt()] call:** +#' ```{r, comment = "#>", collapse = TRUE} +#' # Example data +#' data(mpdta) +#' set.seed(09152024) +#' out1 <- att_gt(yname="lemp", +#' tname="year", +#' idname="countyreal", +#' gname="first.treat", +#' xformla=NULL, +#' data=mpdta) +#' summary(out1) +#' ``` +#' +#' **Using covariates:** +#' +#' ```{r, comment = "#>", collapse = TRUE} +#' out2 <- att_gt(yname="lemp", +#' tname="year", +#' idname="countyreal", +#' gname="first.treat", +#' xformla=~lpop, +#' data=mpdta) +#' summary(out2) +#' ``` +#' +#' **Specify comparison units:** +#' +#' ```{r, comment = "#>", collapse = TRUE} +#' out3 <- att_gt(yname="lemp", +#' tname="year", +#' idname="countyreal", +#' gname="first.treat", +#' xformla=~lpop, +#' control_group = "notyettreated", +#' data=mpdta) +#' summary(out3) +#' ``` +#' +#' @export + + +att_gt <- function(yname, + tname, + idname=NULL, + gname, + xformla=NULL, + data, + panel=TRUE, + allow_unbalanced_panel=FALSE, + control_group=c("nevertreated","notyettreated"), + anticipation=0, + weightsname=NULL, + alp=0.05, + bstrap=TRUE, + cband=TRUE, + biters=1000, + clustervars=NULL, + est_method="dr", + base_period="varying", + print_details=FALSE, + pl=FALSE, + cores=1) { + + # this is a DIDparams object + dp <- pre_process_did2(yname=yname, + tname=tname, + idname=idname, + gname=gname, + xformla=xformla, + data=data, + panel=panel, + allow_unbalanced_panel=allow_unbalanced_panel, + control_group=control_group, + anticipation=anticipation, + weightsname=weightsname, + alp=alp, + bstrap=bstrap, + cband=cband, + biters=biters, + clustervars=clustervars, + est_method=est_method, + base_period=base_period, + print_details=print_details, + pl=pl, + cores=cores, + call=match.call() + ) + + #----------------------------------------------------------------------------- + # Compute all ATT(g,t) + #----------------------------------------------------------------------------- + results <- compute.att_gt(dp) + + + # extract ATT(g,t) and influence functions + attgt.list <- results$attgt.list + inffunc <- results$inffunc + + # process results + attgt.results <- process_attgt(attgt.list) + group <- attgt.results$group + att <- attgt.results$att + tt <- attgt.results$tt + + + + # analytical standard errors + # estimate variance + # this is analogous to cluster robust standard errors that + # are clustered at the unit level + + # note to self: this def. won't work with unbalanced panel, + # same with clustered standard errors + # but it is always ignored b/c bstrap has to be true in that case + n <- dp$n + V <- Matrix::t(inffunc)%*%inffunc/n + se <- sqrt(Matrix::diag(V)/n) + + # Zero standard error replaced by NA + se[se <= sqrt(.Machine$double.eps)*10] <- NA + + # if clustering along another dimension...we require using the + # bootstrap (in principle, could come up with analytical standard + # errors here though) + if ( (length(clustervars) > 0) & !bstrap) { + warning("clustering the standard errors requires using the bootstrap, resulting standard errors are NOT accounting for clustering") + } + + # Identify entries of main diagonal V that are zero or NA + zero_na_sd_entry <- unique(which(is.na(se))) + + # bootstrap variance matrix + if (bstrap) { + + bout <- mboot(inffunc, DIDparams=dp, pl=pl, cores=cores) + bres <- bout$bres + + if(length(zero_na_sd_entry)>0) { + se[-zero_na_sd_entry] <- bout$se[-zero_na_sd_entry] + } else { + se <- bout$se + } + } + # Zero standard error replaced by NA + se[se <= sqrt(.Machine$double.eps)*10] <- NA + + + #----------------------------------------------------------------------------- + # compute Wald pre-test + #----------------------------------------------------------------------------- + + # select which periods are pre-treatment + pre <- which(group > tt) + + # Drop group-periods that have variance equal to zero (singularity problems) + if(length(zero_na_sd_entry)>0){ + pre <- pre[!(pre %in% zero_na_sd_entry)] + } + # pseudo-atts in pre-treatment periods + preatt <- as.matrix(att[pre]) + + # covariance matrix of pre-treatment atts + preV <- as.matrix(V[pre,pre]) + + # check if there are actually any pre-treatment periods + if (length(preV) == 0) { + message("No pre-treatment periods to test") + W <- NULL + Wpval <- NULL + } else if(sum(is.na(preV))) { + warning("Not returning pre-test Wald statistic due to NA pre-treatment values") + W <- NULL + Wpval <- NULL + } else if (rcond(preV) <= .Machine$double.eps) { + # singluar covariance matrix for pre-treatment periods + warning("Not returning pre-test Wald statistic due to singular covariance matrix") + W <- NULL + Wpval <- NULL + } else { + # everything is working... + W <- n*t(preatt)%*%solve(preV)%*%preatt + q <- length(pre) # number of restrictions + Wpval <- round(1-pchisq(W,q),5) + } + + + #----------------------------------------------------------------------------- + # compute confidence intervals / bands + #----------------------------------------------------------------------------- + + # critical value from N(0,1), for pointwise + cval <- qnorm(1-alp/2) + + # in order to get uniform confidence bands + # HAVE to use the bootstrap + if (bstrap){ + if (cband) { + # for uniform confidence band + # compute new critical value + # see paper for details + bSigma <- apply(bres, 2, + function(b) (quantile(b, .75, type=1, na.rm = T) - + quantile(b, .25, type=1, na.rm = T))/(qnorm(.75) - qnorm(.25))) + + bSigma[bSigma <= sqrt(.Machine$double.eps)*10] <- NA + + # sup-t confidence band + bT <- apply(bres, 1, function(b) max( abs(b/bSigma), na.rm = TRUE)) + cval <- quantile(bT, 1-alp, type=1, na.rm = T) + if(cval >= 7){ + warning("Simultaneous critical value is arguably `too large' to be realible. This usually happens when number of observations per group is small and/or there is no much variation in outcomes.") + } + } + } + + + # Return this list + return(MP(group=group, t=tt, att=att, V_analytical=V, se=se, c=cval, inffunc=inffunc, n=n, W=W, Wpval=Wpval, alp = alp, DIDparams=dp)) + +} diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index c824942..1361bb7 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -357,18 +357,85 @@ did_standarization <- function(data, args){ # Assign new args regarding number of time periods and groups # How many time periods args$time_periods_count <- length(tlist) + # time periods + args$time_periods <- tlist # How many treated groups args$treated_groups_count <- length(glist) + # treated groups + args$treated_groups <- glist + # id size + args$id_count <- n return(list(data = data, args = args)) } -get_did_partitions <- function(data, args){ - return(did_partitions) -} +get_did_tensors <- function(data, args){ + # TODO; HERE I NEED TO GENERATE THE FOLLOWING ARGUMENTS + # 1. vector of weights -> DONE + # 2. matrix of covariates -> DONE + # 3. Cohort counts -> DONE + # 5. data.table with time-invariant variables: tname, gname, idname, xformla -> DONE + # 6. List of outcomes overtime. Each vector has to be dimension "n" -> DONE + # 7. Vector of cluster variable if any -> DONE + + # Getting the outcomes tensor: a vector a outcome variables per time period of dimension id_count x 1 x time_periods_count + outcomes_tensor <- list() + if(!args$allow_unbalanced_panel){ + for(time in args$time_periods){ + # creating buckets of outcomes of size from 1 to id_size, id_size+1 to 2*id_size, etc. + start <- (time - 1) * args$id_count + 1 + end <- time * args$id_count + outcomes_tensor[[time]] <- data[seq(start,end), get(args$yname)] + } + } else { + for(t in args$time_periods){ + outcome_vector_time <- rep(NA, args$id_count) # fill vector with NAs + data_time <- data[(get(args$tname) == t), get(args$idname)] # data observed in time t + outcome_vector_time[data_time] <- data[get(args$tname) == t, get(args$yname)] + outcomes_tensor[[t]] <- outcome_vector_time + } + } -augment_args <- function(did_partitions, args){ - return(args) + # Getting the time invariant data + time_invariant_cols <- c(args$idname, args$gname, "weights", args$clustervars) + if(!args$allow_unbalanced_panel){ + # We can do this filtering because the data is already sorted appropriately + invariant_data <- data[1:args$id_count] + } else { + # get the first observation for each unit + invariant_data <- data[data[, .I[1], by = get(args$idname)]$V1] + # order by idname + setorderv(invariant_data, c(args$idname), c(1)) + } + + # Get cohort counts + cohorts <- c(args$treated_groups, Inf) + cohort_counts <- invariant_data[, .(cohort_size = .N) , by = get(args$gname)] + + # Get covariates if any + if(args$xformla == ~1){ + covariates <- NA + } else { + covariates <- as.data.table(model.frame(args$xformla, data = invariant_data, na.action = na.pass)) + } + + # Get the cluster variable only + if(!is.null(args$clustervars)){ + cluster <- invariant_data[, .SD, .SDcols = args$clustervars] |> unlist() + } else { + cluster <- NA + } + + # Get the weights only + weights <- invariant_data[, .SD, .SDcols = "weights"] |> unlist() + + # Gather all the arguments to return + return(list(outcomes_tensor = outcomes_tensor, + time_invariant_data = invariant_data, + cohort_counts = cohort_counts, + covariates = covariates, + cluster = cluster, + weights = weights)) } #' @title Process `did` Function Arguments @@ -383,7 +450,7 @@ augment_args <- function(did_partitions, args){ #' @return a [`DIDparams`] object #' #' @export -pre_process_did <- function(yname, +pre_process_did2 <- function(yname, tname, idname, gname, @@ -413,8 +480,8 @@ pre_process_did <- function(yname, } # gathering all the arguments except data - args_names <- setdiff(names(formlas()), "data") - args <- mget(arg_names, sys.frame(sys.nframe())) + args_names <- setdiff(names(formals()), "data") + args <- mget(args_names, sys.frame(sys.nframe())) # run error checking on arguments validate_args(args, data) @@ -428,41 +495,10 @@ pre_process_did <- function(yname, cleaned_did <- did_standarization(data, args) # Partition staggered did into a 2x2 DiD for faster implementation - did_partitions <- get_did_partitions(cleaned_did$data, cleaned_did$args) - - # get the augmented arguments useful to perform estimation - args <- augment_args(did_partitions, cleaned_did$args) + did_tensors <- get_did_tensors(cleaned_did$data, cleaned_did$args) # store parameters for passing around later + dp <- DIDparams2(did_tensors, cleaned_did$args, call=call) # TODO; we need to change the arguments and returns of DIDparams() - dp <- DIDparams(did_partitions, args) - dp <- DIDparams(yname=yname, - tname=tname, - idname=idname, - gname=gname, - xformla=xformla, - data=as.data.frame(data), - control_group=control_group, - anticipation=anticipation, - weightsname=weightsname, - alp=alp, - bstrap=bstrap, - biters=biters, - clustervars=clustervars, - cband=cband, - print_details=print_details, - pl=pl, - cores=cores, - est_method=est_method, - base_period=base_period, - panel=panel, - true_repeated_cross_sections=true_repeated_cross_sections, - n=n, - nG=nG, - nT=nT, - tlist=tlist, - glist=glist, - call=call) - - + return(dp) } From a222c49b19188fd4c74b916614f7969861af9f3a Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Wed, 18 Sep 2024 15:48:50 -0400 Subject: [PATCH 05/50] init new compute.att_gt function, still WIP --- R/compute.att_gt2.R | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 R/compute.att_gt2.R diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R new file mode 100644 index 0000000..64edf46 --- /dev/null +++ b/R/compute.att_gt2.R @@ -0,0 +1,23 @@ +#' @title Compute Group-Time Average Treatment Effects +#' +#' @description `compute.att_gt` does the main work for computing +#' multiperiod group-time average treatment effects +#' +#' @param dp A DIDparams object +#' +#' @return a list with length equal to the number of groups times the +#' number of time periods; each element of the list contains an +#' object that contains group-time average treatment effect as well +#' as which group it is for and which time period it is for. It also exports +#' the influence function which is used externally to compute +#' standard errors. +#' +#' @keywords internal +#' +#' @export +compute.att_gt <- function(dp) { + + # Do code here + + return(list(attgt.list=attgt.list, inffunc=inffunc)) +} From 4a1012acca177be60993b4c2294c03f4b2ac29fc Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Fri, 20 Sep 2024 21:36:02 -0400 Subject: [PATCH 06/50] adding run_att_gt_estimation --- R/compute.att_gt2.R | 90 +++++++++++++++++++++++++++++++++++++++++++- R/pre_process_did2.R | 1 + 2 files changed, 89 insertions(+), 2 deletions(-) diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index 64edf46..15839d8 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -1,7 +1,87 @@ +get_pret <- function(g,t, base_period, anticipation){ + if(base_period == "universal"){ + pret <- g - 1 - anticipation + } else { + pret <- ifelse(t >= g, g - 1 - anticipation, t - 1) + } + + return(pret) +} + +# get the cohort for the current g,t values +get_did_cohort_index <- function(group, time, pret, dp){ + # return a vector of dimension id_size with 1, 0 or NA values + treated_groups <- dp$treated_groups + # based on control_group option + min_control_group <- ifelse(dp$control_group == "notyettreated", max(time, pret) + dp$anticipation + 1, Inf) + max_control_group <- ifelse(dp$control_group == "notyettreated", max(treated_groups), Inf) + + # select the DiD cohort + did_cohort_index <- rep(NA, dp$id_count) + start_control <- dp$cohort_counts[cohort < min_control_group, sum(cohort_size)]+1 + end_control <- dp$cohort_counts[cohort <= max_control_group, sum(cohort_size)] + index <- which(dp$cohort_counts[, cohort] == group) + start_treat <- ifelse(index == 1, 1, dp$cohort_counts[1:(index-1), sum(cohort_size)]+1) + end_treat <- dp$cohort_counts[1:index, sum(cohort_size)] + did_cohort_index[start_control:end_control] <- 0 + did_cohort_index[start_treat:end_treat] <- 1 + + return(did_cohort) +} + +# Wrapper to run DRDID package +run_DRDID <- function(){ + return(NULL) + +} + + #' @title Compute Group-Time Average Treatment Effects #' -#' @description `compute.att_gt` does the main work for computing +#' @description `run_att_gt_estimation` does the main work for computing #' multiperiod group-time average treatment effects +#' @param gt A numeric vector of the group and time period coming from a list of (g,t) cells +#' @param dp A DIDparams object +#' +#' @return a list with the gt cell and the results after performing estimation +#' +#' @keywords internal +#' +#' @export +run_att_gt_estimation <- function(gt, dp){ + # get the current g,t values + g <- gt[1] + t <- gt[2] + pret <- get_pret(g, t, dp$base_period, dp$anticipation) + + # if we are in period (g-1) or base period out of bounds, normalize results to be equal to NULL + # and break without computing anything + if(t == pret | !pret %in% dp$time_periods){ + return(NULL) + } + + # get treatment and control group + did_cohort_index <- get_did_cohort_index(g, t, pret, dp) + # In case of not treatment and control group in the cohort, return NULL + if(all(is.na(did_cohort_index))){ + return(NULL) + } + + # Get the matrix of covariates + covariates <- dp$covariates + cohort_data <- data.table(did_cohort_index, dp$outcomes_tensor[[t]], dp$outcomes_tensor[[pret]], dp$weights_vector) + names(cohort_data) <- c("D", "y1", "y0", "i.weights") + did_result <- run_DRDID(cohort_data, covariates) + return(did_result) + +} + + + +#' @title Compute Group-Time Average Treatment Effects +#' +#' @description `compute.att_gt` does the (g,t) cell and send it to estimation, +#' then do all the post process after estimation #' #' @param dp A DIDparams object #' @@ -17,7 +97,13 @@ #' @export compute.att_gt <- function(dp) { - # Do code here + # TODO; do we need the object "data" here if we already have the tensors?? + treated_groups <- dp$treated_groups + time_periods <- dp$time_periods + # Get (g,t) cells to perform computations. This replace the nested for-loop. + gt_cells <- expand.grid(g = treated_groups, t = time_periods, stringsAsFactors = FALSE) |> transpose() |> as.list() + # Running estimation + gt_results <- lapply(gt_cells, run_att_gt_estimation, dp) return(list(attgt.list=attgt.list, inffunc=inffunc)) } diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index 1361bb7..fc604d2 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -411,6 +411,7 @@ get_did_tensors <- function(data, args){ # Get cohort counts cohorts <- c(args$treated_groups, Inf) cohort_counts <- invariant_data[, .(cohort_size = .N) , by = get(args$gname)] + names(cohort_counts)[1] <- "cohort" # changing the name # Get covariates if any if(args$xformla == ~1){ From 713e3aaf8427cdecadf7c0ed70e6ff54524772cf Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Fri, 20 Sep 2024 21:42:41 -0400 Subject: [PATCH 07/50] small fix in att.gt estimation --- R/compute.att_gt2.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index 15839d8..9ad70ee 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -71,7 +71,7 @@ run_att_gt_estimation <- function(gt, dp){ covariates <- dp$covariates cohort_data <- data.table(did_cohort_index, dp$outcomes_tensor[[t]], dp$outcomes_tensor[[pret]], dp$weights_vector) names(cohort_data) <- c("D", "y1", "y0", "i.weights") - did_result <- run_DRDID(cohort_data, covariates) + did_result <- run_DRDID(cohort_data, covariates, dp) return(did_result) } From 3964e89b16ea27763621c9980b54a3abe3aa230a Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Sat, 21 Sep 2024 18:57:36 -0400 Subject: [PATCH 08/50] estimation for panel data --- R/compute.att_gt2.R | 85 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 79 insertions(+), 6 deletions(-) diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index 9ad70ee..a80c055 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -18,20 +18,93 @@ get_did_cohort_index <- function(group, time, pret, dp){ # select the DiD cohort did_cohort_index <- rep(NA, dp$id_count) + # getting the index to get units who will participate in the estimation for the (g,t) cell. start_control <- dp$cohort_counts[cohort < min_control_group, sum(cohort_size)]+1 end_control <- dp$cohort_counts[cohort <= max_control_group, sum(cohort_size)] index <- which(dp$cohort_counts[, cohort] == group) start_treat <- ifelse(index == 1, 1, dp$cohort_counts[1:(index-1), sum(cohort_size)]+1) end_treat <- dp$cohort_counts[1:index, sum(cohort_size)] + # set the cohort index; .C = 0 and .G = 1 did_cohort_index[start_control:end_control] <- 0 did_cohort_index[start_treat:end_treat] <- 1 - return(did_cohort) + return(did_cohort_index) } # Wrapper to run DRDID package -run_DRDID <- function(){ - return(NULL) +run_DRDID <- function(cohort_data, covariates, dp){ + + if(dp$panel){ + # -------------------------------------- + # Panel Data + # -------------------------------------- + + # still total number of units (not just included in G or C) + n <- cohort_data[, .N] + + # pick up the indices for units that will be used to compute ATT(g,t) + valid_obs <- which(cohort_data[, !is.na(D)]) + cohort_data <- cohort_data[valid_obs] + covariates <- covariates[valid_obs,] + # add the intercept + # Check if the ".intercept" name is already in the covariates matrix + #if(".intercept" %in% names(covariates)){stop("did is trying to impute a new column .intercept, but this already exists. Please check your dataset")} + #covariates[, .intercept := -1L] + # coerce to a matrix + covariates <- as.matrix(covariates) + + # num obs. for computing ATT(g,t) + n1 <- cohort_data[, .N] + + #----------------------------------------------------------------------------- + # code for actually computing ATT(g,t) + #----------------------------------------------------------------------------- + + # preparing vectors + Ypost <- cohort_data[, y1] + Ypre <- cohort_data[, y0] + w <- cohort_data[, i.weights] + G <- cohort_data[, D] + + if (inherits(dp$est_method, "function")) { + # user-specified function + attgt <- est_method(y1=Ypost, y0=Ypre, + D=G, + covariates=covariates, + i.weights=w, + inffunc=TRUE) + } else if (dp$est_method == "ipw") { + # inverse-probability weights + attgt <- DRDID::std_ipw_did_panel(Ypost, Ypre, G, + covariates=covariates, + i.weights=w, + boot=FALSE, inffunc=TRUE) + } else if (dp$est_method == "reg") { + # regression + attgt <- DRDID::reg_did_panel(Ypost, Ypre, G, + covariates=covariates, + i.weights=w, + boot=FALSE, inffunc=TRUE) + } else { + # doubly robust, this is default + attgt <- DRDID::drdid_panel(Ypost, Ypre, G, + covariates=covariates, + i.weights=w, + boot=FALSE, inffunc=TRUE) + } + + # adjust influence function to account for only using + # subgroup to estimate att(g,t) + attgt$att.inf.func <- (n/n1)*attgt$att.inf.func + + } else { + # -------------------------------------- + # Repeated Cross-Section + # -------------------------------------- + + } + + return(attgt = attgt) } @@ -76,8 +149,6 @@ run_att_gt_estimation <- function(gt, dp){ } - - #' @title Compute Group-Time Average Treatment Effects #' #' @description `compute.att_gt` does the (g,t) cell and send it to estimation, @@ -102,8 +173,10 @@ compute.att_gt <- function(dp) { time_periods <- dp$time_periods # Get (g,t) cells to perform computations. This replace the nested for-loop. gt_cells <- expand.grid(g = treated_groups, t = time_periods, stringsAsFactors = FALSE) |> transpose() |> as.list() - # Running estimation + # Running estimation using run_att_gt_estimation() function gt_results <- lapply(gt_cells, run_att_gt_estimation, dp) + # Post processing creating attgt.list and inffunc + return(list(attgt.list=attgt.list, inffunc=inffunc)) } From 9f59bfa0e963bc72727696a0740b61e7de20f259 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Sun, 22 Sep 2024 00:13:41 -0400 Subject: [PATCH 09/50] just panel data --- R/compute.att_gt2.R | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index a80c055..f206a38 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -101,6 +101,25 @@ run_DRDID <- function(cohort_data, covariates, dp){ # -------------------------------------- # Repeated Cross-Section # -------------------------------------- + # still total number of units (not just included in G or C) + n <- cohort_data[, .N] + + # pick up the indices for units that will be used to compute ATT(g,t) + valid_obs <- which(cohort_data[, !is.na(D)]) + cohort_data <- cohort_data[valid_obs] + covariates <- covariates[valid_obs,] + # add the intercept + # Check if the ".intercept" name is already in the covariates matrix + #if(".intercept" %in% names(covariates)){stop("did is trying to impute a new column .intercept, but this already exists. Please check your dataset")} + #covariates[, .intercept := -1L] + # coerce to a matrix + covariates <- as.matrix(covariates) + + # num obs. for computing ATT(g,t) + n1 <- cohort_data[, .N] + + # TODO; IMPLEMENT REPEATED CROSS-SECTION + attgt <- NULL } From 5ed0bae039e676f8cc0997e837a9b614faf70e74 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Sun, 22 Sep 2024 17:03:51 -0400 Subject: [PATCH 10/50] adding new for-loop --- R/compute.att_gt2.R | 67 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 61 insertions(+), 6 deletions(-) diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index f206a38..6510b0a 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -95,7 +95,9 @@ run_DRDID <- function(cohort_data, covariates, dp){ # adjust influence function to account for only using # subgroup to estimate att(g,t) - attgt$att.inf.func <- (n/n1)*attgt$att.inf.func + inf_func_vector <- rep(0, n) + inf_func_not_na <- (n/n1)*attgt$att.inf.func + inf_func_vector[valid_obs] <- inf_func_not_na } else { # -------------------------------------- @@ -123,7 +125,7 @@ run_DRDID <- function(cohort_data, covariates, dp){ } - return(attgt = attgt) + return(list(att = attgt$ATT, inf_func = inf_func_vector)) } @@ -144,18 +146,22 @@ run_att_gt_estimation <- function(gt, dp){ # get the current g,t values g <- gt[1] t <- gt[2] + cat("\n Evaluation G =", g, ";T =", t) pret <- get_pret(g, t, dp$base_period, dp$anticipation) # if we are in period (g-1) or base period out of bounds, normalize results to be equal to NULL # and break without computing anything if(t == pret | !pret %in% dp$time_periods){ + cat("\n Skipping G", g, "T", t, "as base period is out of bounds or equal to treatment period") return(NULL) } # get treatment and control group did_cohort_index <- get_did_cohort_index(g, t, pret, dp) # In case of not treatment and control group in the cohort, return NULL - if(all(is.na(did_cohort_index))){ + valid_did_cohort <- any(did_cohort_index == 1) & any(did_cohort_index == 0) + if(!isTRUE(valid_did_cohort)){ + cat("\n Skipping G =", g, "T =", t, "as no treatment group or control group found") return(NULL) } @@ -163,7 +169,13 @@ run_att_gt_estimation <- function(gt, dp){ covariates <- dp$covariates cohort_data <- data.table(did_cohort_index, dp$outcomes_tensor[[t]], dp$outcomes_tensor[[pret]], dp$weights_vector) names(cohort_data) <- c("D", "y1", "y0", "i.weights") - did_result <- run_DRDID(cohort_data, covariates, dp) + + # run estimation + did_result <- tryCatch(run_DRDID(cohort_data, covariates, dp), + error = function(e) { + warning("\n Error in computing internal 2x2 DiD for G = ", g, ", T = ", t, ":", e$message) + return(NULL) + }) return(did_result) } @@ -188,12 +200,55 @@ run_att_gt_estimation <- function(gt, dp){ compute.att_gt <- function(dp) { # TODO; do we need the object "data" here if we already have the tensors?? + n <- dp$id_count # Total number of units treated_groups <- dp$treated_groups time_periods <- dp$time_periods # Get (g,t) cells to perform computations. This replace the nested for-loop. - gt_cells <- expand.grid(g = treated_groups, t = time_periods, stringsAsFactors = FALSE) |> transpose() |> as.list() + gt_cells <- expand.grid(g = treated_groups, t = time_periods, stringsAsFactors = FALSE) + gt_cells <- gt_cells[order(gt_cells$g, gt_cells$t), ] + gt_cells <- split(gt_cells, seq(nrow(gt_cells))) + total_cols <- length(gt_cells) + + # Initialize outputs + attgt.list <- list() + inffunc <- Matrix::Matrix(0, nrow = n, ncol = total_cols, sparse = TRUE) + counter <- 1 + # Running estimation using run_att_gt_estimation() function - gt_results <- lapply(gt_cells, run_att_gt_estimation, dp) + #gt_results <- lapply(gt_cells, run_att_gt_estimation, dp) + # Run estimation for each (g,t) cell + for (i in seq_along(gt_cells)) { + gt_cell <- gt_cells[[i]] + g <- gt_cell$g + t <- gt_cell$t + + # Run estimation + gt_result <- run_att_gt_estimation(c(g, t), dp) + + # Compute post-treatment indicator + post.treat <- as.integer(g <= t) + + if (is.null(gt_result) || is.null(gt_result$att)) { + # Estimation was skipped or failed + attgt.list[[counter]] <- list(att=NA, group=g, year=t, post=post.treat) + inffunc[, counter] <- rep(0, n) # Fill with NA + } else { + attgt <- gt_result$att + att_inf_func_full <- gt_result$inf_func + + # Handle NaN ATT + if (is.nan(attgt)) { + attgt <- NA + att_inf_func_full <- rep(0, n) + } + + # Save ATT and influence function + attgt.list[[counter]] <- list(att=attgt, group=g, year=t, post=post.treat) + inffunc[, counter] <- att_inf_func_full + } + + counter <- counter + 1 + } # Post processing creating attgt.list and inffunc From 5d397cc872f5d4e3a694b42cf527756a1093c78d Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Mon, 23 Sep 2024 22:03:29 -0400 Subject: [PATCH 11/50] adding compute.att_gt for panel data --- DESCRIPTION | 4 +- NAMESPACE | 8 +- R/att_gt2.R | 20 +-- R/compute.att_gt2.R | 58 ++++--- R/pre_process_did2.R | 112 ++++++------- R/zzz.R | 4 - man/DIDparams2.Rd | 30 ++++ man/aggte.Rd | 111 ++++++------- man/att_gt.Rd | 112 +++++++------ man/att_gt2.Rd | 293 +++++++++++++++++++++++++++++++++++ man/compute.att_gt2.Rd | 24 +++ man/pre_process_did.Rd | 33 +--- man/pre_process_did2.Rd | 170 ++++++++++++++++++++ man/run_att_gt_estimation.Rd | 21 +++ src/RcppExports.cpp | 46 ------ src/RcppExports.o | Bin 576824 -> 0 bytes src/did.so | Bin 392072 -> 0 bytes src/sanity_check.cpp | 48 ------ src/sanity_check.o | Bin 707800 -> 0 bytes 19 files changed, 743 insertions(+), 351 deletions(-) create mode 100644 man/DIDparams2.Rd create mode 100644 man/att_gt2.Rd create mode 100644 man/compute.att_gt2.Rd create mode 100644 man/pre_process_did2.Rd create mode 100644 man/run_att_gt_estimation.Rd delete mode 100644 src/RcppExports.cpp delete mode 100644 src/RcppExports.o delete mode 100755 src/did.so delete mode 100644 src/sanity_check.cpp delete mode 100644 src/sanity_check.o diff --git a/DESCRIPTION b/DESCRIPTION index 60cde69..13c51ee 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -21,9 +21,7 @@ Imports: tidyr, parglm (>= 0.1.7), data.table (>= 1.15.4), - Rcpp (>= 1.0.13) -LinkingTo: - Rcpp (>= 1.0.13) + dreamerr (>= 1.4.0) Roxygen: list(markdown = TRUE) RoxygenNote: 7.3.2 VignetteBuilder: knitr diff --git a/NAMESPACE b/NAMESPACE index ed2deeb..b6d4074 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -13,13 +13,16 @@ S3method(tidy,AGGTEobj) S3method(tidy,MP) export(AGGTEobj) export(DIDparams) +export(DIDparams2) export(MP) export(MP.TEST) export(aggte) export(att_gt) +export(att_gt2) export(build_sim_dataset) export(compute.aggte) export(compute.att_gt) +export(compute.att_gt2) export(conditional_did_pretest) export(get_wide_data) export(ggdid) @@ -28,8 +31,10 @@ export(gplot) export(indicator) export(mboot) export(pre_process_did) +export(pre_process_did2) export(process_attgt) export(reset.sim) +export(run_att_gt_estimation) export(sim) export(splot) export(test.mboot) @@ -38,13 +43,12 @@ export(trimmer) export(validate_args) import(BMisc) import(data.table) +import(dreamerr) import(ggplot2) import(ggpubr) import(stats) import(utils) -importFrom(Rcpp,sourceCpp) importFrom(generics,glance) importFrom(generics,tidy) importFrom(methods,is) importFrom(tidyr,gather) -useDynLib(did) diff --git a/R/att_gt2.R b/R/att_gt2.R index bc07a12..9b9642e 100644 --- a/R/att_gt2.R +++ b/R/att_gt2.R @@ -163,7 +163,7 @@ #' @export -att_gt <- function(yname, +att_gt2 <- function(yname, tname, idname=NULL, gname, @@ -186,7 +186,7 @@ att_gt <- function(yname, cores=1) { # this is a DIDparams object - dp <- pre_process_did2(yname=yname, + dp2 <- pre_process_did2(yname=yname, tname=tname, idname=idname, gname=gname, @@ -213,15 +213,15 @@ att_gt <- function(yname, #----------------------------------------------------------------------------- # Compute all ATT(g,t) #----------------------------------------------------------------------------- - results <- compute.att_gt(dp) + results2 <- compute.att_gt2(dp2) # extract ATT(g,t) and influence functions - attgt.list <- results$attgt.list - inffunc <- results$inffunc + attgt.list2 <- results2$attgt.list + inffunc2 <- results2$inffunc # process results - attgt.results <- process_attgt(attgt.list) + attgt.results <- process_attgt(attgt.list2) group <- attgt.results$group att <- attgt.results$att tt <- attgt.results$tt @@ -236,8 +236,8 @@ att_gt <- function(yname, # note to self: this def. won't work with unbalanced panel, # same with clustered standard errors # but it is always ignored b/c bstrap has to be true in that case - n <- dp$n - V <- Matrix::t(inffunc)%*%inffunc/n + n <- dp2$id_count + V <- Matrix::t(inffunc2)%*%inffunc2/n se <- sqrt(Matrix::diag(V)/n) # Zero standard error replaced by NA @@ -256,7 +256,7 @@ att_gt <- function(yname, # bootstrap variance matrix if (bstrap) { - bout <- mboot(inffunc, DIDparams=dp, pl=pl, cores=cores) + bout <- mboot(inffunc2, DIDparams=dp2, pl=pl, cores=cores) bres <- bout$bres if(length(zero_na_sd_entry)>0) { @@ -339,6 +339,6 @@ att_gt <- function(yname, # Return this list - return(MP(group=group, t=tt, att=att, V_analytical=V, se=se, c=cval, inffunc=inffunc, n=n, W=W, Wpval=Wpval, alp = alp, DIDparams=dp)) + return(MP(group=group, t=tt, att=att, V_analytical=V, se=se, c=cval, inffunc=inffunc2, n=n, W=W, Wpval=Wpval, alp = alp, DIDparams=dp2)) } diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index 6510b0a..da20e93 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -14,7 +14,8 @@ get_did_cohort_index <- function(group, time, pret, dp){ treated_groups <- dp$treated_groups # based on control_group option min_control_group <- ifelse(dp$control_group == "notyettreated", max(time, pret) + dp$anticipation + 1, Inf) - max_control_group <- ifelse(dp$control_group == "notyettreated", max(treated_groups), Inf) + #max_control_group <- ifelse(dp$control_group == "notyettreated", max(treated_groups), Inf) + max_control_group <- Inf # always include the never treated units # select the DiD cohort did_cohort_index <- rep(NA, dp$id_count) @@ -197,7 +198,7 @@ run_att_gt_estimation <- function(gt, dp){ #' @keywords internal #' #' @export -compute.att_gt <- function(dp) { +compute.att_gt2 <- function(dp) { # TODO; do we need the object "data" here if we already have the tensors?? n <- dp$id_count # Total number of units @@ -206,19 +207,12 @@ compute.att_gt <- function(dp) { # Get (g,t) cells to perform computations. This replace the nested for-loop. gt_cells <- expand.grid(g = treated_groups, t = time_periods, stringsAsFactors = FALSE) gt_cells <- gt_cells[order(gt_cells$g, gt_cells$t), ] - gt_cells <- split(gt_cells, seq(nrow(gt_cells))) - total_cols <- length(gt_cells) + total_cols <- nrow(gt_cells) - # Initialize outputs - attgt.list <- list() - inffunc <- Matrix::Matrix(0, nrow = n, ncol = total_cols, sparse = TRUE) - counter <- 1 # Running estimation using run_att_gt_estimation() function - #gt_results <- lapply(gt_cells, run_att_gt_estimation, dp) - # Run estimation for each (g,t) cell - for (i in seq_along(gt_cells)) { - gt_cell <- gt_cells[[i]] + # Helper function for processing each (g,t) pair + process_gt <- function(gt_cell, idx) { g <- gt_cell$g t <- gt_cell$t @@ -229,28 +223,42 @@ compute.att_gt <- function(dp) { post.treat <- as.integer(g <= t) if (is.null(gt_result) || is.null(gt_result$att)) { - # Estimation was skipped or failed - attgt.list[[counter]] <- list(att=NA, group=g, year=t, post=post.treat) - inffunc[, counter] <- rep(0, n) # Fill with NA + # Estimation failed or was skipped + inffunc_updates <- rep(0, n) + gt_result <- list(att = 0, group = g, year = t, post = post.treat, inffunc_updates = inffunc_updates) + return(gt_result) + } else { - attgt <- gt_result$att - att_inf_func_full <- gt_result$inf_func + att <- gt_result$att + inf_func <- gt_result$inf_func # Handle NaN ATT - if (is.nan(attgt)) { - attgt <- NA - att_inf_func_full <- rep(0, n) + if (is.nan(att)) { + att <- 0 + inf_func <- rep(0, n) } # Save ATT and influence function - attgt.list[[counter]] <- list(att=attgt, group=g, year=t, post=post.treat) - inffunc[, counter] <- att_inf_func_full + inffunc_updates <- inf_func + gt_result <- list(att = att, group = g, year = t, post = post.treat, inffunc_updates = inffunc_updates) + return(gt_result) } + } + + # run the estimation for each (g,t) pair with process_gt + gt_results <- lapply(seq_len(total_cols), function(idx) { + process_gt(gt_cells[idx, ], idx) + }) - counter <- counter + 1 + # Post processing: Apply the updates to the sparse matrix in one shot + n_rows <- length(gt_results[[1]]$inffunc_updates) + update_inffunc <- data.table(matrix(NA_real_, nrow = n_rows, ncol = length(gt_results))) + for (i in seq_along(gt_results)) { + update_inffunc[[i]] <- gt_results[[i]]$inffunc_updates } - # Post processing creating attgt.list and inffunc + # Update the sparse matrix with the values collected + inffunc <- as(Matrix::Matrix(as.matrix(update_inffunc), sparse = TRUE), "CsparseMatrix") - return(list(attgt.list=attgt.list, inffunc=inffunc)) + return(list(attgt.list=gt_results, inffunc=inffunc)) } diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index fc604d2..05f40f3 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -4,79 +4,72 @@ #' @param args list of arguments to validate #' #' @return nothing, but throws an error if any of the arguments are not valid -#' +#' @import dreamerr #' @export #' @noRd validate_args <- function(args, data){ + data_names <- names(data) + # ---------------------- Error Checking ---------------------- # Flag for control group types - if(!(args$control_group %in% c("nevertreated", "notyettreated"))){ - stop("control_group must be either 'nevertreated' or 'notyettreated'") - } + control_group_message <- "control_group must be either 'nevertreated' or 'notyettreated'" + dreamerr::check_set_arg(args$control_group, "match", .choices = c("nevertreated", "notyettreated"), .message = control_group_message, .up = 1) - # Flag for yname - if (!is.element(args$yname, base::colnames(data))) { - stop("yname = ",yname, " could not be found in the data provided.") - } + # Flag for tname, gname, yname + name_message <- "__ARG__ must be a character scalar and a name of a column from the dataset." + dreamerr::check_set_arg(args$tname, args$gname, args$yname, "match", .choices = data_names, .message = name_message, .up = 1) - # Flag for tname - if (!is.element(args$tname, base::colnames(data))) { - stop("tname = ",tname, " could not be found in the data provided.") - } + # Flag for clustervars and weightsname + checkvar_message <- "__ARG__ must be NULL or a character scalar if a name of columns from the dataset." + dreamerr::check_set_arg(args$weightsname, args$clustervars, "NULL | match", .choices = data_names, .message = checkvar_message, .up = 1) # check if times periods are numeric - if (!all(sapply(data[, get(args$tname)], is.integer))) { - stop("tname = ",tname, " is not integer. Please convert it") - } - - # Flag for gname - if ( !is.element(gname, base::colnames(data))) { - stop("gname = ",gname, " could not be found in the data provided.") - } + if(!data[, is.integer(get(args$tname))]){stop("tname = ",args$tname, " is not integer. Please convert it")} + # if (!all(sapply(data[, get(args$tname)], is.integer))) { + # stop("tname = ",tname, " is not integer. Please convert it") + # } # Check if gname is numeric - if (!all(sapply(data[, get(args$gname)], is.numeric))) { - stop("gname = ",gname, " is not numeric. Please convert it") - } + if(!data[, is.numeric(get(args$gname))]){stop("gname = ",args$gname, " is not numeric. Please convert it")} + # if (!all(sapply(data[, get(args$gname)], is.numeric))) { + # stop("gname = ",gname, " is not numeric. Please convert it") + # } # Flag for idname if(!is.null(args$idname)){ # Check if idname is in the data - if ( !is.element(args$idname, base::colnames(data))) { - stop("idname = ",idname, " could not be found in the data provided.") - } + name_message <- "__ARG__ must be a character scalar and a name of a column from the dataset." + dreamerr::check_set_arg(args$idname, "match", .choices = data_names, .message = name_message, .up = 1) # check if idname is integer - if (!all(sapply(data[, get(args$idname)], is.integer))) { - stop("data[, idname] must be integer Please convert it.") - } + if(!data[, is.integer(get(args$idname))]){stop("idname = ",args$idname, " is not integer. Please convert it")} + # if (!all(sapply(data[, get(args$idname)], is.integer))) { + # stop("data[, idname] must be integer Please convert it.") + # } # Check if gname is unique by idname: irreversibility of the treatment - checkTreatmentUniqueness(data, args$idname, args$gname) - } - - - # Check if any combination of idname and tname is duplicated - n_id_year = anyDuplicated(data[, .(args$idname, args$tname)]) - # If any combination is duplicated, stop execution and throw an error - if (n_id_year > 0) { - stop("The value of idname must be unique (by tname)") - } + #checkTreatmentUniqueness(data, args$idname, args$gname) + check_treatment_uniqueness <- data[, .(constant = all(get(args$gname)[1] == get(args$gname))), by = get(args$idname)][, all(constant)] + if (!check_treatment_uniqueness) { + stop("The value of gname (treatment variable) must be the same across all periods for each particular unit. The treatment must be irreversible.") + } - # Flag for weightsname - if(!is.null(args$weightsname)){ - if (!is.element(args$weightsname, base::colnames(data))) { - stop("weightsname = ", weightsname, " could not be found in the data provided.") + # Check if any combination of idname and tname is duplicated + n_id_year = anyDuplicated(data[, .(args$idname, args$tname)]) + # If any combination is duplicated, stop execution and throw an error + if (n_id_year > 0) { + stop("The value of idname must be unique (by tname). Some units are observed more than once in a period.") } } - # Flag for based period: not in c("universal", "varying"), stop - if (!args$base_period %in% c("universal", "varying")) { - stop("base_period must be either 'universal' or 'varying'.") - } + base_period_message <- "base_period must be either 'universal' or 'varying'." + dreamerr::check_set_arg(args$base_period, "match", .choices = c("universal", "varying"), .message = base_period_message, .up = 1) + # if (!args$base_period %in% c("universal", "varying")) { + # stop("base_period must be either 'universal' or 'varying'.") + # } # Flags for cluster variable if (!is.null(args$clustervars)) { @@ -85,11 +78,6 @@ validate_args <- function(args, data){ args$clustervars <- setdiff(args$clustervars, args$idname) } - # flag if cluster variable is not in dataset - if (!is.element(args$cluster, base::colnames(data))) { - stop("clustervars = ",cluster, " could not be found in the data provided. Please check your arguments.") - } - # check if user is providing more than 2 cluster variables (different than idname) if (length(args$cluster) > 1) { stop("You can only provide 1 cluster variable additionally to the one provided in idname. Please check your arguments.") @@ -106,7 +94,7 @@ validate_args <- function(args, data){ } } - # Check if anticipation is numeric + # Check if anticipation is numeric using if (!is.numeric(args$anticipation)) { stop("anticipation must be numeric. Please convert it.") } @@ -116,11 +104,6 @@ validate_args <- function(args, data){ stop("anticipation must be positive. Please check your arguments.") } - # Check if anticipation is integer - if (!is.integer(args$anticipation)) { - stop("anticipation must be an integer. Please check your arguments.") - } - } did_standarization <- function(data, args){ @@ -197,7 +180,7 @@ did_standarization <- function(data, args){ # Check for groups treated in the first period and drop them # identify groups treated in the first period - data[, treated_first_period := (get(gname) <= first_period)] + data[, treated_first_period := (get(args$gname) <= first_period)] data[is.na(treated_first_period), treated_first_period := FALSE] # count the number of units treated in the first period @@ -287,7 +270,11 @@ did_standarization <- function(data, args){ n <- data[get(args$tname) == tlist[1], .N] # Ensure The value of gname must be the same across all periods for each particular individual. - checkTreatmentUniqueness(data, args$idname, args$gname) + #checkTreatmentUniqueness(data, args$idname, args$gname) + check_treatment_uniqueness <- data[, .(constant = all(get(args$gname)[1] == get(args$gname))), by = get(args$idname)][, all(constant)] + if (!check_treatment_uniqueness) { + stop("The value of gname (treatment variable) must be the same across all periods for each particular unit. The treatment must be irreversible.") + } } } @@ -335,7 +322,7 @@ did_standarization <- function(data, args){ gsize <- data[, .N / length(tlist), by = get(args$gname)] # How many in each group before giving a warning - reqsize <- length(BMisc::rhs.vars(xformla)) + 5 + reqsize <- length(BMisc::rhs.vars(args$xformla)) + 5 # Filter groups smaller than reqsize gsize <- gsize[V1 < reqsize] @@ -346,7 +333,7 @@ did_standarization <- function(data, args){ warning(paste0("Be aware that there are some small groups in your dataset.\n Check groups: ", gpaste, ".")) # Check if the never treated group is too small - if (Inf %in% gsize[[gname]] & control_group == "nevertreated") { + if (Inf %in% gsize[[args$gname]] & control_group == "nevertreated") { stop("Never treated group is too small, try setting control_group=\"notyettreated\"") } } @@ -483,6 +470,7 @@ pre_process_did2 <- function(yname, # gathering all the arguments except data args_names <- setdiff(names(formals()), "data") args <- mget(args_names, sys.frame(sys.nframe())) + print(args) # run error checking on arguments validate_args(args, data) diff --git a/R/zzz.R b/R/zzz.R index 048fdc9..172ba5e 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -8,7 +8,3 @@ utils::globalVariables(c("year","att","att.se","post","group","x")) citation <- function() { cat("Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. \"Difference-in-Differences with Multiple Time Periods.\" Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , \n") } - -#' @useDynLib did -#' @importFrom Rcpp sourceCpp -NULL diff --git a/man/DIDparams2.Rd b/man/DIDparams2.Rd new file mode 100644 index 0000000..43c93f0 --- /dev/null +++ b/man/DIDparams2.Rd @@ -0,0 +1,30 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/DIDparams2.R +\name{DIDparams2} +\alias{DIDparams2} +\title{DIDparams} +\usage{ +DIDparams2(did_tensors, args, call = NULL) +} +\arguments{ +\item{call}{Function call to att_gt} + +\item{n}{The number of observations. This is equal to the +number of units (which may be different from the number +of rows in a panel dataset).} + +\item{nG}{The number of groups} + +\item{nT}{The number of time periods} + +\item{tlist}{a vector containing each time period} + +\item{glist}{a vector containing each group} + +\item{true_repeated_cross_sections}{Whether or not the data really +is repeated cross sections. (We include this because unbalanced +panel code runs through the repeated cross sections code)} +} +\description{ +Object to hold did parameters that are passed across functions +} diff --git a/man/aggte.Rd b/man/aggte.Rd index e55c5aa..ed9930b 100644 --- a/man/aggte.Rd +++ b/man/aggte.Rd @@ -90,7 +90,6 @@ Initial ATT(g,t) estimates from \code{\link[=att_gt]{att_gt()}} \if{html}{\out{
}}\preformatted{data(mpdta) set.seed(09152024) - out <- att_gt(yname="lemp", tname="year", idname="countyreal", @@ -103,117 +102,109 @@ You can aggregate the ATT(g,t) in many ways. \strong{Overall ATT:} - \if{html}{\out{
}}\preformatted{aggte(out, type = "simple") -#> +#> #> Call: #> aggte(MP = out, type = "simple") -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> -#> -#> ATT Std. Error [ 95\% Conf. Int.] +#> +#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , +#> +#> +#> ATT Std. Error [ 95\% Conf. Int.] #> -0.04 0.0123 -0.064 -0.0159 * -#> -#> +#> +#> #> --- #> Signif. codes: `*' confidence band does not cover 0 -#> +#> #> Control Group: Never Treated, Anticipation Periods: 0 #> Estimation Method: Doubly Robust - }\if{html}{\out{
}} \strong{Dynamic ATT (Event-Study):} - \if{html}{\out{
}}\preformatted{aggte(out, type = "dynamic") -#> +#> #> Call: #> aggte(MP = out, type = "dynamic") -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> -#> -#> Overall summary of ATT's based on event-study/dynamic aggregation: -#> ATT Std. Error [ 95\% Conf. Int.] +#> +#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , +#> +#> +#> Overall summary of ATT's based on event-study/dynamic aggregation: +#> ATT Std. Error [ 95\% Conf. Int.] #> -0.0772 0.0209 -0.1181 -0.0363 * -#> -#> +#> +#> #> Dynamic Effects: -#> Event time Estimate Std. Error [95\% Simult. Conf. Band] -#> -3 0.0305 0.0158 -0.0103 0.0713 -#> -2 -0.0006 0.0134 -0.0351 0.0340 -#> -1 -0.0245 0.0145 -0.0617 0.0128 -#> 0 -0.0199 0.0125 -0.0521 0.0122 +#> Event time Estimate Std. Error [95\% Simult. Conf. Band] +#> -3 0.0305 0.0158 -0.0103 0.0713 +#> -2 -0.0006 0.0134 -0.0351 0.0340 +#> -1 -0.0245 0.0145 -0.0617 0.0128 +#> 0 -0.0199 0.0125 -0.0521 0.0122 #> 1 -0.0510 0.0161 -0.0926 -0.0093 * #> 2 -0.1373 0.0386 -0.2368 -0.0377 * #> 3 -0.1008 0.0345 -0.1899 -0.0117 * #> --- #> Signif. codes: `*' confidence band does not cover 0 -#> +#> #> Control Group: Never Treated, Anticipation Periods: 0 #> Estimation Method: Doubly Robust - }\if{html}{\out{
}} \strong{ATT for each group:} - \if{html}{\out{
}}\preformatted{aggte(out, type = "group") -#> +#> #> Call: #> aggte(MP = out, type = "group") -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> -#> -#> Overall summary of ATT's based on group/cohort aggregation: -#> ATT Std. Error [ 95\% Conf. Int.] +#> +#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , +#> +#> +#> Overall summary of ATT's based on group/cohort aggregation: +#> ATT Std. Error [ 95\% Conf. Int.] #> -0.031 0.0126 -0.0558 -0.0062 * -#> -#> +#> +#> #> Group Effects: -#> Group Estimate Std. Error [95\% Simult. Conf. Band] +#> Group Estimate Std. Error [95\% Simult. Conf. Band] #> 2004 -0.0797 0.0281 -0.1407 -0.0188 * -#> 2006 -0.0229 0.0156 -0.0568 0.0110 -#> 2007 -0.0261 0.0172 -0.0634 0.0113 +#> 2006 -0.0229 0.0156 -0.0568 0.0110 +#> 2007 -0.0261 0.0172 -0.0634 0.0113 #> --- #> Signif. codes: `*' confidence band does not cover 0 -#> +#> #> Control Group: Never Treated, Anticipation Periods: 0 #> Estimation Method: Doubly Robust - }\if{html}{\out{
}} \strong{ATT for each calendar year:} - \if{html}{\out{
}}\preformatted{aggte(out, type = "calendar") -#> +#> #> Call: #> aggte(MP = out, type = "calendar") -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> -#> -#> Overall summary of ATT's based on calendar time aggregation: -#> ATT Std. Error [ 95\% Conf. Int.] +#> +#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , +#> +#> +#> Overall summary of ATT's based on calendar time aggregation: +#> ATT Std. Error [ 95\% Conf. Int.] #> -0.0417 0.0172 -0.0755 -0.0079 * -#> -#> +#> +#> #> Time Effects: -#> Time Estimate Std. Error [95\% Simult. Conf. Band] -#> 2004 -0.0105 0.0251 -0.0701 0.0490 -#> 2005 -0.0704 0.0320 -0.1464 0.0056 -#> 2006 -0.0488 0.0213 -0.0994 0.0018 +#> Time Estimate Std. Error [95\% Simult. Conf. Band] +#> 2004 -0.0105 0.0251 -0.0701 0.0490 +#> 2005 -0.0704 0.0320 -0.1464 0.0056 +#> 2006 -0.0488 0.0213 -0.0994 0.0018 #> 2007 -0.0371 0.0139 -0.0700 -0.0041 * #> --- #> Signif. codes: `*' confidence band does not cover 0 -#> +#> #> Control Group: Never Treated, Anticipation Periods: 0 #> Estimation Method: Doubly Robust - }\if{html}{\out{
}} } diff --git a/man/att_gt.Rd b/man/att_gt.Rd index 97cba79..073e68e 100644 --- a/man/att_gt.Rd +++ b/man/att_gt.Rd @@ -171,7 +171,7 @@ See Callaway and Sant'Anna (2021) for a detailed description. \section{Examples:}{ \strong{Basic \code{\link[=att_gt]{att_gt()}} call:} -\if{html}{\out{
", collapse = TRUE}">}}\preformatted{# Example data +\if{html}{\out{
}}\preformatted{# Example data data(mpdta) set.seed(09152024) out1 <- att_gt(yname="lemp", @@ -181,80 +181,76 @@ out1 <- att_gt(yname="lemp", xformla=NULL, data=mpdta) summary(out1) - -#> +#> #> Call: -#> att_gt(yname = "lemp", tname = "year", idname = "countyreal", +#> att_gt(yname = "lemp", tname = "year", idname = "countyreal", #> gname = "first.treat", xformla = NULL, data = mpdta) -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> +#> +#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , +#> #> Group-Time Average Treatment Effects: -#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] -#> 2004 2004 -0.0105 0.0246 -0.0755 0.0545 -#> 2004 2005 -0.0704 0.0346 -0.1621 0.0212 +#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] +#> 2004 2004 -0.0105 0.0246 -0.0755 0.0545 +#> 2004 2005 -0.0704 0.0346 -0.1621 0.0212 #> 2004 2006 -0.1373 0.0397 -0.2422 -0.0323 * #> 2004 2007 -0.1008 0.0366 -0.1976 -0.0040 * -#> 2006 2004 0.0065 0.0226 -0.0532 0.0663 -#> 2006 2005 -0.0028 0.0193 -0.0538 0.0483 -#> 2006 2006 -0.0046 0.0185 -0.0536 0.0444 -#> 2006 2007 -0.0412 0.0208 -0.0962 0.0137 -#> 2007 2004 0.0305 0.0146 -0.0081 0.0692 -#> 2007 2005 -0.0027 0.0162 -0.0457 0.0402 -#> 2007 2006 -0.0311 0.0182 -0.0793 0.0172 -#> 2007 2007 -0.0261 0.0174 -0.0722 0.0201 +#> 2006 2004 0.0065 0.0226 -0.0532 0.0663 +#> 2006 2005 -0.0028 0.0193 -0.0538 0.0483 +#> 2006 2006 -0.0046 0.0185 -0.0536 0.0444 +#> 2006 2007 -0.0412 0.0208 -0.0962 0.0137 +#> 2007 2004 0.0305 0.0146 -0.0081 0.0692 +#> 2007 2005 -0.0027 0.0162 -0.0457 0.0402 +#> 2007 2006 -0.0311 0.0182 -0.0793 0.0172 +#> 2007 2007 -0.0261 0.0174 -0.0722 0.0201 #> --- #> Signif. codes: `*' confidence band does not cover 0 -#> +#> #> P-value for pre-test of parallel trends assumption: 0.16812 #> Control Group: Never Treated, Anticipation Periods: 0 #> Estimation Method: Doubly Robust - }\if{html}{\out{
}} \strong{Using covariates:} -\if{html}{\out{
", collapse = TRUE}">}}\preformatted{out2 <- att_gt(yname="lemp", +\if{html}{\out{
}}\preformatted{out2 <- att_gt(yname="lemp", tname="year", idname="countyreal", gname="first.treat", xformla=~lpop, data=mpdta) summary(out2) - -#> +#> #> Call: -#> att_gt(yname = "lemp", tname = "year", idname = "countyreal", +#> att_gt(yname = "lemp", tname = "year", idname = "countyreal", #> gname = "first.treat", xformla = ~lpop, data = mpdta) -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> +#> +#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , +#> #> Group-Time Average Treatment Effects: -#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] -#> 2004 2004 -0.0145 0.0249 -0.0817 0.0527 -#> 2004 2005 -0.0764 0.0307 -0.1592 0.0064 +#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] +#> 2004 2004 -0.0145 0.0249 -0.0817 0.0527 +#> 2004 2005 -0.0764 0.0307 -0.1592 0.0064 #> 2004 2006 -0.1404 0.0370 -0.2403 -0.0406 * #> 2004 2007 -0.1069 0.0331 -0.1962 -0.0176 * -#> 2006 2004 -0.0005 0.0215 -0.0583 0.0574 -#> 2006 2005 -0.0062 0.0181 -0.0549 0.0425 -#> 2006 2006 0.0010 0.0190 -0.0502 0.0521 -#> 2006 2007 -0.0413 0.0207 -0.0971 0.0145 -#> 2007 2004 0.0267 0.0143 -0.0117 0.0652 -#> 2007 2005 -0.0046 0.0153 -0.0459 0.0368 -#> 2007 2006 -0.0284 0.0197 -0.0816 0.0247 -#> 2007 2007 -0.0288 0.0157 -0.0712 0.0136 +#> 2006 2004 -0.0005 0.0215 -0.0583 0.0574 +#> 2006 2005 -0.0062 0.0181 -0.0549 0.0425 +#> 2006 2006 0.0010 0.0190 -0.0502 0.0521 +#> 2006 2007 -0.0413 0.0207 -0.0971 0.0145 +#> 2007 2004 0.0267 0.0143 -0.0117 0.0652 +#> 2007 2005 -0.0046 0.0153 -0.0459 0.0368 +#> 2007 2006 -0.0284 0.0197 -0.0816 0.0247 +#> 2007 2007 -0.0288 0.0157 -0.0712 0.0136 #> --- #> Signif. codes: `*' confidence band does not cover 0 -#> +#> #> P-value for pre-test of parallel trends assumption: 0.23267 #> Control Group: Never Treated, Anticipation Periods: 0 #> Estimation Method: Doubly Robust - }\if{html}{\out{
}} \strong{Specify comparison units:} -\if{html}{\out{
", collapse = TRUE}">}}\preformatted{out3 <- att_gt(yname="lemp", +\if{html}{\out{
}}\preformatted{out3 <- att_gt(yname="lemp", tname="year", idname="countyreal", gname="first.treat", @@ -262,35 +258,33 @@ summary(out2) control_group = "notyettreated", data=mpdta) summary(out3) - -#> +#> #> Call: -#> att_gt(yname = "lemp", tname = "year", idname = "countyreal", +#> att_gt(yname = "lemp", tname = "year", idname = "countyreal", #> gname = "first.treat", xformla = ~lpop, data = mpdta, control_group = "notyettreated") -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> +#> +#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , +#> #> Group-Time Average Treatment Effects: -#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] -#> 2004 2004 -0.0212 0.0219 -0.0797 0.0374 +#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] +#> 2004 2004 -0.0212 0.0219 -0.0797 0.0374 #> 2004 2005 -0.0816 0.0299 -0.1617 -0.0015 * #> 2004 2006 -0.1382 0.0375 -0.2387 -0.0376 * #> 2004 2007 -0.1069 0.0354 -0.2016 -0.0122 * -#> 2006 2004 -0.0075 0.0216 -0.0653 0.0504 -#> 2006 2005 -0.0046 0.0184 -0.0539 0.0448 -#> 2006 2006 0.0087 0.0167 -0.0362 0.0535 -#> 2006 2007 -0.0413 0.0192 -0.0927 0.0101 -#> 2007 2004 0.0269 0.0146 -0.0122 0.0661 -#> 2007 2005 -0.0042 0.0160 -0.0470 0.0386 -#> 2007 2006 -0.0284 0.0182 -0.0773 0.0204 -#> 2007 2007 -0.0288 0.0176 -0.0759 0.0184 +#> 2006 2004 -0.0075 0.0216 -0.0653 0.0504 +#> 2006 2005 -0.0046 0.0184 -0.0539 0.0448 +#> 2006 2006 0.0087 0.0167 -0.0362 0.0535 +#> 2006 2007 -0.0413 0.0192 -0.0927 0.0101 +#> 2007 2004 0.0269 0.0146 -0.0122 0.0661 +#> 2007 2005 -0.0042 0.0160 -0.0470 0.0386 +#> 2007 2006 -0.0284 0.0182 -0.0773 0.0204 +#> 2007 2007 -0.0288 0.0176 -0.0759 0.0184 #> --- #> Signif. codes: `*' confidence band does not cover 0 -#> +#> #> P-value for pre-test of parallel trends assumption: 0.23326 #> Control Group: Not Yet Treated, Anticipation Periods: 0 #> Estimation Method: Doubly Robust - }\if{html}{\out{
}} } diff --git a/man/att_gt2.Rd b/man/att_gt2.Rd new file mode 100644 index 0000000..2f4f26f --- /dev/null +++ b/man/att_gt2.Rd @@ -0,0 +1,293 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/att_gt2.R +\name{att_gt2} +\alias{att_gt2} +\title{Group-Time Average Treatment Effects} +\usage{ +att_gt2( + yname, + tname, + idname = NULL, + gname, + xformla = NULL, + data, + panel = TRUE, + allow_unbalanced_panel = FALSE, + control_group = c("nevertreated", "notyettreated"), + anticipation = 0, + weightsname = NULL, + alp = 0.05, + bstrap = TRUE, + cband = TRUE, + biters = 1000, + clustervars = NULL, + est_method = "dr", + base_period = "varying", + print_details = FALSE, + pl = FALSE, + cores = 1 +) +} +\arguments{ +\item{yname}{The name of the outcome variable} + +\item{tname}{The name of the column containing the time periods} + +\item{idname}{The individual (cross-sectional unit) id name} + +\item{gname}{The name of the variable in \code{data} that +contains the first period when a particular observation is treated. +This should be a positive number for all observations in treated groups. +It defines which "group" a unit belongs to. It should be 0 for units +in the untreated group.} + +\item{xformla}{A formula for the covariates to include in the +model. It should be of the form \code{~ X1 + X2}. Default +is NULL which is equivalent to \code{xformla=~1}. This is +used to create a matrix of covariates which is then passed +to the 2x2 DID estimator chosen in \code{est_method}.} + +\item{data}{The name of the data.frame that contains the data} + +\item{panel}{Whether or not the data is a panel dataset. +The panel dataset should be provided in long format -- that +is, where each row corresponds to a unit observed at a +particular point in time. The default is TRUE. When +is using a panel dataset, the variable \code{idname} must +be set. When \code{panel=FALSE}, the data is treated +as repeated cross sections.} + +\item{allow_unbalanced_panel}{Whether or not function should +"balance" the panel with respect to time and id. The default +values if \code{FALSE} which means that \code{\link[=att_gt]{att_gt()}} will drop +all units where data is not observed in all periods. +The advantage of this is that the computations are faster +(sometimes substantially).} + +\item{control_group}{Which units to use the control group. +The default is "nevertreated" which sets the control group +to be the group of units that never participate in the +treatment. This group does not change across groups or +time periods. The other option is to set +\code{group="notyettreated"}. In this case, the control group +is set to the group of units that have not yet participated +in the treatment in that time period. This includes all +never treated units, but it includes additional units that +eventually participate in the treatment, but have not +participated yet.} + +\item{anticipation}{The number of time periods before participating +in the treatment where units can anticipate participating in the +treatment and therefore it can affect their untreated potential outcomes} + +\item{weightsname}{The name of the column containing the sampling weights. +If not set, all observations have same weight.} + +\item{alp}{the significance level, default is 0.05} + +\item{bstrap}{Boolean for whether or not to compute standard errors using +the multiplier bootstrap. If standard errors are clustered, then one +must set \code{bstrap=TRUE}. Default is \code{TRUE} (in addition, cband +is also by default \code{TRUE} indicating that uniform confidence bands +will be returned. If bstrap is \code{FALSE}, then analytical +standard errors are reported.} + +\item{cband}{Boolean for whether or not to compute a uniform confidence +band that covers all of the group-time average treatment effects +with fixed probability \code{1-alp}. In order to compute uniform confidence +bands, \code{bstrap} must also be set to \code{TRUE}. The default is +\code{TRUE}.} + +\item{biters}{The number of bootstrap iterations to use. The default is 1000, +and this is only applicable if \code{bstrap=TRUE}.} + +\item{clustervars}{A vector of variables names to cluster on. At most, there +can be two variables (otherwise will throw an error) and one of these +must be the same as idname which allows for clustering at the individual +level. By default, we cluster at individual level (when \code{bstrap=TRUE}).} + +\item{est_method}{the method to compute group-time average treatment effects. The default is "dr" which uses the doubly robust +approach in the \code{DRDID} package. Other built-in methods +include "ipw" for inverse probability weighting and "reg" for +first step regression estimators. The user can also pass their +own function for estimating group time average treatment +effects. This should be a function +\code{f(Y1,Y0,treat,covariates)} where \code{Y1} is an +\code{n} x \code{1} vector of outcomes in the post-treatment +outcomes, \code{Y0} is an \code{n} x \code{1} vector of +pre-treatment outcomes, \code{treat} is a vector indicating +whether or not an individual participates in the treatment, +and \code{covariates} is an \code{n} x \code{k} matrix of +covariates. The function should return a list that includes +\code{ATT} (an estimated average treatment effect), and +\code{inf.func} (an \code{n} x \code{1} influence function). +The function can return other things as well, but these are +the only two that are required. \code{est_method} is only used +if covariates are included.} + +\item{base_period}{Whether to use a "varying" base period or a +"universal" base period. Either choice results in the same +post-treatment estimates of ATT(g,t)'s. In pre-treatment +periods, using a varying base period amounts to computing a +pseudo-ATT in each treatment period by comparing the change +in outcomes for a particular group relative to its comparison +group in the pre-treatment periods (i.e., in pre-treatment +periods this setting computes changes from period t-1 to period +t, but repeatedly changes the value of t) + +A universal base period fixes the base period to always be +(g-anticipation-1). This does not compute +pseudo-ATT(g,t)'s in pre-treatment periods, but rather +reports average changes in outcomes from period t to +(g-anticipation-1) for a particular group relative to its comparison +group. This is analogous to what is often reported in event +study regressions. + +Using a varying base period results in an estimate of +ATT(g,t) being reported in the period immediately before +treatment. Using a universal base period normalizes the +estimate in the period right before treatment (or earlier when +the user allows for anticipation) to be equal to 0, but one +extra estimate in an earlier period.} + +\item{print_details}{Whether or not to show details/progress of computations. +Default is \code{FALSE}.} + +\item{pl}{Whether or not to use parallel processing} + +\item{cores}{The number of cores to use for parallel processing} +} +\value{ +an \code{\link{MP}} object containing all the results for group-time average +treatment effects +} +\description{ +\code{att_gt} computes average treatment effects in DID +setups where there are more than two periods of data and allowing for +treatment to occur at different points in time and allowing for +treatment effect heterogeneity and dynamics. +See Callaway and Sant'Anna (2021) for a detailed description. +} +\section{Examples:}{ +\strong{Basic \code{\link[=att_gt]{att_gt()}} call:} + +\if{html}{\out{
}}\preformatted{# Example data +data(mpdta) +set.seed(09152024) +out1 <- att_gt(yname="lemp", + tname="year", + idname="countyreal", + gname="first.treat", + xformla=NULL, + data=mpdta) +summary(out1) +#> +#> Call: +#> att_gt(yname = "lemp", tname = "year", idname = "countyreal", +#> gname = "first.treat", xformla = NULL, data = mpdta) +#> +#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , +#> +#> Group-Time Average Treatment Effects: +#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] +#> 2004 2004 -0.0105 0.0246 -0.0755 0.0545 +#> 2004 2005 -0.0704 0.0346 -0.1621 0.0212 +#> 2004 2006 -0.1373 0.0397 -0.2422 -0.0323 * +#> 2004 2007 -0.1008 0.0366 -0.1976 -0.0040 * +#> 2006 2004 0.0065 0.0226 -0.0532 0.0663 +#> 2006 2005 -0.0028 0.0193 -0.0538 0.0483 +#> 2006 2006 -0.0046 0.0185 -0.0536 0.0444 +#> 2006 2007 -0.0412 0.0208 -0.0962 0.0137 +#> 2007 2004 0.0305 0.0146 -0.0081 0.0692 +#> 2007 2005 -0.0027 0.0162 -0.0457 0.0402 +#> 2007 2006 -0.0311 0.0182 -0.0793 0.0172 +#> 2007 2007 -0.0261 0.0174 -0.0722 0.0201 +#> --- +#> Signif. codes: `*' confidence band does not cover 0 +#> +#> P-value for pre-test of parallel trends assumption: 0.16812 +#> Control Group: Never Treated, Anticipation Periods: 0 +#> Estimation Method: Doubly Robust +}\if{html}{\out{
}} + +\strong{Using covariates:} + +\if{html}{\out{
}}\preformatted{out2 <- att_gt(yname="lemp", + tname="year", + idname="countyreal", + gname="first.treat", + xformla=~lpop, + data=mpdta) +summary(out2) +#> +#> Call: +#> att_gt(yname = "lemp", tname = "year", idname = "countyreal", +#> gname = "first.treat", xformla = ~lpop, data = mpdta) +#> +#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , +#> +#> Group-Time Average Treatment Effects: +#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] +#> 2004 2004 -0.0145 0.0249 -0.0817 0.0527 +#> 2004 2005 -0.0764 0.0307 -0.1592 0.0064 +#> 2004 2006 -0.1404 0.0370 -0.2403 -0.0406 * +#> 2004 2007 -0.1069 0.0331 -0.1962 -0.0176 * +#> 2006 2004 -0.0005 0.0215 -0.0583 0.0574 +#> 2006 2005 -0.0062 0.0181 -0.0549 0.0425 +#> 2006 2006 0.0010 0.0190 -0.0502 0.0521 +#> 2006 2007 -0.0413 0.0207 -0.0971 0.0145 +#> 2007 2004 0.0267 0.0143 -0.0117 0.0652 +#> 2007 2005 -0.0046 0.0153 -0.0459 0.0368 +#> 2007 2006 -0.0284 0.0197 -0.0816 0.0247 +#> 2007 2007 -0.0288 0.0157 -0.0712 0.0136 +#> --- +#> Signif. codes: `*' confidence band does not cover 0 +#> +#> P-value for pre-test of parallel trends assumption: 0.23267 +#> Control Group: Never Treated, Anticipation Periods: 0 +#> Estimation Method: Doubly Robust +}\if{html}{\out{
}} + +\strong{Specify comparison units:} + +\if{html}{\out{
}}\preformatted{out3 <- att_gt(yname="lemp", + tname="year", + idname="countyreal", + gname="first.treat", + xformla=~lpop, + control_group = "notyettreated", + data=mpdta) +summary(out3) +#> +#> Call: +#> att_gt(yname = "lemp", tname = "year", idname = "countyreal", +#> gname = "first.treat", xformla = ~lpop, data = mpdta, control_group = "notyettreated") +#> +#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , +#> +#> Group-Time Average Treatment Effects: +#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] +#> 2004 2004 -0.0212 0.0219 -0.0797 0.0374 +#> 2004 2005 -0.0816 0.0299 -0.1617 -0.0015 * +#> 2004 2006 -0.1382 0.0375 -0.2387 -0.0376 * +#> 2004 2007 -0.1069 0.0354 -0.2016 -0.0122 * +#> 2006 2004 -0.0075 0.0216 -0.0653 0.0504 +#> 2006 2005 -0.0046 0.0184 -0.0539 0.0448 +#> 2006 2006 0.0087 0.0167 -0.0362 0.0535 +#> 2006 2007 -0.0413 0.0192 -0.0927 0.0101 +#> 2007 2004 0.0269 0.0146 -0.0122 0.0661 +#> 2007 2005 -0.0042 0.0160 -0.0470 0.0386 +#> 2007 2006 -0.0284 0.0182 -0.0773 0.0204 +#> 2007 2007 -0.0288 0.0176 -0.0759 0.0184 +#> --- +#> Signif. codes: `*' confidence band does not cover 0 +#> +#> P-value for pre-test of parallel trends assumption: 0.23326 +#> Control Group: Not Yet Treated, Anticipation Periods: 0 +#> Estimation Method: Doubly Robust +}\if{html}{\out{
}} +} + +\references{ +Callaway, Brantly and Pedro H.C. Sant'Anna. \"Difference-in-Differences with Multiple Time Periods.\" Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. \doi{10.1016/j.jeconom.2020.12.001}, \url{https://arxiv.org/abs/1803.09015} +} diff --git a/man/compute.att_gt2.Rd b/man/compute.att_gt2.Rd new file mode 100644 index 0000000..4c42bc3 --- /dev/null +++ b/man/compute.att_gt2.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/compute.att_gt2.R +\name{compute.att_gt2} +\alias{compute.att_gt2} +\title{Compute Group-Time Average Treatment Effects} +\usage{ +compute.att_gt2(dp) +} +\arguments{ +\item{dp}{A DIDparams object} +} +\value{ +a list with length equal to the number of groups times the +number of time periods; each element of the list contains an +object that contains group-time average treatment effect as well +as which group it is for and which time period it is for. It also exports +the influence function which is used externally to compute +standard errors. +} +\description{ +\code{compute.att_gt} does the (g,t) cell and send it to estimation, +then do all the post process after estimation +} +\keyword{internal} diff --git a/man/pre_process_did.Rd b/man/pre_process_did.Rd index 8896af1..08b9ddf 100644 --- a/man/pre_process_did.Rd +++ b/man/pre_process_did.Rd @@ -1,34 +1,9 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/pre_process_did.R, R/pre_process_did2.R +% Please edit documentation in R/pre_process_did.R \name{pre_process_did} \alias{pre_process_did} \title{Process \code{did} Function Arguments} \usage{ -pre_process_did( - yname, - tname, - idname, - gname, - xformla = NULL, - data, - panel = TRUE, - allow_unbalanced_panel, - control_group = c("nevertreated", "notyettreated"), - anticipation = 0, - weightsname = NULL, - alp = 0.05, - bstrap = FALSE, - cband = FALSE, - biters = 1000, - clustervars = NULL, - est_method = "dr", - base_period = "varying", - print_details = TRUE, - pl = FALSE, - cores = 1, - call = NULL -) - pre_process_did( yname, tname, @@ -186,15 +161,9 @@ Default is \code{FALSE}.} \item{call}{Function call to att_gt} } \value{ -a \code{\link{DIDparams}} object - a \code{\link{DIDparams}} object } \description{ -Function to process arguments passed to the main methods in the -\code{did} package as well as conducting some tests to make sure -data is in proper format / try to throw helpful error messages. - Function to process arguments passed to the main methods in the \code{did} package as well as conducting some tests to make sure data is in proper format / try to throw helpful error messages. diff --git a/man/pre_process_did2.Rd b/man/pre_process_did2.Rd new file mode 100644 index 0000000..150c087 --- /dev/null +++ b/man/pre_process_did2.Rd @@ -0,0 +1,170 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/pre_process_did2.R +\name{pre_process_did2} +\alias{pre_process_did2} +\title{Process \code{did} Function Arguments} +\usage{ +pre_process_did2( + yname, + tname, + idname, + gname, + xformla = NULL, + data, + panel = TRUE, + allow_unbalanced_panel, + control_group = c("nevertreated", "notyettreated"), + anticipation = 0, + weightsname = NULL, + alp = 0.05, + bstrap = FALSE, + cband = FALSE, + biters = 1000, + clustervars = NULL, + est_method = "dr", + base_period = "varying", + print_details = TRUE, + pl = FALSE, + cores = 1, + call = NULL +) +} +\arguments{ +\item{yname}{The name of the outcome variable} + +\item{tname}{The name of the column containing the time periods} + +\item{idname}{The individual (cross-sectional unit) id name} + +\item{gname}{The name of the variable in \code{data} that +contains the first period when a particular observation is treated. +This should be a positive number for all observations in treated groups. +It defines which "group" a unit belongs to. It should be 0 for units +in the untreated group.} + +\item{xformla}{A formula for the covariates to include in the +model. It should be of the form \code{~ X1 + X2}. Default +is NULL which is equivalent to \code{xformla=~1}. This is +used to create a matrix of covariates which is then passed +to the 2x2 DID estimator chosen in \code{est_method}.} + +\item{data}{The name of the data.frame that contains the data} + +\item{panel}{Whether or not the data is a panel dataset. +The panel dataset should be provided in long format -- that +is, where each row corresponds to a unit observed at a +particular point in time. The default is TRUE. When +is using a panel dataset, the variable \code{idname} must +be set. When \code{panel=FALSE}, the data is treated +as repeated cross sections.} + +\item{allow_unbalanced_panel}{Whether or not function should +"balance" the panel with respect to time and id. The default +values if \code{FALSE} which means that \code{\link[=att_gt]{att_gt()}} will drop +all units where data is not observed in all periods. +The advantage of this is that the computations are faster +(sometimes substantially).} + +\item{control_group}{Which units to use the control group. +The default is "nevertreated" which sets the control group +to be the group of units that never participate in the +treatment. This group does not change across groups or +time periods. The other option is to set +\code{group="notyettreated"}. In this case, the control group +is set to the group of units that have not yet participated +in the treatment in that time period. This includes all +never treated units, but it includes additional units that +eventually participate in the treatment, but have not +participated yet.} + +\item{anticipation}{The number of time periods before participating +in the treatment where units can anticipate participating in the +treatment and therefore it can affect their untreated potential outcomes} + +\item{weightsname}{The name of the column containing the sampling weights. +If not set, all observations have same weight.} + +\item{alp}{the significance level, default is 0.05} + +\item{bstrap}{Boolean for whether or not to compute standard errors using +the multiplier bootstrap. If standard errors are clustered, then one +must set \code{bstrap=TRUE}. Default is \code{TRUE} (in addition, cband +is also by default \code{TRUE} indicating that uniform confidence bands +will be returned. If bstrap is \code{FALSE}, then analytical +standard errors are reported.} + +\item{cband}{Boolean for whether or not to compute a uniform confidence +band that covers all of the group-time average treatment effects +with fixed probability \code{1-alp}. In order to compute uniform confidence +bands, \code{bstrap} must also be set to \code{TRUE}. The default is +\code{TRUE}.} + +\item{biters}{The number of bootstrap iterations to use. The default is 1000, +and this is only applicable if \code{bstrap=TRUE}.} + +\item{clustervars}{A vector of variables names to cluster on. At most, there +can be two variables (otherwise will throw an error) and one of these +must be the same as idname which allows for clustering at the individual +level. By default, we cluster at individual level (when \code{bstrap=TRUE}).} + +\item{est_method}{the method to compute group-time average treatment effects. The default is "dr" which uses the doubly robust +approach in the \code{DRDID} package. Other built-in methods +include "ipw" for inverse probability weighting and "reg" for +first step regression estimators. The user can also pass their +own function for estimating group time average treatment +effects. This should be a function +\code{f(Y1,Y0,treat,covariates)} where \code{Y1} is an +\code{n} x \code{1} vector of outcomes in the post-treatment +outcomes, \code{Y0} is an \code{n} x \code{1} vector of +pre-treatment outcomes, \code{treat} is a vector indicating +whether or not an individual participates in the treatment, +and \code{covariates} is an \code{n} x \code{k} matrix of +covariates. The function should return a list that includes +\code{ATT} (an estimated average treatment effect), and +\code{inf.func} (an \code{n} x \code{1} influence function). +The function can return other things as well, but these are +the only two that are required. \code{est_method} is only used +if covariates are included.} + +\item{base_period}{Whether to use a "varying" base period or a +"universal" base period. Either choice results in the same +post-treatment estimates of ATT(g,t)'s. In pre-treatment +periods, using a varying base period amounts to computing a +pseudo-ATT in each treatment period by comparing the change +in outcomes for a particular group relative to its comparison +group in the pre-treatment periods (i.e., in pre-treatment +periods this setting computes changes from period t-1 to period +t, but repeatedly changes the value of t) + +A universal base period fixes the base period to always be +(g-anticipation-1). This does not compute +pseudo-ATT(g,t)'s in pre-treatment periods, but rather +reports average changes in outcomes from period t to +(g-anticipation-1) for a particular group relative to its comparison +group. This is analogous to what is often reported in event +study regressions. + +Using a varying base period results in an estimate of +ATT(g,t) being reported in the period immediately before +treatment. Using a universal base period normalizes the +estimate in the period right before treatment (or earlier when +the user allows for anticipation) to be equal to 0, but one +extra estimate in an earlier period.} + +\item{print_details}{Whether or not to show details/progress of computations. +Default is \code{FALSE}.} + +\item{pl}{Whether or not to use parallel processing} + +\item{cores}{The number of cores to use for parallel processing} + +\item{call}{Function call to att_gt} +} +\value{ +a \code{\link{DIDparams}} object +} +\description{ +Function to process arguments passed to the main methods in the +\code{did} package as well as conducting some tests to make sure +data is in proper format / try to throw helpful error messages. +} diff --git a/man/run_att_gt_estimation.Rd b/man/run_att_gt_estimation.Rd new file mode 100644 index 0000000..b05b8a8 --- /dev/null +++ b/man/run_att_gt_estimation.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/compute.att_gt2.R +\name{run_att_gt_estimation} +\alias{run_att_gt_estimation} +\title{Compute Group-Time Average Treatment Effects} +\usage{ +run_att_gt_estimation(gt, dp) +} +\arguments{ +\item{gt}{A numeric vector of the group and time period coming from a list of (g,t) cells} + +\item{dp}{A DIDparams object} +} +\value{ +a list with the gt cell and the results after performing estimation +} +\description{ +\code{run_att_gt_estimation} does the main work for computing +multiperiod group-time average treatment effects +} +\keyword{internal} diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp deleted file mode 100644 index 28ea920..0000000 --- a/src/RcppExports.cpp +++ /dev/null @@ -1,46 +0,0 @@ -// Generated by using Rcpp::compileAttributes() -> do not edit by hand -// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -#include - -using namespace Rcpp; - -#ifdef RCPP_USE_GLOBAL_ROSTREAM -Rcpp::Rostream& Rcpp::Rcout = Rcpp::Rcpp_cout_get(); -Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); -#endif - -// checkTreatmentUniqueness -void checkTreatmentUniqueness(DataFrame dta, String idname, String treatName); -RcppExport SEXP _did_checkTreatmentUniqueness(SEXP dtaSEXP, SEXP idnameSEXP, SEXP treatNameSEXP) { -BEGIN_RCPP - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< DataFrame >::type dta(dtaSEXP); - Rcpp::traits::input_parameter< String >::type idname(idnameSEXP); - Rcpp::traits::input_parameter< String >::type treatName(treatNameSEXP); - checkTreatmentUniqueness(dta, idname, treatName); - return R_NilValue; -END_RCPP -} -// checkWeightsUniqueness -void checkWeightsUniqueness(DataFrame dta, String idname); -RcppExport SEXP _did_checkWeightsUniqueness(SEXP dtaSEXP, SEXP idnameSEXP) { -BEGIN_RCPP - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< DataFrame >::type dta(dtaSEXP); - Rcpp::traits::input_parameter< String >::type idname(idnameSEXP); - checkWeightsUniqueness(dta, idname); - return R_NilValue; -END_RCPP -} - -static const R_CallMethodDef CallEntries[] = { - {"_did_checkTreatmentUniqueness", (DL_FUNC) &_did_checkTreatmentUniqueness, 3}, - {"_did_checkWeightsUniqueness", (DL_FUNC) &_did_checkWeightsUniqueness, 2}, - {NULL, NULL, 0} -}; - -RcppExport void R_init_did(DllInfo *dll) { - R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); - R_useDynamicSymbols(dll, FALSE); -} diff --git a/src/RcppExports.o b/src/RcppExports.o deleted file mode 100644 index 38062fdfff207162349951313cb76076a4c2be75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 576824 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
1?>QTB#8)>>O*eCmVQD4Es1> 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 -using namespace Rcpp; - -// This code contains a series of sanity checks for preprocessing. -// These checks are used to ensure that the input data is consistent -// Date: 2024-09-12 - -// [[Rcpp::export]] -void checkTreatmentUniqueness(DataFrame dta, String idname, String treatName) { - CharacterVector id = dta[idname]; - NumericVector cohort = dta[treatName]; - - std::map> cohortMap; - - // Building a map where each key is an idname and the value is a set of cohort.names - for (int i = 0; i < id.size(); ++i) { - cohortMap[id[i]].insert(cohort[i]); - } - - // Check if any id has more than one unique cohort.name - for (const auto &pair : cohortMap) { - if (pair.second.size() > 1) { - stop("The value of dname (treatment variable) must be the same across all periods for each particular unit"); - } - } - // If we reach here, all dname are unique by idname -} - -// [[Rcpp::export]] -void checkWeightsUniqueness(DataFrame dta, String idname) { - CharacterVector id = dta[idname]; - NumericVector weights = dta["weights"]; - - std::map> weightsMap; - - // Building a map where each key is an idname and the value is a set of weights - for (int i = 0; i < id.size(); ++i) { - weightsMap[id[i]].insert(weights[i]); - } - - // Check if any id has more than one unique weight - for (const auto &pair : weightsMap) { - if (pair.second.size() > 1) { - stop("The value of weights must be the same across all periods for each particular unit"); - } - } - // If we reach here, all weights are unique by idname -} diff --git a/src/sanity_check.o b/src/sanity_check.o deleted file mode 100644 index 448774fc27aaab1a9b15236b88d03949d8869858..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 707800 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

t51yh?VjC;`wb;@ofqpQG@wW_(WQB1p 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

gt|H`b^QsfV;RFJ)mFDz#(HQKi`A-G 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�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 z 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 Date: Wed, 25 Sep 2024 09:55:27 -0400 Subject: [PATCH 12/50] fast did estimation with balanced panel data --- DESCRIPTION | 2 +- NAMESPACE | 1 + R/att_gt2.R | 2 +- R/compute.att_gt2.R | 38 +++++++++++++++++++------------------ R/pre_process_did2.R | 44 ++++++++++++++++++++++--------------------- R/utility_functions.R | 14 ++++++++++++++ 6 files changed, 60 insertions(+), 41 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 13c51ee..e46f43e 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -15,7 +15,7 @@ Imports: pbapply, ggplot2, ggpubr, - DRDID (>= 1.1.0), + DRDID (>= 1.1.1), generics, methods, tidyr, diff --git a/NAMESPACE b/NAMESPACE index b6d4074..d2b1c4e 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -48,6 +48,7 @@ import(ggplot2) import(ggpubr) import(stats) import(utils) +importFrom(DRDID,drdid_panel) importFrom(generics,glance) importFrom(generics,tidy) importFrom(methods,is) diff --git a/R/att_gt2.R b/R/att_gt2.R index 9b9642e..ffa5230 100644 --- a/R/att_gt2.R +++ b/R/att_gt2.R @@ -118,7 +118,7 @@ #' #' @return an [`MP`] object containing all the results for group-time average #' treatment effects -#' +#' @importFrom DRDID drdid_panel #' @details # Examples: #' #' **Basic [att_gt()] call:** diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index da20e93..0842dcc 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -47,11 +47,6 @@ run_DRDID <- function(cohort_data, covariates, dp){ valid_obs <- which(cohort_data[, !is.na(D)]) cohort_data <- cohort_data[valid_obs] covariates <- covariates[valid_obs,] - # add the intercept - # Check if the ".intercept" name is already in the covariates matrix - #if(".intercept" %in% names(covariates)){stop("did is trying to impute a new column .intercept, but this already exists. Please check your dataset")} - #covariates[, .intercept := -1L] - # coerce to a matrix covariates <- as.matrix(covariates) # num obs. for computing ATT(g,t) @@ -62,35 +57,42 @@ run_DRDID <- function(cohort_data, covariates, dp){ #----------------------------------------------------------------------------- # preparing vectors - Ypost <- cohort_data[, y1] - Ypre <- cohort_data[, y0] - w <- cohort_data[, i.weights] - G <- cohort_data[, D] + # Ypost <- cohort_data[, y1] + # Ypre <- cohort_data[, y0] + # w <- cohort_data[, i.weights] + # G <- cohort_data[, D] if (inherits(dp$est_method, "function")) { # user-specified function - attgt <- est_method(y1=Ypost, y0=Ypre, - D=G, + attgt <- est_method(y1=cohort_data[, y1], + y0=cohort_data[, y0], + D=cohort_data[, D], covariates=covariates, - i.weights=w, + i.weights=cohort_data[, i.weights], inffunc=TRUE) } else if (dp$est_method == "ipw") { # inverse-probability weights - attgt <- DRDID::std_ipw_did_panel(Ypost, Ypre, G, + attgt <- DRDID::std_ipw_did_panel(y1=cohort_data[, y1], + y0=cohort_data[, y0], + D=cohort_data[, D], covariates=covariates, - i.weights=w, + i.weights=cohort_data[, i.weights], boot=FALSE, inffunc=TRUE) } else if (dp$est_method == "reg") { # regression - attgt <- DRDID::reg_did_panel(Ypost, Ypre, G, + attgt <- DRDID::reg_did_panel(y1=cohort_data[, y1], + y0=cohort_data[, y0], + D=cohort_data[, D], covariates=covariates, - i.weights=w, + i.weights=cohort_data[, i.weights], boot=FALSE, inffunc=TRUE) } else { # doubly robust, this is default - attgt <- DRDID::drdid_panel(Ypost, Ypre, G, + attgt <- drdid_panel(y1=cohort_data[, y1], + y0=cohort_data[, y0], + D=cohort_data[, D], covariates=covariates, - i.weights=w, + i.weights=cohort_data[, i.weights], boot=FALSE, inffunc=TRUE) } diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index 05f40f3..5f3beeb 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -219,16 +219,11 @@ did_standarization <- function(data, args){ # First, focus on complete cases and make a balanced dataset data_comp <- data[complete.cases(data)] - # uniqueN for faster unique counts - n_all <- uniqueN(data_comp[[args$idname]]) + # Check if the panel is balanced + is_balanced <- check_balanced_panel(data_comp, id_col = args$idname, time_col = args$tname) - # Make balanced panel - data_bal <- BMisc::makeBalancedPanel(data_comp, args$idname, args$tname) - n_bal <- uniqueN(data_bal[[args$idname]]) - - # Determine if the panel is unbalanced - args$allow_unbalanced_panel <- n_bal < n_all - message(if (args$allow_unbalanced_panel) + args$allow_unbalanced_panel <- !is_balanced + message(if (!is_balanced) "You have an unbalanced panel. Proceeding as such." else "You have a balanced panel. Setting allow_unbalanced_panel = FALSE.") @@ -254,12 +249,19 @@ did_standarization <- function(data, args){ # Make balanced panel - n_old <- uniqueN(data[[args$idname]]) - data <- as.data.table(BMisc::makeBalancedPanel(data, args$idname, args$tname)) # coerce to data.table again. This is ugly, find a better way to do it. - n <- uniqueN(data[[args$idname]]) - - if (n < n_old) { - warning(paste0("Dropped ", n_old - n, " observations while converting to balanced panel.")) + # n_old <- uniqueN(data[[args$idname]]) + # data <- BMisc::makeBalancedPanel(data, args$idname, args$tname, return_data.table = TRUE) # coerce to data.table again. This is ugly, find a better way to do it. + # n <- uniqueN(data[[args$idname]]) + # + # if (n < n_old) { + # warning(paste0("Dropped ", n_old - n, " observations while converting to balanced panel.")) + # } + raw_time_size <- uniqueN(data[[args$tname]]) + unit_count <- data[, .(count = .N), by = get(args$idname)] + if(any(unit_count[, count < raw_time_size])){ + mis_unit <- unit_count[count < raw_time_size] + warning(nrow(mis_unit), " units are missing in some periods. Converting to balanced panel by dropping them.") + data <- data[!get(args$idname) %in% mis_unit[, get(args$idname)]] } # If all data is dropped, stop execution @@ -269,12 +271,12 @@ did_standarization <- function(data, args){ n <- data[get(args$tname) == tlist[1], .N] + # Check if the treatment is irreversible # Ensure The value of gname must be the same across all periods for each particular individual. - #checkTreatmentUniqueness(data, args$idname, args$gname) - check_treatment_uniqueness <- data[, .(constant = all(get(args$gname)[1] == get(args$gname))), by = get(args$idname)][, all(constant)] - if (!check_treatment_uniqueness) { - stop("The value of gname (treatment variable) must be the same across all periods for each particular unit. The treatment must be irreversible.") - } + # check_treatment_uniqueness <- data[, .(constant = uniqueN(get(args$gname)) == 1), by = get(args$idname)][, all(constant)] + # if (!check_treatment_uniqueness) { + # stop("The value of gname (treatment variable) must be the same across all periods for each particular unit. The treatment must be irreversible.") + # } } } @@ -337,6 +339,7 @@ did_standarization <- function(data, args){ stop("Never treated group is too small, try setting control_group=\"notyettreated\"") } } + #----------------------------------------------------------------------------- # Sort the data for easy access later on setorderv(data, c(args$tname, args$gname, args$idname), c(1,1,1)) @@ -357,7 +360,6 @@ did_standarization <- function(data, args){ } get_did_tensors <- function(data, args){ - # TODO; HERE I NEED TO GENERATE THE FOLLOWING ARGUMENTS # 1. vector of weights -> DONE # 2. matrix of covariates -> DONE # 3. Cohort counts -> DONE diff --git a/R/utility_functions.R b/R/utility_functions.R index 7b1fa23..02d7959 100644 --- a/R/utility_functions.R +++ b/R/utility_functions.R @@ -73,3 +73,17 @@ get_wide_data <- function(data, yname, idname, tname) { return(data) } + +check_balance <- function(data, id_col, time_col) { + + # Count the number of observations per unit (idname) + panel_counts <- data[, .N, by = get(id_col)] + + # Determine the maximum number of time periods for any unit + max_time_periods <- data[, uniqueN(get(time_col))] + + # Check if every unit has the same number of time periods as max_time_periods + is_balanced <- all(panel_counts$N == max_time_periods) + + return(is_balanced) +} From 1485868fa1508172027b9ac4ea70921dd8b6267d Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Sat, 28 Sep 2024 23:56:15 -0400 Subject: [PATCH 13/50] improving documentation for current procedure in panel data --- NAMESPACE | 10 ++++++- R/DIDparams2.R | 20 ++++--------- R/att_gt2.R | 5 ++-- R/compute.att_gt2.R | 58 ++++++++++++++++++++++++++++-------- R/pre_process_did2.R | 48 ++++++++++++++--------------- R/utility_functions.R | 12 +++++++- man/DIDparams2.Rd | 30 ------------------- man/get_wide_data.Rd | 24 --------------- man/run_att_gt_estimation.Rd | 2 +- 9 files changed, 96 insertions(+), 113 deletions(-) delete mode 100644 man/DIDparams2.Rd delete mode 100644 man/get_wide_data.Rd diff --git a/NAMESPACE b/NAMESPACE index d2b1c4e..796583d 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -20,10 +20,15 @@ export(aggte) export(att_gt) export(att_gt2) export(build_sim_dataset) +export(check_balance) export(compute.aggte) export(compute.att_gt) export(compute.att_gt2) export(conditional_did_pretest) +export(did_standarization) +export(get_did_cohort_index) +export(get_did_tensors) +export(get_pret) export(get_wide_data) export(ggdid) export(glance) @@ -34,6 +39,7 @@ export(pre_process_did) export(pre_process_did2) export(process_attgt) export(reset.sim) +export(run_DRDID) export(run_att_gt_estimation) export(sim) export(splot) @@ -43,12 +49,14 @@ export(trimmer) export(validate_args) import(BMisc) import(data.table) -import(dreamerr) import(ggplot2) import(ggpubr) import(stats) import(utils) importFrom(DRDID,drdid_panel) +importFrom(DRDID,reg_did_panel) +importFrom(DRDID,std_ipw_did_panel) +importFrom(dreamerr,check_set_arg) importFrom(generics,glance) importFrom(generics,tidy) importFrom(methods,is) diff --git a/R/DIDparams2.R b/R/DIDparams2.R index b0f4fd7..54837ed 100644 --- a/R/DIDparams2.R +++ b/R/DIDparams2.R @@ -1,20 +1,12 @@ #' @title DIDparams #' -#' @description Object to hold did parameters that are passed across functions -#' -#' @inheritParams att_gt -#' @inheritParams pre_process_did -#' @param n The number of observations. This is equal to the -#' number of units (which may be different from the number -#' of rows in a panel dataset). -#' @param nG The number of groups -#' @param nT The number of time periods -#' @param tlist a vector containing each time period -#' @param glist a vector containing each group -#' @param true_repeated_cross_sections Whether or not the data really -#' is repeated cross sections. (We include this because unbalanced -#' panel code runs through the repeated cross sections code) +#' @description Object to hold DiD parameters that are passed across functions #' +#' @inheritParams att_gt2 +#' @inheritParams pre_process_did2 +#' @param did_tensor list of outcome tensors that are used in the estimation +#' @param args list of arguments that are used in the estimation +#' @noRd #' @export DIDparams2 <- function(did_tensors, args, call=NULL) { # get the arguments from args diff --git a/R/att_gt2.R b/R/att_gt2.R index ffa5230..a5cf107 100644 --- a/R/att_gt2.R +++ b/R/att_gt2.R @@ -159,10 +159,9 @@ #' data=mpdta) #' summary(out3) #' ``` -#' +#' @importFrom dreamerr check_set_arg +#' @importFrom DRDID drdid_panel reg_did_panel std_ipw_did_panel #' @export - - att_gt2 <- function(yname, tname, idname=NULL, diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index 0842dcc..684458c 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -1,14 +1,38 @@ -get_pret <- function(g,t, base_period, anticipation){ +#' @title Get pre treatment period +#' @description A utility function to get the pre treatment period for a given g,t pair. +#' +#' @param group Group. +#' @param time Time period. +#' @param base_period Whether to use a "varying" base period or a +#' "universal" base period. +#' @param anticipation The number of time periods before participating +#' in the treatment where units can anticipate participating in the +#' treatment and therefore it can affect their untreated potential outcomes +#' +#' @return Time period indicating the pre treatment period. +#' @noRd +#' @export +get_pret <- function(group, time, base_period, anticipation){ if(base_period == "universal"){ - pret <- g - 1 - anticipation + pret <- group - 1 - anticipation } else { - pret <- ifelse(t >= g, g - 1 - anticipation, t - 1) + pret <- ifelse(time >= group, group - 1 - anticipation, time - 1) } return(pret) } -# get the cohort for the current g,t values +#' @title Get the cohort for the current g,t values +#' @description A utility function to get vector with index of units that will be included in the DiD estimation for the current g,t pair. +#' +#' @param group Group. +#' @param time Time period. +#' @param pret Pre treatment period. +#' @param dp DiD parameters. +#' +#' @return Time period indicating the pre treatment period. +#' @noRd +#' @export get_did_cohort_index <- function(group, time, pret, dp){ # return a vector of dimension id_size with 1, 0 or NA values treated_groups <- dp$treated_groups @@ -32,7 +56,16 @@ get_did_cohort_index <- function(group, time, pret, dp){ return(did_cohort_index) } -# Wrapper to run DRDID package +#' @title Wrapper to run DRDID package +#' @description A utility function to run the DRDID package for the current g,t pair. +#' +#' @param cohort_data Data table with the cohort data for the current g,t pair +#' @param covariates Matrix of covariates to be used in the estimation +#' @param dp DiD parameters. +#' +#' @return Time period indicating the pre treatment period. +#' @noRd +#' @export run_DRDID <- function(cohort_data, covariates, dp){ if(dp$panel){ @@ -72,7 +105,7 @@ run_DRDID <- function(cohort_data, covariates, dp){ inffunc=TRUE) } else if (dp$est_method == "ipw") { # inverse-probability weights - attgt <- DRDID::std_ipw_did_panel(y1=cohort_data[, y1], + attgt <- std_ipw_did_panel(y1=cohort_data[, y1], y0=cohort_data[, y0], D=cohort_data[, D], covariates=covariates, @@ -80,7 +113,7 @@ run_DRDID <- function(cohort_data, covariates, dp){ boot=FALSE, inffunc=TRUE) } else if (dp$est_method == "reg") { # regression - attgt <- DRDID::reg_did_panel(y1=cohort_data[, y1], + attgt <- reg_did_panel(y1=cohort_data[, y1], y0=cohort_data[, y0], D=cohort_data[, D], covariates=covariates, @@ -133,7 +166,7 @@ run_DRDID <- function(cohort_data, covariates, dp){ } -#' @title Compute Group-Time Average Treatment Effects +#' @title Run ATT estimation for a given group-time pair #' #' @description `run_att_gt_estimation` does the main work for computing #' multiperiod group-time average treatment effects @@ -149,13 +182,13 @@ run_att_gt_estimation <- function(gt, dp){ # get the current g,t values g <- gt[1] t <- gt[2] - cat("\n Evaluation G =", g, ";T =", t) + if(dp$print_details){cat("\n Evaluating (g,t) = (",g,t,")")} pret <- get_pret(g, t, dp$base_period, dp$anticipation) # if we are in period (g-1) or base period out of bounds, normalize results to be equal to NULL # and break without computing anything if(t == pret | !pret %in% dp$time_periods){ - cat("\n Skipping G", g, "T", t, "as base period is out of bounds or equal to treatment period") + if(dp$print_details){cat("\n Skipping (g,t) = (",g,t,") as base period is out of bounds or equal to treatment period")} return(NULL) } @@ -164,7 +197,7 @@ run_att_gt_estimation <- function(gt, dp){ # In case of not treatment and control group in the cohort, return NULL valid_did_cohort <- any(did_cohort_index == 1) & any(did_cohort_index == 0) if(!isTRUE(valid_did_cohort)){ - cat("\n Skipping G =", g, "T =", t, "as no treatment group or control group found") + if(dp$print_details){cat("\n Skipping (g,t) = (",g,t,") as no treatment group or control group found")} return(NULL) } @@ -176,7 +209,7 @@ run_att_gt_estimation <- function(gt, dp){ # run estimation did_result <- tryCatch(run_DRDID(cohort_data, covariates, dp), error = function(e) { - warning("\n Error in computing internal 2x2 DiD for G = ", g, ", T = ", t, ":", e$message) + warning("\n Error in computing internal 2x2 DiD for (g,t) = (",g,t,"):", e$message) return(NULL) }) return(did_result) @@ -202,7 +235,6 @@ run_att_gt_estimation <- function(gt, dp){ #' @export compute.att_gt2 <- function(dp) { - # TODO; do we need the object "data" here if we already have the tensors?? n <- dp$id_count # Total number of units treated_groups <- dp$treated_groups time_periods <- dp$time_periods diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index 5f3beeb..938f312 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -4,7 +4,6 @@ #' @param args list of arguments to validate #' #' @return nothing, but throws an error if any of the arguments are not valid -#' @import dreamerr #' @export #' @noRd validate_args <- function(args, data){ @@ -27,15 +26,9 @@ validate_args <- function(args, data){ # check if times periods are numeric if(!data[, is.integer(get(args$tname))]){stop("tname = ",args$tname, " is not integer. Please convert it")} - # if (!all(sapply(data[, get(args$tname)], is.integer))) { - # stop("tname = ",tname, " is not integer. Please convert it") - # } # Check if gname is numeric if(!data[, is.numeric(get(args$gname))]){stop("gname = ",args$gname, " is not numeric. Please convert it")} - # if (!all(sapply(data[, get(args$gname)], is.numeric))) { - # stop("gname = ",gname, " is not numeric. Please convert it") - # } # Flag for idname if(!is.null(args$idname)){ @@ -45,12 +38,8 @@ validate_args <- function(args, data){ # check if idname is integer if(!data[, is.integer(get(args$idname))]){stop("idname = ",args$idname, " is not integer. Please convert it")} - # if (!all(sapply(data[, get(args$idname)], is.integer))) { - # stop("data[, idname] must be integer Please convert it.") - # } # Check if gname is unique by idname: irreversibility of the treatment - #checkTreatmentUniqueness(data, args$idname, args$gname) check_treatment_uniqueness <- data[, .(constant = all(get(args$gname)[1] == get(args$gname))), by = get(args$idname)][, all(constant)] if (!check_treatment_uniqueness) { stop("The value of gname (treatment variable) must be the same across all periods for each particular unit. The treatment must be irreversible.") @@ -67,9 +56,6 @@ validate_args <- function(args, data){ # Flag for based period: not in c("universal", "varying"), stop base_period_message <- "base_period must be either 'universal' or 'varying'." dreamerr::check_set_arg(args$base_period, "match", .choices = c("universal", "varying"), .message = base_period_message, .up = 1) - # if (!args$base_period %in% c("universal", "varying")) { - # stop("base_period must be either 'universal' or 'varying'.") - # } # Flags for cluster variable if (!is.null(args$clustervars)) { @@ -106,6 +92,14 @@ validate_args <- function(args, data){ } +#' @title DiD standarization +#' @description A utility function to coerce the data in standard format +#' @param data data.table used in function +#' @param args list of arguments to validate +#' +#' @return A List, containing order data and arguments +#' @export +#' @noRd did_standarization <- function(data, args){ # keep relevant columns in data cols_to_keep <- c(args$idname, args$tname, args$gname, args$yname, args$weightsname, args$clustervars) @@ -273,10 +267,10 @@ did_standarization <- function(data, args){ # Check if the treatment is irreversible # Ensure The value of gname must be the same across all periods for each particular individual. - # check_treatment_uniqueness <- data[, .(constant = uniqueN(get(args$gname)) == 1), by = get(args$idname)][, all(constant)] - # if (!check_treatment_uniqueness) { - # stop("The value of gname (treatment variable) must be the same across all periods for each particular unit. The treatment must be irreversible.") - # } + check_treatment_uniqueness <- data[, .(constant = uniqueN(get(args$gname)) == 1), by = get(args$idname)][, all(constant)] + if (!check_treatment_uniqueness) { + stop("The value of gname (treatment variable) must be the same across all periods for each particular unit. The treatment must be irreversible.") + } } } @@ -359,13 +353,16 @@ did_standarization <- function(data, args){ return(list(data = data, args = args)) } +#' @title DiD tensors +#' @description A utility function that split the data in a list of outcomes tensors and a list of arguments. +#' Tensor are objects of dimension id_count x 1 x time_periods_count and are used for faster filtering in the computation of the DiD estimator. +#' @param data data.table used in function +#' @param args list of arguments to validate +#' +#' @return A List, containing outcomes tensor, time invariant data, cohort counts, covariates matrix, cluster vector and weights vector. +#' @export +#' @noRd get_did_tensors <- function(data, args){ - # 1. vector of weights -> DONE - # 2. matrix of covariates -> DONE - # 3. Cohort counts -> DONE - # 5. data.table with time-invariant variables: tname, gname, idname, xformla -> DONE - # 6. List of outcomes overtime. Each vector has to be dimension "n" -> DONE - # 7. Vector of cluster variable if any -> DONE # Getting the outcomes tensor: a vector a outcome variables per time period of dimension id_count x 1 x time_periods_count outcomes_tensor <- list() @@ -472,7 +469,6 @@ pre_process_did2 <- function(yname, # gathering all the arguments except data args_names <- setdiff(names(formals()), "data") args <- mget(args_names, sys.frame(sys.nframe())) - print(args) # run error checking on arguments validate_args(args, data) @@ -489,7 +485,7 @@ pre_process_did2 <- function(yname, did_tensors <- get_did_tensors(cleaned_did$data, cleaned_did$args) # store parameters for passing around later - dp <- DIDparams2(did_tensors, cleaned_did$args, call=call) # TODO; we need to change the arguments and returns of DIDparams() + dp <- DIDparams2(did_tensors, cleaned_did$args, call=call) return(dp) } diff --git a/R/utility_functions.R b/R/utility_functions.R index 02d7959..03b6c8f 100644 --- a/R/utility_functions.R +++ b/R/utility_functions.R @@ -49,7 +49,7 @@ trimmer <- function(g, tname, idname, gname, xformla, data, control_group="notye #' #' @return data from first period with .y0 (outcome in first period), .y1 (outcome in second period), #' and .dy (change in outcomes over time) appended to it -#' +#' @noRd #' @export get_wide_data <- function(data, yname, idname, tname) { # check if data is data.table @@ -74,6 +74,16 @@ get_wide_data <- function(data, yname, idname, tname) { return(data) } +#' @title Check balanced panal data +#' @description A utility function to check if your dataset is a balanced panel dataset. +#' +#' @param data data.table used in function +#' @param id_col name of id column in the dataset +#' @param time_col name of time column in the dataset +#' +#' @return Boolean indicating if the dataset is balanced or not. +#' @noRd +#' @export check_balance <- function(data, id_col, time_col) { # Count the number of observations per unit (idname) diff --git a/man/DIDparams2.Rd b/man/DIDparams2.Rd deleted file mode 100644 index 43c93f0..0000000 --- a/man/DIDparams2.Rd +++ /dev/null @@ -1,30 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/DIDparams2.R -\name{DIDparams2} -\alias{DIDparams2} -\title{DIDparams} -\usage{ -DIDparams2(did_tensors, args, call = NULL) -} -\arguments{ -\item{call}{Function call to att_gt} - -\item{n}{The number of observations. This is equal to the -number of units (which may be different from the number -of rows in a panel dataset).} - -\item{nG}{The number of groups} - -\item{nT}{The number of time periods} - -\item{tlist}{a vector containing each time period} - -\item{glist}{a vector containing each group} - -\item{true_repeated_cross_sections}{Whether or not the data really -is repeated cross sections. (We include this because unbalanced -panel code runs through the repeated cross sections code)} -} -\description{ -Object to hold did parameters that are passed across functions -} diff --git a/man/get_wide_data.Rd b/man/get_wide_data.Rd deleted file mode 100644 index 56d95d3..0000000 --- a/man/get_wide_data.Rd +++ /dev/null @@ -1,24 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utility_functions.R -\name{get_wide_data} -\alias{get_wide_data} -\title{get_wide_data} -\usage{ -get_wide_data(data, yname, idname, tname) -} -\arguments{ -\item{data}{data.table used in function} - -\item{yname}{name of outcome variable that can change over time} - -\item{idname}{unique id} - -\item{tname}{time period name} -} -\value{ -data from first period with .y0 (outcome in first period), .y1 (outcome in second period), -and .dy (change in outcomes over time) appended to it -} -\description{ -A utility function to convert long data to wide data, i.e., takes a 2 period dataset and turns it into a cross sectional dataset. -} diff --git a/man/run_att_gt_estimation.Rd b/man/run_att_gt_estimation.Rd index b05b8a8..b8b389f 100644 --- a/man/run_att_gt_estimation.Rd +++ b/man/run_att_gt_estimation.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/compute.att_gt2.R \name{run_att_gt_estimation} \alias{run_att_gt_estimation} -\title{Compute Group-Time Average Treatment Effects} +\title{Run ATT estimation for a given group-time pair} \usage{ run_att_gt_estimation(gt, dp) } From 540d2a8eb53c9fbb566072e80e9e56ab8cd8d7f9 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Sun, 29 Sep 2024 15:12:54 -0400 Subject: [PATCH 14/50] fixing results for base_period = 'universal' --- R/att_gt2.R | 2 +- R/compute.att_gt2.R | 100 ++++++++++++++++++++--------------- R/pre_process_did2.R | 20 +++---- man/att_gt2.Rd | 2 +- man/compute.att_gt2.Rd | 4 +- man/pre_process_did2.Rd | 2 +- man/run_att_gt_estimation.Rd | 4 +- 7 files changed, 75 insertions(+), 59 deletions(-) diff --git a/R/att_gt2.R b/R/att_gt2.R index a5cf107..42eebd1 100644 --- a/R/att_gt2.R +++ b/R/att_gt2.R @@ -170,7 +170,7 @@ att_gt2 <- function(yname, data, panel=TRUE, allow_unbalanced_panel=FALSE, - control_group=c("nevertreated","notyettreated"), + control_group="nevertreated", anticipation=0, weightsname=NULL, alp=0.05, diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index 684458c..4a44a18 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -28,27 +28,29 @@ get_pret <- function(group, time, base_period, anticipation){ #' @param group Group. #' @param time Time period. #' @param pret Pre treatment period. -#' @param dp DiD parameters. +#' @param dp2 DiD parameters v2.0. #' #' @return Time period indicating the pre treatment period. #' @noRd #' @export -get_did_cohort_index <- function(group, time, pret, dp){ +get_did_cohort_index <- function(group, time, pret, dp2){ # return a vector of dimension id_size with 1, 0 or NA values - treated_groups <- dp$treated_groups + treated_groups <- dp2$treated_groups + time_periods <- dp2$time_periods # based on control_group option - min_control_group <- ifelse(dp$control_group == "notyettreated", max(time, pret) + dp$anticipation + 1, Inf) - #max_control_group <- ifelse(dp$control_group == "notyettreated", max(treated_groups), Inf) + min_control_group_index <- ifelse(dp2$control_group == "notyettreated", max(time, pret) + dp2$anticipation + 1, Inf) + min_control_group <- ifelse(min_control_group_index == Inf, Inf, time_periods[min_control_group_index]) max_control_group <- Inf # always include the never treated units + # select the DiD cohort - did_cohort_index <- rep(NA, dp$id_count) + did_cohort_index <- rep(NA, dp2$id_count) # getting the index to get units who will participate in the estimation for the (g,t) cell. - start_control <- dp$cohort_counts[cohort < min_control_group, sum(cohort_size)]+1 - end_control <- dp$cohort_counts[cohort <= max_control_group, sum(cohort_size)] - index <- which(dp$cohort_counts[, cohort] == group) - start_treat <- ifelse(index == 1, 1, dp$cohort_counts[1:(index-1), sum(cohort_size)]+1) - end_treat <- dp$cohort_counts[1:index, sum(cohort_size)] + start_control <- dp2$cohort_counts[cohort < min_control_group, sum(cohort_size)]+1 + end_control <- dp2$cohort_counts[cohort <= max_control_group, sum(cohort_size)] + index <- which(dp2$cohort_counts[, cohort] == time_periods[group]) + start_treat <- ifelse(index == 1, 1, dp2$cohort_counts[1:(index-1), sum(cohort_size)]+1) + end_treat <- dp2$cohort_counts[1:index, sum(cohort_size)] # set the cohort index; .C = 0 and .G = 1 did_cohort_index[start_control:end_control] <- 0 did_cohort_index[start_treat:end_treat] <- 1 @@ -61,14 +63,14 @@ get_did_cohort_index <- function(group, time, pret, dp){ #' #' @param cohort_data Data table with the cohort data for the current g,t pair #' @param covariates Matrix of covariates to be used in the estimation -#' @param dp DiD parameters. +#' @param dp2 DiD parameters v2.0. #' #' @return Time period indicating the pre treatment period. #' @noRd #' @export -run_DRDID <- function(cohort_data, covariates, dp){ +run_DRDID <- function(cohort_data, covariates, dp2){ - if(dp$panel){ + if(dp2$panel){ # -------------------------------------- # Panel Data # -------------------------------------- @@ -79,7 +81,11 @@ run_DRDID <- function(cohort_data, covariates, dp){ # pick up the indices for units that will be used to compute ATT(g,t) valid_obs <- which(cohort_data[, !is.na(D)]) cohort_data <- cohort_data[valid_obs] - covariates <- covariates[valid_obs,] + if(dp2$xformla != ~1){ + covariates <- covariates[valid_obs,] + } else { + covariates <- rep(1, length(valid_obs)) + } covariates <- as.matrix(covariates) # num obs. for computing ATT(g,t) @@ -95,7 +101,7 @@ run_DRDID <- function(cohort_data, covariates, dp){ # w <- cohort_data[, i.weights] # G <- cohort_data[, D] - if (inherits(dp$est_method, "function")) { + if (inherits(dp2$est_method, "function")) { # user-specified function attgt <- est_method(y1=cohort_data[, y1], y0=cohort_data[, y0], @@ -103,7 +109,7 @@ run_DRDID <- function(cohort_data, covariates, dp){ covariates=covariates, i.weights=cohort_data[, i.weights], inffunc=TRUE) - } else if (dp$est_method == "ipw") { + } else if (dp2$est_method == "ipw") { # inverse-probability weights attgt <- std_ipw_did_panel(y1=cohort_data[, y1], y0=cohort_data[, y0], @@ -111,7 +117,7 @@ run_DRDID <- function(cohort_data, covariates, dp){ covariates=covariates, i.weights=cohort_data[, i.weights], boot=FALSE, inffunc=TRUE) - } else if (dp$est_method == "reg") { + } else if (dp2$est_method == "reg") { # regression attgt <- reg_did_panel(y1=cohort_data[, y1], y0=cohort_data[, y0], @@ -171,43 +177,43 @@ run_DRDID <- function(cohort_data, covariates, dp){ #' @description `run_att_gt_estimation` does the main work for computing #' multiperiod group-time average treatment effects #' @param gt A numeric vector of the group and time period coming from a list of (g,t) cells -#' @param dp A DIDparams object +#' @param dp2 A DIDparams object v2.0 #' #' @return a list with the gt cell and the results after performing estimation #' #' @keywords internal #' #' @export -run_att_gt_estimation <- function(gt, dp){ +run_att_gt_estimation <- function(gt, dp2){ # get the current g,t values - g <- gt[1] - t <- gt[2] - if(dp$print_details){cat("\n Evaluating (g,t) = (",g,t,")")} - pret <- get_pret(g, t, dp$base_period, dp$anticipation) + g <- gt[[1]] + t <- gt[[2]] + if(dp2$print_details){cat("\n Evaluating (g,t) = (",g,t,")")} + pret <- get_pret(g, t, dp2$base_period, dp2$anticipation) # if we are in period (g-1) or base period out of bounds, normalize results to be equal to NULL # and break without computing anything - if(t == pret | !pret %in% dp$time_periods){ - if(dp$print_details){cat("\n Skipping (g,t) = (",g,t,") as base period is out of bounds or equal to treatment period")} + if(t == pret | !pret %in% seq_along(dp2$time_periods)){ + if(dp2$print_details){cat("\n Skipping (g,t) = (",g,t,") as base period is out of bounds or equal to treatment period")} return(NULL) } - # get treatment and control group - did_cohort_index <- get_did_cohort_index(g, t, pret, dp) + # get units in treatment and control group + did_cohort_index <- get_did_cohort_index(g, t, pret, dp2) # In case of not treatment and control group in the cohort, return NULL valid_did_cohort <- any(did_cohort_index == 1) & any(did_cohort_index == 0) if(!isTRUE(valid_did_cohort)){ - if(dp$print_details){cat("\n Skipping (g,t) = (",g,t,") as no treatment group or control group found")} + if(dp2$print_details){cat("\n Skipping (g,t) = (",g,t,") as no treatment group or control group found")} return(NULL) } # Get the matrix of covariates - covariates <- dp$covariates - cohort_data <- data.table(did_cohort_index, dp$outcomes_tensor[[t]], dp$outcomes_tensor[[pret]], dp$weights_vector) + covariates <- dp2$covariates + cohort_data <- data.table(did_cohort_index, dp2$outcomes_tensor[[t]], dp2$outcomes_tensor[[pret]], dp2$weights_vector) names(cohort_data) <- c("D", "y1", "y0", "i.weights") # run estimation - did_result <- tryCatch(run_DRDID(cohort_data, covariates, dp), + did_result <- tryCatch(run_DRDID(cohort_data, covariates, dp2), error = function(e) { warning("\n Error in computing internal 2x2 DiD for (g,t) = (",g,t,"):", e$message) return(NULL) @@ -221,7 +227,7 @@ run_att_gt_estimation <- function(gt, dp){ #' @description `compute.att_gt` does the (g,t) cell and send it to estimation, #' then do all the post process after estimation #' -#' @param dp A DIDparams object +#' @param dp2 A DIDparams object v2.0 #' #' @return a list with length equal to the number of groups times the #' number of time periods; each element of the list contains an @@ -233,15 +239,23 @@ run_att_gt_estimation <- function(gt, dp){ #' @keywords internal #' #' @export -compute.att_gt2 <- function(dp) { - - n <- dp$id_count # Total number of units - treated_groups <- dp$treated_groups - time_periods <- dp$time_periods +compute.att_gt2 <- function(dp2) { + + n <- dp2$id_count # Total number of units + treated_groups <- dp2$treated_groups + time_periods <- dp2$time_periods + # standardize the times to indexes + # Create a mapping for time_periods to standardized form + time_mapping <- setNames(seq_along(time_periods), time_periods) + # Create a reverse mapping from standardized values back to the original + reverse_mapping <- setNames(as.numeric(names(time_mapping)), time_mapping) + # Convert both time_periods and treated_group using the mapping + time_periods <- time_mapping[as.character(time_periods)] + treated_groups <- time_mapping[as.character(treated_groups)] # Get (g,t) cells to perform computations. This replace the nested for-loop. gt_cells <- expand.grid(g = treated_groups, t = time_periods, stringsAsFactors = FALSE) gt_cells <- gt_cells[order(gt_cells$g, gt_cells$t), ] - total_cols <- nrow(gt_cells) + total_gt_iterations <- nrow(gt_cells) # Running estimation using run_att_gt_estimation() function @@ -251,7 +265,7 @@ compute.att_gt2 <- function(dp) { t <- gt_cell$t # Run estimation - gt_result <- run_att_gt_estimation(c(g, t), dp) + gt_result <- run_att_gt_estimation(c(g, t), dp2) # Compute post-treatment indicator post.treat <- as.integer(g <= t) @@ -259,7 +273,7 @@ compute.att_gt2 <- function(dp) { if (is.null(gt_result) || is.null(gt_result$att)) { # Estimation failed or was skipped inffunc_updates <- rep(0, n) - gt_result <- list(att = 0, group = g, year = t, post = post.treat, inffunc_updates = inffunc_updates) + gt_result <- list(att = 0, group = reverse_mapping[g], year = reverse_mapping[t], post = post.treat, inffunc_updates = inffunc_updates) return(gt_result) } else { @@ -274,13 +288,13 @@ compute.att_gt2 <- function(dp) { # Save ATT and influence function inffunc_updates <- inf_func - gt_result <- list(att = att, group = g, year = t, post = post.treat, inffunc_updates = inffunc_updates) + gt_result <- list(att = att, group = reverse_mapping[g], year = reverse_mapping[t], post = post.treat, inffunc_updates = inffunc_updates) return(gt_result) } } # run the estimation for each (g,t) pair with process_gt - gt_results <- lapply(seq_len(total_cols), function(idx) { + gt_results <- lapply(seq_len(total_gt_iterations), function(idx) { process_gt(gt_cells[idx, ], idx) }) diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index 938f312..e483a50 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -36,8 +36,8 @@ validate_args <- function(args, data){ name_message <- "__ARG__ must be a character scalar and a name of a column from the dataset." dreamerr::check_set_arg(args$idname, "match", .choices = data_names, .message = name_message, .up = 1) - # check if idname is integer - if(!data[, is.integer(get(args$idname))]){stop("idname = ",args$idname, " is not integer. Please convert it")} + # check if idname is numeric + if(!data[, is.numeric(get(args$idname))]){stop("idname = ", args$idname, " is not numeric. Please convert it")} # Check if gname is unique by idname: irreversibility of the treatment check_treatment_uniqueness <- data[, .(constant = all(get(args$gname)[1] == get(args$gname))), by = get(args$idname)][, all(constant)] @@ -367,18 +367,20 @@ get_did_tensors <- function(data, args){ # Getting the outcomes tensor: a vector a outcome variables per time period of dimension id_count x 1 x time_periods_count outcomes_tensor <- list() if(!args$allow_unbalanced_panel){ - for(time in args$time_periods){ + for(time in seq_along(args$time_periods)){ + # iterating over index # creating buckets of outcomes of size from 1 to id_size, id_size+1 to 2*id_size, etc. start <- (time - 1) * args$id_count + 1 end <- time * args$id_count outcomes_tensor[[time]] <- data[seq(start,end), get(args$yname)] } } else { - for(t in args$time_periods){ + # TODO; EDIT THIS FOR UNBALANCED PANEL OR RCS + for(time in seq_along(args$time_periods)){ outcome_vector_time <- rep(NA, args$id_count) # fill vector with NAs - data_time <- data[(get(args$tname) == t), get(args$idname)] # data observed in time t - outcome_vector_time[data_time] <- data[get(args$tname) == t, get(args$yname)] - outcomes_tensor[[t]] <- outcome_vector_time + data_time <- data[(get(args$tname) == time), get(args$idname)] # data observed in time t + outcome_vector_time[data_time] <- data[get(args$tname) == time, get(args$yname)] + outcomes_tensor[[time]] <- outcome_vector_time } } @@ -401,7 +403,7 @@ get_did_tensors <- function(data, args){ # Get covariates if any if(args$xformla == ~1){ - covariates <- NA + covariates <- rep(1, args$id_count) } else { covariates <- as.data.table(model.frame(args$xformla, data = invariant_data, na.action = na.pass)) } @@ -445,7 +447,7 @@ pre_process_did2 <- function(yname, data, panel = TRUE, allow_unbalanced_panel, - control_group = c("nevertreated","notyettreated"), + control_group = "nevertreated", anticipation = 0, weightsname = NULL, alp = 0.05, diff --git a/man/att_gt2.Rd b/man/att_gt2.Rd index 2f4f26f..94a9886 100644 --- a/man/att_gt2.Rd +++ b/man/att_gt2.Rd @@ -13,7 +13,7 @@ att_gt2( data, panel = TRUE, allow_unbalanced_panel = FALSE, - control_group = c("nevertreated", "notyettreated"), + control_group = "nevertreated", anticipation = 0, weightsname = NULL, alp = 0.05, diff --git a/man/compute.att_gt2.Rd b/man/compute.att_gt2.Rd index 4c42bc3..b75e178 100644 --- a/man/compute.att_gt2.Rd +++ b/man/compute.att_gt2.Rd @@ -4,10 +4,10 @@ \alias{compute.att_gt2} \title{Compute Group-Time Average Treatment Effects} \usage{ -compute.att_gt2(dp) +compute.att_gt2(dp2) } \arguments{ -\item{dp}{A DIDparams object} +\item{dp2}{A DIDparams object v2.0} } \value{ a list with length equal to the number of groups times the diff --git a/man/pre_process_did2.Rd b/man/pre_process_did2.Rd index 150c087..10fea7c 100644 --- a/man/pre_process_did2.Rd +++ b/man/pre_process_did2.Rd @@ -13,7 +13,7 @@ pre_process_did2( data, panel = TRUE, allow_unbalanced_panel, - control_group = c("nevertreated", "notyettreated"), + control_group = "nevertreated", anticipation = 0, weightsname = NULL, alp = 0.05, diff --git a/man/run_att_gt_estimation.Rd b/man/run_att_gt_estimation.Rd index b8b389f..1fd0ba1 100644 --- a/man/run_att_gt_estimation.Rd +++ b/man/run_att_gt_estimation.Rd @@ -4,12 +4,12 @@ \alias{run_att_gt_estimation} \title{Run ATT estimation for a given group-time pair} \usage{ -run_att_gt_estimation(gt, dp) +run_att_gt_estimation(gt, dp2) } \arguments{ \item{gt}{A numeric vector of the group and time period coming from a list of (g,t) cells} -\item{dp}{A DIDparams object} +\item{dp2}{A DIDparams object v2.0} } \value{ a list with the gt cell and the results after performing estimation From 884dfaa2b4dd73a52949bfecc485a844520a63d1 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Sun, 29 Sep 2024 17:11:33 -0400 Subject: [PATCH 15/50] fixing output according to base_period --- R/compute.att_gt2.R | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index 4a44a18..aeb5e88 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -194,7 +194,7 @@ run_att_gt_estimation <- function(gt, dp2){ # if we are in period (g-1) or base period out of bounds, normalize results to be equal to NULL # and break without computing anything if(t == pret | !pret %in% seq_along(dp2$time_periods)){ - if(dp2$print_details){cat("\n Skipping (g,t) = (",g,t,") as base period is out of bounds or equal to treatment period")} + if(dp2$print_details){cat("\n Skipping (g,t) = (",g,t,") as base period is out of bounds or for varying base period.")} return(NULL) } @@ -272,9 +272,13 @@ compute.att_gt2 <- function(dp2) { if (is.null(gt_result) || is.null(gt_result$att)) { # Estimation failed or was skipped - inffunc_updates <- rep(0, n) - gt_result <- list(att = 0, group = reverse_mapping[g], year = reverse_mapping[t], post = post.treat, inffunc_updates = inffunc_updates) - return(gt_result) + if(dp2$base_period == "universal"){ + inffunc_updates <- rep(0, n) + gt_result <- list(att = 0, group = reverse_mapping[g], year = reverse_mapping[t], post = post.treat, inffunc_updates = inffunc_updates) + return(gt_result) + } else { + return(NULL) + } } else { att <- gt_result$att @@ -298,6 +302,9 @@ compute.att_gt2 <- function(dp2) { process_gt(gt_cells[idx, ], idx) }) + # Filter out NULL results + gt_results <- Filter(Negate(is.null), gt_results) + # Post processing: Apply the updates to the sparse matrix in one shot n_rows <- length(gt_results[[1]]$inffunc_updates) update_inffunc <- data.table(matrix(NA_real_, nrow = n_rows, ncol = length(gt_results))) From 5d80a0fd96a64d32f6c82284061a466d81670d5f Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Sun, 29 Sep 2024 17:30:22 -0400 Subject: [PATCH 16/50] fixing control_group index --- R/compute.att_gt2.R | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index aeb5e88..8a77a38 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -39,7 +39,9 @@ get_did_cohort_index <- function(group, time, pret, dp2){ time_periods <- dp2$time_periods # based on control_group option min_control_group_index <- ifelse(dp2$control_group == "notyettreated", max(time, pret) + dp2$anticipation + 1, Inf) - min_control_group <- ifelse(min_control_group_index == Inf, Inf, time_periods[min_control_group_index]) + min_control_group <- ifelse(min_control_group_index == Inf | min_control_group_index > dp2$time_periods_count, + Inf, + time_periods[min_control_group_index]) max_control_group <- Inf # always include the never treated units From 99bee3df91934ee7b4cdf1953d16d65b3b9c87a8 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Fri, 4 Oct 2024 21:22:05 -0400 Subject: [PATCH 17/50] adding estimation for rcs data --- R/DIDparams2.R | 4 ++ R/att_gt2.R | 2 - R/compute.att_gt2.R | 156 ++++++++++++++++++++++++++++++++++++------- R/pre_process_did2.R | 50 ++++++++++---- 4 files changed, 171 insertions(+), 41 deletions(-) diff --git a/R/DIDparams2.R b/R/DIDparams2.R index 54837ed..7ad548e 100644 --- a/R/DIDparams2.R +++ b/R/DIDparams2.R @@ -41,6 +41,8 @@ DIDparams2 <- function(did_tensors, args, call=NULL) { outcomes_tensor <- did_tensors$outcomes_tensor time_invariant_data <- did_tensors$time_invariant_data cohort_counts <- did_tensors$cohort_counts + period_counts <- did_tensors$period_counts + crosstable_counts <- did_tensors$crosstable_counts covariates <- did_tensors$covariates # matrix of covariates cluster_vector <- did_tensors$cluster weights_vector <- did_tensors$weights @@ -75,6 +77,8 @@ DIDparams2 <- function(did_tensors, args, call=NULL) { outcomes_tensor=outcomes_tensor, time_invariant_data=time_invariant_data, cohort_counts=cohort_counts, + period_counts=period_counts, + crosstable_counts=crosstable_counts, covariates=covariates, cluster_vector=cluster_vector, weights_vector=weights_vector, diff --git a/R/att_gt2.R b/R/att_gt2.R index 42eebd1..634d823 100644 --- a/R/att_gt2.R +++ b/R/att_gt2.R @@ -225,8 +225,6 @@ att_gt2 <- function(yname, att <- attgt.results$att tt <- attgt.results$tt - - # analytical standard errors # estimate variance # this is analogous to cluster robust standard errors that diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index 8a77a38..d9c4f44 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -47,15 +47,46 @@ get_did_cohort_index <- function(group, time, pret, dp2){ # select the DiD cohort did_cohort_index <- rep(NA, dp2$id_count) - # getting the index to get units who will participate in the estimation for the (g,t) cell. - start_control <- dp2$cohort_counts[cohort < min_control_group, sum(cohort_size)]+1 - end_control <- dp2$cohort_counts[cohort <= max_control_group, sum(cohort_size)] - index <- which(dp2$cohort_counts[, cohort] == time_periods[group]) - start_treat <- ifelse(index == 1, 1, dp2$cohort_counts[1:(index-1), sum(cohort_size)]+1) - end_treat <- dp2$cohort_counts[1:index, sum(cohort_size)] - # set the cohort index; .C = 0 and .G = 1 - did_cohort_index[start_control:end_control] <- 0 - did_cohort_index[start_treat:end_treat] <- 1 + + if(dp2$panel){ + + # getting the index to get units who will participate in the estimation for the (g,t) cell. + start_control <- dp2$cohort_counts[cohort < min_control_group, sum(cohort_size)]+1 + end_control <- dp2$cohort_counts[cohort <= max_control_group, sum(cohort_size)] + index <- which(dp2$cohort_counts[, cohort] == time_periods[group]) + start_treat <- ifelse(index == 1, 1, dp2$cohort_counts[1:(index-1), sum(cohort_size)]+1) + end_treat <- dp2$cohort_counts[1:index, sum(cohort_size)] + # set the cohort index; .C = 0 and .G = 1 + did_cohort_index[start_control:end_control] <- 0 + did_cohort_index[start_treat:end_treat] <- 1 + } else { + # getting the index to get units who will participate in the estimation for the (g,t) cell. + for(i in c(pret, time)){ + # FOR TREATED UNITS! + index_treat <- which(dp2$period_counts[, period] == i) + start_treat <- ifelse(index_treat == 1, 1, dp2$period_counts[1:(index_treat-1), sum(period_size)]+1) + relevant_g_counts <- dp2$crosstable_counts[i, ] + col_names <- names(relevant_g_counts)[-1] # Exclude 'T' column + index_cohort <- which(dp2$cohort_counts[, cohort] == group) + correction_index <- ifelse(index_cohort == 1, 0, sum(relevant_g_counts[, col_names[1:(index_cohort - 1)], with = FALSE], na.rm = TRUE)) + start_treat <- start_treat + correction_index + g_size <- relevant_g_counts[, get(as.character(group))] + end_treat <- start_treat + g_size -1 + did_cohort_index[start_treat:end_treat] <- 1 + + # FOR CONTROL UNITS! + min_idx <- match(as.character(min_control_group), col_names) + max_idx <- match(as.character(max_control_group), col_names) + index_control <- ifelse(start_treat == 1, 0, start_treat - correction_index - 1) + min_idx <- ifelse((min_control_group == time) | (min_control_group == group), min_idx, min_idx - 1) + # start_control <- index_control + sum(relevant_g_counts[, col_names[1:(min_idx - 1)], with = FALSE], na.rm = TRUE) + 1 + start_control <- index_control + sum(relevant_g_counts[, col_names[1:min_idx], with = FALSE], na.rm = TRUE) + 1 + end_control <- index_control + sum(relevant_g_counts[, col_names[1:max_idx], with = FALSE], na.rm = TRUE) + + did_cohort_index[start_control:end_control] <- 0 + + } + } return(did_cohort_index) } @@ -83,6 +114,7 @@ run_DRDID <- function(cohort_data, covariates, dp2){ # pick up the indices for units that will be used to compute ATT(g,t) valid_obs <- which(cohort_data[, !is.na(D)]) cohort_data <- cohort_data[valid_obs] + # TODO; THIS HAS TO BE BETTER WRITTEN if(dp2$xformla != ~1){ covariates <- covariates[valid_obs,] } else { @@ -97,15 +129,10 @@ run_DRDID <- function(cohort_data, covariates, dp2){ # code for actually computing ATT(g,t) #----------------------------------------------------------------------------- - # preparing vectors - # Ypost <- cohort_data[, y1] - # Ypre <- cohort_data[, y0] - # w <- cohort_data[, i.weights] - # G <- cohort_data[, D] if (inherits(dp2$est_method, "function")) { # user-specified function - attgt <- est_method(y1=cohort_data[, y1], + attgt <- dp2$est_method(y1=cohort_data[, y1], y0=cohort_data[, y0], D=cohort_data[, D], covariates=covariates, @@ -150,22 +177,94 @@ run_DRDID <- function(cohort_data, covariates, dp2){ # still total number of units (not just included in G or C) n <- cohort_data[, .N] + # # coerce a y1 and y0 in one single column + # cohort_data[, y := fcoalesce(y1, y0)] + # cohort_data[, post := as.integer(!is.na(y1))] + # cohort_data[, inpre := as.numeric(!is.na(y0))] + # cohort_data[, inpost := as.numeric(!is.na(y1))] + + # TODO; DELETE THIS, IT IS MANUALLY IMPUTED + # cohort_data <- dp2$time_invariant_data[ (G == 3 | G == Inf) & (period == t | period == pret),] + # cohort_data[, post := fifelse(period == t, 1, 0)] + # cohort_data[, D := fifelse(G == 3, 1, 0)] + # names(cohort_data)[3] <- "y" + # names(cohort_data)[4] <- "i.weights" + + # pick up the indices for units that will be used to compute ATT(g,t) valid_obs <- which(cohort_data[, !is.na(D)]) cohort_data <- cohort_data[valid_obs] - covariates <- covariates[valid_obs,] - # add the intercept - # Check if the ".intercept" name is already in the covariates matrix - #if(".intercept" %in% names(covariates)){stop("did is trying to impute a new column .intercept, but this already exists. Please check your dataset")} - #covariates[, .intercept := -1L] - # coerce to a matrix - covariates <- as.matrix(covariates) # num obs. for computing ATT(g,t) n1 <- cohort_data[, .N] + # TODO; THIS HAS TO BE BETTER WRITTEN + if(dp2$xformla != ~1){ + covariates <- covariates[valid_obs,] + } else { + covariates <- covariates[valid_obs] + } + + covariates <- as.matrix(covariates) + + + # give short names for data in this iteration + # G <- disdat$.G + # C <- disdat$.C + # Y <- disdat[[yname]] + # post <- 1*(disdat[[tname]] == tlist[t+tfac]) + # # num obs. for computing ATT(g,t), have to be careful here + # n1 <- sum(G+C) + # w <- disdat$.w + # sample_dt[, NEW_Y := fcoalesce(Y1, Y2)] + + #----------------------------------------------------------------------------- + # code for actually computing ATT(g,t) + #----------------------------------------------------------------------------- + # TODO; IMPLEMENT REPEATED CROSS-SECTION - attgt <- NULL + if (inherits(dp2$est_method, "function")) { + # user-specified function + attgt <- dp2$est_method(y=Y, + post=post, + D=G, + covariates=covariates, + i.weights=w, + inffunc=TRUE) + } else if (dp2$est_method == "ipw") { + # inverse-probability weights + attgt <- DRDID::std_ipw_did_rc(y=Y, + post=post, + D=G, + covariates=covariates, + i.weights=w, + boot=FALSE, inffunc=TRUE) + } else if (dp2$est_method == "reg") { + # regression + attgt <- DRDID::reg_did_rc(y=Y, + post=post, + D=G, + covariates=covariates, + i.weights=w, + boot=FALSE, inffunc=TRUE) + } else { + # doubly robust, this is default + attgt <- DRDID::drdid_rc(y=cohort_data[, y], + post=cohort_data[, post], + D=cohort_data[, D], + covariates=covariates, + i.weights=cohort_data[, i.weights], + boot=FALSE, inffunc=TRUE) + } + + # n/n1 adjusts for estimating the + # att_gt only using observations from groups + # G and C + # adjust influence function to account for only using + # subgroup to estimate att(g,t) + inf_func_vector <- rep(0, n) + inf_func_not_na <- (n/n1)*attgt$att.inf.func + inf_func_vector[valid_obs] <- inf_func_not_na } @@ -211,8 +310,15 @@ run_att_gt_estimation <- function(gt, dp2){ # Get the matrix of covariates covariates <- dp2$covariates - cohort_data <- data.table(did_cohort_index, dp2$outcomes_tensor[[t]], dp2$outcomes_tensor[[pret]], dp2$weights_vector) - names(cohort_data) <- c("D", "y1", "y0", "i.weights") + if(dp2$panel){ + cohort_data <- data.table(did_cohort_index, dp2$outcomes_tensor[[t]], dp2$outcomes_tensor[[pret]], dp2$weights_vector) + names(cohort_data) <- c("D", "y1", "y0", "i.weights") + } else { + dp2$time_invariant_data[, post := fifelse(get(dp2$tname) == t, 1, 0)] + cohort_data <- data.table(did_cohort_index, dp2$time_invariant_data[[dp2$yname]], dp2$time_invariant_data$post, dp2$time_invariant_data$weights) + names(cohort_data) <- c("D", "y", "post", "i.weights") + } + # run estimation did_result <- tryCatch(run_DRDID(cohort_data, covariates, dp2), diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index e483a50..4d0ee72 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -178,7 +178,7 @@ did_standarization <- function(data, args){ data[is.na(treated_first_period), treated_first_period := FALSE] # count the number of units treated in the first period - nfirstperiod <- uniqueN(data[treated_first_period == TRUE, get(args$idname)]) + nfirstperiod <- ifelse(args$panel, uniqueN(data[treated_first_period == TRUE, get(args$idname)]), nrow(data[data$treated_firstperiod == TRUE])) # handle units treated in the first period if (nfirstperiod > 0) { @@ -336,7 +336,11 @@ did_standarization <- function(data, args){ #----------------------------------------------------------------------------- # Sort the data for easy access later on - setorderv(data, c(args$tname, args$gname, args$idname), c(1,1,1)) + if (args$panel){ + setorderv(data, c(args$tname, args$gname, args$idname), c(1,1,1)) + } else { + setorderv(data, c(args$tname, args$gname), c(1,1)) + } # Assign new args regarding number of time periods and groups # How many time periods @@ -366,7 +370,8 @@ get_did_tensors <- function(data, args){ # Getting the outcomes tensor: a vector a outcome variables per time period of dimension id_count x 1 x time_periods_count outcomes_tensor <- list() - if(!args$allow_unbalanced_panel){ + #if(!args$allow_unbalanced_panel){ + if(args$panel){ for(time in seq_along(args$time_periods)){ # iterating over index # creating buckets of outcomes of size from 1 to id_size, id_size+1 to 2*id_size, etc. @@ -375,25 +380,29 @@ get_did_tensors <- function(data, args){ outcomes_tensor[[time]] <- data[seq(start,end), get(args$yname)] } } else { - # TODO; EDIT THIS FOR UNBALANCED PANEL OR RCS - for(time in seq_along(args$time_periods)){ - outcome_vector_time <- rep(NA, args$id_count) # fill vector with NAs - data_time <- data[(get(args$tname) == time), get(args$idname)] # data observed in time t - outcome_vector_time[data_time] <- data[get(args$tname) == time, get(args$yname)] - outcomes_tensor[[time]] <- outcome_vector_time - } + # for(time in args$time_periods){ + # outcome_vector_time <- rep(NA, args$id_count) # Initialize vector with NAs + # # Create a new column with Y values if tname == current_time, otherwise NA + # data[, outcome_vector_time := fifelse(get(args$tname) == time, get(args$yname), NA_real_)] + # # Store the vector in the outcomes_tensor + # outcomes_tensor[[time]] <- data$outcome_vector_time + # # drop the column created + # data[, outcome_vector_time := NULL] + # } + outcomes_tensor <- NULL } # Getting the time invariant data time_invariant_cols <- c(args$idname, args$gname, "weights", args$clustervars) - if(!args$allow_unbalanced_panel){ + #if(!args$allow_unbalanced_panel){ + if(args$panel){ # We can do this filtering because the data is already sorted appropriately invariant_data <- data[1:args$id_count] } else { # get the first observation for each unit invariant_data <- data[data[, .I[1], by = get(args$idname)]$V1] - # order by idname - setorderv(invariant_data, c(args$idname), c(1)) + # # order by idname + # setorderv(invariant_data, c(args$idname), c(1)) } # Get cohort counts @@ -401,6 +410,17 @@ get_did_tensors <- function(data, args){ cohort_counts <- invariant_data[, .(cohort_size = .N) , by = get(args$gname)] names(cohort_counts)[1] <- "cohort" # changing the name + # Get period counts + period_counts <- invariant_data[, .(period_size = .N), by = get(args$tname)] + names(period_counts)[1] <- "period" # changing the name + + # Get crosstable counts + crosstable_counts <- invariant_data[, .N, by = .(get(args$tname), get(args$gname))] # Directly count occurrences by tname and gname + names(crosstable_counts)[1] <- "period" # changing the name + names(crosstable_counts)[2] <- "cohort" # changing the name + crosstable_counts <- dcast(crosstable_counts, period ~ cohort, value.var = "N", fill = 0) # Reshape + + # Get covariates if any if(args$xformla == ~1){ covariates <- rep(1, args$id_count) @@ -422,6 +442,8 @@ get_did_tensors <- function(data, args){ return(list(outcomes_tensor = outcomes_tensor, time_invariant_data = invariant_data, cohort_counts = cohort_counts, + period_counts = period_counts, + crosstable_counts = crosstable_counts, covariates = covariates, cluster = cluster, weights = weights)) @@ -483,7 +505,7 @@ pre_process_did2 <- function(yname, # Put the data in a standard format after some validation cleaned_did <- did_standarization(data, args) - # Partition staggered did into a 2x2 DiD for faster implementation + # Partition staggered DiD into a 2x2 DiD for faster implementation did_tensors <- get_did_tensors(cleaned_did$data, cleaned_did$args) # store parameters for passing around later From 38dca4cd36efcd66284bcf3b05f19cf701c77c71 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Sun, 6 Oct 2024 13:16:38 -0400 Subject: [PATCH 18/50] fixing logic for varying base_period and notyettreated in rcs data --- R/compute.att_gt2.R | 112 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 89 insertions(+), 23 deletions(-) diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index d9c4f44..9d86f2c 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -61,31 +61,97 @@ get_did_cohort_index <- function(group, time, pret, dp2){ did_cohort_index[start_treat:end_treat] <- 1 } else { # getting the index to get units who will participate in the estimation for the (g,t) cell. - for(i in c(pret, time)){ - # FOR TREATED UNITS! - index_treat <- which(dp2$period_counts[, period] == i) - start_treat <- ifelse(index_treat == 1, 1, dp2$period_counts[1:(index_treat-1), sum(period_size)]+1) - relevant_g_counts <- dp2$crosstable_counts[i, ] - col_names <- names(relevant_g_counts)[-1] # Exclude 'T' column - index_cohort <- which(dp2$cohort_counts[, cohort] == group) - correction_index <- ifelse(index_cohort == 1, 0, sum(relevant_g_counts[, col_names[1:(index_cohort - 1)], with = FALSE], na.rm = TRUE)) - start_treat <- start_treat + correction_index - g_size <- relevant_g_counts[, get(as.character(group))] - end_treat <- start_treat + g_size -1 - did_cohort_index[start_treat:end_treat] <- 1 + # Note: This works because the data is already ordered in a specific way. Changing that order will break this. + + # Pre-extract column names for use within the loop + col_names <- names(dp2$crosstable_counts)[-1] # Exclude 'T' column + min_idx <- match(as.character(min_control_group), col_names) + max_idx <- match(as.character(max_control_group), col_names) + + # Start the loop + for (i in c(pret, time)) { + + # ------------------------------------------------ + # SET UP: Identify index_time, start_time, and precompute relevant counts + # ------------------------------------------------ + + # Identify the index_time for 'i' based on period_counts and compute the starting point + index_time <- which(dp2$period_counts[, period] == i) + start_time <- ifelse(index_time == 1, 1, dp2$period_counts[1:(index_time - 1), sum(period_size)] + 1) + + # Extract the relevant row for current time period 'i' only once + relevant_g_row <- dp2$crosstable_counts[i, ] + + # ------------------------------------------------ + # FOR CONTROL UNITS FIRST + # ------------------------------------------------ - # FOR CONTROL UNITS! - min_idx <- match(as.character(min_control_group), col_names) - max_idx <- match(as.character(max_control_group), col_names) - index_control <- ifelse(start_treat == 1, 0, start_treat - correction_index - 1) - min_idx <- ifelse((min_control_group == time) | (min_control_group == group), min_idx, min_idx - 1) - # start_control <- index_control + sum(relevant_g_counts[, col_names[1:(min_idx - 1)], with = FALSE], na.rm = TRUE) + 1 - start_control <- index_control + sum(relevant_g_counts[, col_names[1:min_idx], with = FALSE], na.rm = TRUE) + 1 - end_control <- index_control + sum(relevant_g_counts[, col_names[1:max_idx], with = FALSE], na.rm = TRUE) + # Calculate the starting and ending index for control units (min_control_group to max_control_group) + start_control <- start_time + sum(relevant_g_row[, col_names[1:min_idx - 1], with = FALSE], na.rm = TRUE) + csize <- sum(relevant_g_row[, col_names[min_idx:max_idx], with = FALSE], na.rm = TRUE) + end_control <- start_control + csize - 1 + # Impute control units with 0 did_cohort_index[start_control:end_control] <- 0 + # ------------------------------------------------ + # FOR TREATED UNITS + # ------------------------------------------------ + + # Calculate correction_index based on the current g and the relevant row for the current time period + index_cohort <- which(dp2$cohort_counts[, cohort] == group) + correction_index <- ifelse(index_cohort == 1, 0, sum(relevant_g_row[, col_names[1:(index_cohort - 1)], with = FALSE], na.rm = TRUE)) + + # Compute start and end points for treated units + start_treat <- start_time + correction_index + g_size <- relevant_g_row[, get(as.character(group))] + end_treat <- start_treat + g_size - 1 + + # Impute treated units with 1 + did_cohort_index[start_treat:end_treat] <- 1 } + + # for(i in c(pret, time)){ + # + # # set up + # # Identify the index_time for i in (pret, t) based on the table period_counts. This is going to be the starting point in the cohort + # index_time <- which(dp2$period_counts[, period] == i) + # start_time <- ifelse(index_time == 1, 1, dp2$period_counts[1:(index_time-1), sum(period_size)]+1) + # relevant_g_counts <- dp2$crosstable_counts[i, ] + # col_names <- names(relevant_g_counts)[-1] # Exclude 'T' column + # + # # ------------------------------------------------ + # # FOR CONTROL UNITS FIRST! + # # ------------------------------------------------ + # # Calculate indexes for control group + # min_idx <- match(as.character(min_control_group), col_names) + # max_idx <- match(as.character(max_control_group), col_names) + # # Identify the correction term that's going to be added to the start_time point and it is based on the min_control_group and will form the start_control. + # start_control <- start_time + sum(relevant_g_counts[, col_names[1:min_idx-1], with = FALSE], na.rm = TRUE) + # # Identify where the end point is in the cohort t or pret based on the table relevant_g_counts and by the max_control_group. + # csize <- sum(relevant_g_counts[, col_names[min_idx:max_idx], with = FALSE], na.rm = TRUE) + # # Sum the csize to start_control to get the end point for the untreated units: end_control + # end_control <- start_control + csize - 1 + # # Impute control units with 0 + # did_cohort_index[start_control:end_control] <- 0 + # + # # ------------------------------------------------ + # # FOR TREATED UNITS! + # # ------------------------------------------------ + # # Identify the correction terms that's going to be added to start_time points and it is based on the current g evaluated and will form the start_treat + # index_cohort <- which(dp2$cohort_counts[, cohort] == group) + # correction_index <- ifelse(index_cohort == 1, 0, sum(relevant_g_counts[, col_names[1:(index_cohort - 1)], with = FALSE], na.rm = TRUE)) + # start_treat <- start_time + correction_index + # # Identify where is the end point in the cohort t or pret based on the table relevant_g_counts for the current g. This is the size of the treated group + # g_size <- relevant_g_counts[, get(as.character(group))] + # # Sum the gsize to start_treat to get the end point of th treated: end_treat + # end_treat <- start_treat + g_size - 1 + # # Impute treated units with 1 + # did_cohort_index[start_treat:end_treat] <- 1 + # + # } + + } return(did_cohort_index) @@ -289,13 +355,13 @@ run_att_gt_estimation <- function(gt, dp2){ # get the current g,t values g <- gt[[1]] t <- gt[[2]] - if(dp2$print_details){cat("\n Evaluating (g,t) = (",g,t,")")} + if(dp2$print_details){cat("\n", paste0("Evaluating (g,t) = (",g,",",t,")"))} pret <- get_pret(g, t, dp2$base_period, dp2$anticipation) # if we are in period (g-1) or base period out of bounds, normalize results to be equal to NULL # and break without computing anything if(t == pret | !pret %in% seq_along(dp2$time_periods)){ - if(dp2$print_details){cat("\n Skipping (g,t) = (",g,t,") as base period is out of bounds or for varying base period.")} + if(dp2$print_details){cat("\n Skipping (g,t) as base period is out of bounds or for varying base period.")} return(NULL) } @@ -304,7 +370,7 @@ run_att_gt_estimation <- function(gt, dp2){ # In case of not treatment and control group in the cohort, return NULL valid_did_cohort <- any(did_cohort_index == 1) & any(did_cohort_index == 0) if(!isTRUE(valid_did_cohort)){ - if(dp2$print_details){cat("\n Skipping (g,t) = (",g,t,") as no treatment group or control group found")} + if(dp2$print_details){cat("\n Skipping (g,t) as no treatment group or control group found")} return(NULL) } From b55a022d885a18d485c20bd19e6f08af2abaee42 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Sun, 6 Oct 2024 15:46:53 -0400 Subject: [PATCH 19/50] adding documentation and unit tests for PR --- NAMESPACE | 15 +- R/DIDparams2.R | 1 - R/att_gt.R | 98 +++++++--- R/att_gt2.R | 341 ----------------------------------- R/compute.att_gt2.R | 119 +++--------- R/imports.R | 8 +- R/pre_process_did2.R | 5 +- R/utility_functions.R | 4 +- man/att_gt.Rd | 6 + man/att_gt2.Rd | 293 ------------------------------ tests/testthat/test-att_gt.R | 106 +++++++++++ 11 files changed, 215 insertions(+), 781 deletions(-) delete mode 100644 R/att_gt2.R delete mode 100644 man/att_gt2.Rd diff --git a/NAMESPACE b/NAMESPACE index 796583d..97b8c78 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -13,23 +13,15 @@ S3method(tidy,AGGTEobj) S3method(tidy,MP) export(AGGTEobj) export(DIDparams) -export(DIDparams2) export(MP) export(MP.TEST) export(aggte) export(att_gt) -export(att_gt2) export(build_sim_dataset) -export(check_balance) export(compute.aggte) export(compute.att_gt) export(compute.att_gt2) export(conditional_did_pretest) -export(did_standarization) -export(get_did_cohort_index) -export(get_did_tensors) -export(get_pret) -export(get_wide_data) export(ggdid) export(glance) export(gplot) @@ -39,14 +31,11 @@ export(pre_process_did) export(pre_process_did2) export(process_attgt) export(reset.sim) -export(run_DRDID) -export(run_att_gt_estimation) export(sim) export(splot) export(test.mboot) export(tidy) export(trimmer) -export(validate_args) import(BMisc) import(data.table) import(ggplot2) @@ -54,10 +43,14 @@ import(ggpubr) import(stats) import(utils) importFrom(DRDID,drdid_panel) +importFrom(DRDID,drdid_rc) importFrom(DRDID,reg_did_panel) +importFrom(DRDID,reg_did_rc) importFrom(DRDID,std_ipw_did_panel) +importFrom(DRDID,std_ipw_did_rc) importFrom(dreamerr,check_set_arg) importFrom(generics,glance) importFrom(generics,tidy) +importFrom(methods,as) importFrom(methods,is) importFrom(tidyr,gather) diff --git a/R/DIDparams2.R b/R/DIDparams2.R index 7ad548e..86dd91e 100644 --- a/R/DIDparams2.R +++ b/R/DIDparams2.R @@ -7,7 +7,6 @@ #' @param did_tensor list of outcome tensors that are used in the estimation #' @param args list of arguments that are used in the estimation #' @noRd -#' @export DIDparams2 <- function(did_tensors, args, call=NULL) { # get the arguments from args yname <- args$yname diff --git a/R/att_gt.R b/R/att_gt.R index fd56bf6..3717c47 100644 --- a/R/att_gt.R +++ b/R/att_gt.R @@ -89,6 +89,10 @@ #' @param anticipation The number of time periods before participating #' in the treatment where units can anticipate participating in the #' treatment and therefore it can affect their untreated potential outcomes +#' @param faster_mode This option enables a faster version of `did`, optimizing +#' computation time for large datasets by improving data management within the package. +#' The default is set to `FALSE`. While the difference is minimal for small datasets, +#' it is recommended for use with large datasets. #' @param base_period Whether to use a "varying" base period or a #' "universal" base period. Either choice results in the same #' post-treatment estimates of ATT(g,t)'s. In pre-treatment @@ -181,40 +185,74 @@ att_gt <- function(yname, clustervars=NULL, est_method="dr", base_period="varying", + faster_mode=FALSE, print_details=FALSE, pl=FALSE, cores=1) { - # this is a DIDparams object - dp <- pre_process_did(yname=yname, - tname=tname, - idname=idname, - gname=gname, - xformla=xformla, - data=data, - panel=panel, - allow_unbalanced_panel=allow_unbalanced_panel, - control_group=control_group, - anticipation=anticipation, - weightsname=weightsname, - alp=alp, - bstrap=bstrap, - cband=cband, - biters=biters, - clustervars=clustervars, - est_method=est_method, - base_period=base_period, - print_details=print_details, - pl=pl, - cores=cores, - call=match.call() - ) - - #----------------------------------------------------------------------------- - # Compute all ATT(g,t) - #----------------------------------------------------------------------------- - results <- compute.att_gt(dp) + # Check if user wants to run faster mode: + if (faster_mode) { + # this is a DIDparams object + dp <- pre_process_did2(yname=yname, + tname=tname, + idname=idname, + gname=gname, + xformla=xformla, + data=data, + panel=panel, + allow_unbalanced_panel=allow_unbalanced_panel, + control_group=control_group, + anticipation=anticipation, + weightsname=weightsname, + alp=alp, + bstrap=bstrap, + cband=cband, + biters=biters, + clustervars=clustervars, + est_method=est_method, + base_period=base_period, + print_details=print_details, + pl=pl, + cores=cores, + call=match.call() + ) + + #----------------------------------------------------------------------------- + # Compute all ATT(g,t) + #----------------------------------------------------------------------------- + results <- compute.att_gt2(dp) + } else { + # this is a DIDparams object + dp <- pre_process_did(yname=yname, + tname=tname, + idname=idname, + gname=gname, + xformla=xformla, + data=data, + panel=panel, + allow_unbalanced_panel=allow_unbalanced_panel, + control_group=control_group, + anticipation=anticipation, + weightsname=weightsname, + alp=alp, + bstrap=bstrap, + cband=cband, + biters=biters, + clustervars=clustervars, + est_method=est_method, + base_period=base_period, + print_details=print_details, + pl=pl, + cores=cores, + call=match.call() + ) + + #----------------------------------------------------------------------------- + # Compute all ATT(g,t) + #----------------------------------------------------------------------------- + results <- compute.att_gt(dp) + } # extract ATT(g,t) and influence functions attgt.list <- results$attgt.list @@ -236,7 +274,7 @@ att_gt <- function(yname, # note to self: this def. won't work with unbalanced panel, # same with clustered standard errors # but it is always ignored b/c bstrap has to be true in that case - n <- dp$n + n <- ifelse(faster_mode, dp$id_count, dp$n) V <- Matrix::t(inffunc)%*%inffunc/n se <- sqrt(Matrix::diag(V)/n) diff --git a/R/att_gt2.R b/R/att_gt2.R deleted file mode 100644 index 634d823..0000000 --- a/R/att_gt2.R +++ /dev/null @@ -1,341 +0,0 @@ -#' @title Group-Time Average Treatment Effects -#' -#' @description `att_gt` computes average treatment effects in DID -#' setups where there are more than two periods of data and allowing for -#' treatment to occur at different points in time and allowing for -#' treatment effect heterogeneity and dynamics. -#' See Callaway and Sant'Anna (2021) for a detailed description. -#' -#' @param yname The name of the outcome variable -#' @param data The name of the data.frame that contains the data -#' @param tname The name of the column containing the time periods -#' @param idname The individual (cross-sectional unit) id name -#' @param gname The name of the variable in `data` that -#' contains the first period when a particular observation is treated. -#' This should be a positive number for all observations in treated groups. -#' It defines which "group" a unit belongs to. It should be 0 for units -#' in the untreated group. -#' @param weightsname The name of the column containing the sampling weights. -#' If not set, all observations have same weight. -#' @param alp the significance level, default is 0.05 -#' @param bstrap Boolean for whether or not to compute standard errors using -#' the multiplier bootstrap. If standard errors are clustered, then one -#' must set `bstrap=TRUE`. Default is `TRUE` (in addition, cband -#' is also by default `TRUE` indicating that uniform confidence bands -#' will be returned. If bstrap is `FALSE`, then analytical -#' standard errors are reported. -#' @param biters The number of bootstrap iterations to use. The default is 1000, -#' and this is only applicable if `bstrap=TRUE`. -#' @param clustervars A vector of variables names to cluster on. At most, there -#' can be two variables (otherwise will throw an error) and one of these -#' must be the same as idname which allows for clustering at the individual -#' level. By default, we cluster at individual level (when `bstrap=TRUE`). -#' @param cband Boolean for whether or not to compute a uniform confidence -#' band that covers all of the group-time average treatment effects -#' with fixed probability `1-alp`. In order to compute uniform confidence -#' bands, `bstrap` must also be set to `TRUE`. The default is -#' `TRUE`. -#' @param print_details Whether or not to show details/progress of computations. -#' Default is `FALSE`. -#' @param pl Whether or not to use parallel processing -#' @param cores The number of cores to use for parallel processing -#' @param est_method the method to compute group-time average treatment effects. The default is "dr" which uses the doubly robust -#' approach in the `DRDID` package. Other built-in methods -#' include "ipw" for inverse probability weighting and "reg" for -#' first step regression estimators. The user can also pass their -#' own function for estimating group time average treatment -#' effects. This should be a function -#' `f(Y1,Y0,treat,covariates)` where `Y1` is an -#' `n` x `1` vector of outcomes in the post-treatment -#' outcomes, `Y0` is an `n` x `1` vector of -#' pre-treatment outcomes, `treat` is a vector indicating -#' whether or not an individual participates in the treatment, -#' and `covariates` is an `n` x `k` matrix of -#' covariates. The function should return a list that includes -#' `ATT` (an estimated average treatment effect), and -#' `inf.func` (an `n` x `1` influence function). -#' The function can return other things as well, but these are -#' the only two that are required. `est_method` is only used -#' if covariates are included. -#' @param xformla A formula for the covariates to include in the -#' model. It should be of the form `~ X1 + X2`. Default -#' is NULL which is equivalent to `xformla=~1`. This is -#' used to create a matrix of covariates which is then passed -#' to the 2x2 DID estimator chosen in `est_method`. -#' @param panel Whether or not the data is a panel dataset. -#' The panel dataset should be provided in long format -- that -#' is, where each row corresponds to a unit observed at a -#' particular point in time. The default is TRUE. When -#' is using a panel dataset, the variable `idname` must -#' be set. When `panel=FALSE`, the data is treated -#' as repeated cross sections. -#' @param allow_unbalanced_panel Whether or not function should -#' "balance" the panel with respect to time and id. The default -#' values if `FALSE` which means that [att_gt()] will drop -#' all units where data is not observed in all periods. -#' The advantage of this is that the computations are faster -#' (sometimes substantially). -#' @param control_group Which units to use the control group. -#' The default is "nevertreated" which sets the control group -#' to be the group of units that never participate in the -#' treatment. This group does not change across groups or -#' time periods. The other option is to set -#' `group="notyettreated"`. In this case, the control group -#' is set to the group of units that have not yet participated -#' in the treatment in that time period. This includes all -#' never treated units, but it includes additional units that -#' eventually participate in the treatment, but have not -#' participated yet. -#' @param anticipation The number of time periods before participating -#' in the treatment where units can anticipate participating in the -#' treatment and therefore it can affect their untreated potential outcomes -#' @param base_period Whether to use a "varying" base period or a -#' "universal" base period. Either choice results in the same -#' post-treatment estimates of ATT(g,t)'s. In pre-treatment -#' periods, using a varying base period amounts to computing a -#' pseudo-ATT in each treatment period by comparing the change -#' in outcomes for a particular group relative to its comparison -#' group in the pre-treatment periods (i.e., in pre-treatment -#' periods this setting computes changes from period t-1 to period -#' t, but repeatedly changes the value of t) -#' -#' A universal base period fixes the base period to always be -#' (g-anticipation-1). This does not compute -#' pseudo-ATT(g,t)'s in pre-treatment periods, but rather -#' reports average changes in outcomes from period t to -#' (g-anticipation-1) for a particular group relative to its comparison -#' group. This is analogous to what is often reported in event -#' study regressions. -#' -#' Using a varying base period results in an estimate of -#' ATT(g,t) being reported in the period immediately before -#' treatment. Using a universal base period normalizes the -#' estimate in the period right before treatment (or earlier when -#' the user allows for anticipation) to be equal to 0, but one -#' extra estimate in an earlier period. -#' -#' @references Callaway, Brantly and Pedro H.C. Sant'Anna. \"Difference-in-Differences with Multiple Time Periods.\" Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. \doi{10.1016/j.jeconom.2020.12.001}, -#' -#' @return an [`MP`] object containing all the results for group-time average -#' treatment effects -#' @importFrom DRDID drdid_panel -#' @details # Examples: -#' -#' **Basic [att_gt()] call:** -#' ```{r, comment = "#>", collapse = TRUE} -#' # Example data -#' data(mpdta) -#' set.seed(09152024) -#' out1 <- att_gt(yname="lemp", -#' tname="year", -#' idname="countyreal", -#' gname="first.treat", -#' xformla=NULL, -#' data=mpdta) -#' summary(out1) -#' ``` -#' -#' **Using covariates:** -#' -#' ```{r, comment = "#>", collapse = TRUE} -#' out2 <- att_gt(yname="lemp", -#' tname="year", -#' idname="countyreal", -#' gname="first.treat", -#' xformla=~lpop, -#' data=mpdta) -#' summary(out2) -#' ``` -#' -#' **Specify comparison units:** -#' -#' ```{r, comment = "#>", collapse = TRUE} -#' out3 <- att_gt(yname="lemp", -#' tname="year", -#' idname="countyreal", -#' gname="first.treat", -#' xformla=~lpop, -#' control_group = "notyettreated", -#' data=mpdta) -#' summary(out3) -#' ``` -#' @importFrom dreamerr check_set_arg -#' @importFrom DRDID drdid_panel reg_did_panel std_ipw_did_panel -#' @export -att_gt2 <- function(yname, - tname, - idname=NULL, - gname, - xformla=NULL, - data, - panel=TRUE, - allow_unbalanced_panel=FALSE, - control_group="nevertreated", - anticipation=0, - weightsname=NULL, - alp=0.05, - bstrap=TRUE, - cband=TRUE, - biters=1000, - clustervars=NULL, - est_method="dr", - base_period="varying", - print_details=FALSE, - pl=FALSE, - cores=1) { - - # this is a DIDparams object - dp2 <- pre_process_did2(yname=yname, - tname=tname, - idname=idname, - gname=gname, - xformla=xformla, - data=data, - panel=panel, - allow_unbalanced_panel=allow_unbalanced_panel, - control_group=control_group, - anticipation=anticipation, - weightsname=weightsname, - alp=alp, - bstrap=bstrap, - cband=cband, - biters=biters, - clustervars=clustervars, - est_method=est_method, - base_period=base_period, - print_details=print_details, - pl=pl, - cores=cores, - call=match.call() - ) - - #----------------------------------------------------------------------------- - # Compute all ATT(g,t) - #----------------------------------------------------------------------------- - results2 <- compute.att_gt2(dp2) - - - # extract ATT(g,t) and influence functions - attgt.list2 <- results2$attgt.list - inffunc2 <- results2$inffunc - - # process results - attgt.results <- process_attgt(attgt.list2) - group <- attgt.results$group - att <- attgt.results$att - tt <- attgt.results$tt - - # analytical standard errors - # estimate variance - # this is analogous to cluster robust standard errors that - # are clustered at the unit level - - # note to self: this def. won't work with unbalanced panel, - # same with clustered standard errors - # but it is always ignored b/c bstrap has to be true in that case - n <- dp2$id_count - V <- Matrix::t(inffunc2)%*%inffunc2/n - se <- sqrt(Matrix::diag(V)/n) - - # Zero standard error replaced by NA - se[se <= sqrt(.Machine$double.eps)*10] <- NA - - # if clustering along another dimension...we require using the - # bootstrap (in principle, could come up with analytical standard - # errors here though) - if ( (length(clustervars) > 0) & !bstrap) { - warning("clustering the standard errors requires using the bootstrap, resulting standard errors are NOT accounting for clustering") - } - - # Identify entries of main diagonal V that are zero or NA - zero_na_sd_entry <- unique(which(is.na(se))) - - # bootstrap variance matrix - if (bstrap) { - - bout <- mboot(inffunc2, DIDparams=dp2, pl=pl, cores=cores) - bres <- bout$bres - - if(length(zero_na_sd_entry)>0) { - se[-zero_na_sd_entry] <- bout$se[-zero_na_sd_entry] - } else { - se <- bout$se - } - } - # Zero standard error replaced by NA - se[se <= sqrt(.Machine$double.eps)*10] <- NA - - - #----------------------------------------------------------------------------- - # compute Wald pre-test - #----------------------------------------------------------------------------- - - # select which periods are pre-treatment - pre <- which(group > tt) - - # Drop group-periods that have variance equal to zero (singularity problems) - if(length(zero_na_sd_entry)>0){ - pre <- pre[!(pre %in% zero_na_sd_entry)] - } - # pseudo-atts in pre-treatment periods - preatt <- as.matrix(att[pre]) - - # covariance matrix of pre-treatment atts - preV <- as.matrix(V[pre,pre]) - - # check if there are actually any pre-treatment periods - if (length(preV) == 0) { - message("No pre-treatment periods to test") - W <- NULL - Wpval <- NULL - } else if(sum(is.na(preV))) { - warning("Not returning pre-test Wald statistic due to NA pre-treatment values") - W <- NULL - Wpval <- NULL - } else if (rcond(preV) <= .Machine$double.eps) { - # singluar covariance matrix for pre-treatment periods - warning("Not returning pre-test Wald statistic due to singular covariance matrix") - W <- NULL - Wpval <- NULL - } else { - # everything is working... - W <- n*t(preatt)%*%solve(preV)%*%preatt - q <- length(pre) # number of restrictions - Wpval <- round(1-pchisq(W,q),5) - } - - - #----------------------------------------------------------------------------- - # compute confidence intervals / bands - #----------------------------------------------------------------------------- - - # critical value from N(0,1), for pointwise - cval <- qnorm(1-alp/2) - - # in order to get uniform confidence bands - # HAVE to use the bootstrap - if (bstrap){ - if (cband) { - # for uniform confidence band - # compute new critical value - # see paper for details - bSigma <- apply(bres, 2, - function(b) (quantile(b, .75, type=1, na.rm = T) - - quantile(b, .25, type=1, na.rm = T))/(qnorm(.75) - qnorm(.25))) - - bSigma[bSigma <= sqrt(.Machine$double.eps)*10] <- NA - - # sup-t confidence band - bT <- apply(bres, 1, function(b) max( abs(b/bSigma), na.rm = TRUE)) - cval <- quantile(bT, 1-alp, type=1, na.rm = T) - if(cval >= 7){ - warning("Simultaneous critical value is arguably `too large' to be realible. This usually happens when number of observations per group is small and/or there is no much variation in outcomes.") - } - } - } - - - # Return this list - return(MP(group=group, t=tt, att=att, V_analytical=V, se=se, c=cval, inffunc=inffunc2, n=n, W=W, Wpval=Wpval, alp = alp, DIDparams=dp2)) - -} diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index 9d86f2c..a794345 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -11,7 +11,6 @@ #' #' @return Time period indicating the pre treatment period. #' @noRd -#' @export get_pret <- function(group, time, base_period, anticipation){ if(base_period == "universal"){ pret <- group - 1 - anticipation @@ -32,7 +31,6 @@ get_pret <- function(group, time, base_period, anticipation){ #' #' @return Time period indicating the pre treatment period. #' @noRd -#' @export get_did_cohort_index <- function(group, time, pret, dp2){ # return a vector of dimension id_size with 1, 0 or NA values treated_groups <- dp2$treated_groups @@ -42,7 +40,7 @@ get_did_cohort_index <- function(group, time, pret, dp2){ min_control_group <- ifelse(min_control_group_index == Inf | min_control_group_index > dp2$time_periods_count, Inf, time_periods[min_control_group_index]) - max_control_group <- Inf # always include the never treated units + max_control_group <- Inf # always include the never treated units as the maximum. # select the DiD cohort @@ -111,47 +109,6 @@ get_did_cohort_index <- function(group, time, pret, dp2){ did_cohort_index[start_treat:end_treat] <- 1 } - # for(i in c(pret, time)){ - # - # # set up - # # Identify the index_time for i in (pret, t) based on the table period_counts. This is going to be the starting point in the cohort - # index_time <- which(dp2$period_counts[, period] == i) - # start_time <- ifelse(index_time == 1, 1, dp2$period_counts[1:(index_time-1), sum(period_size)]+1) - # relevant_g_counts <- dp2$crosstable_counts[i, ] - # col_names <- names(relevant_g_counts)[-1] # Exclude 'T' column - # - # # ------------------------------------------------ - # # FOR CONTROL UNITS FIRST! - # # ------------------------------------------------ - # # Calculate indexes for control group - # min_idx <- match(as.character(min_control_group), col_names) - # max_idx <- match(as.character(max_control_group), col_names) - # # Identify the correction term that's going to be added to the start_time point and it is based on the min_control_group and will form the start_control. - # start_control <- start_time + sum(relevant_g_counts[, col_names[1:min_idx-1], with = FALSE], na.rm = TRUE) - # # Identify where the end point is in the cohort t or pret based on the table relevant_g_counts and by the max_control_group. - # csize <- sum(relevant_g_counts[, col_names[min_idx:max_idx], with = FALSE], na.rm = TRUE) - # # Sum the csize to start_control to get the end point for the untreated units: end_control - # end_control <- start_control + csize - 1 - # # Impute control units with 0 - # did_cohort_index[start_control:end_control] <- 0 - # - # # ------------------------------------------------ - # # FOR TREATED UNITS! - # # ------------------------------------------------ - # # Identify the correction terms that's going to be added to start_time points and it is based on the current g evaluated and will form the start_treat - # index_cohort <- which(dp2$cohort_counts[, cohort] == group) - # correction_index <- ifelse(index_cohort == 1, 0, sum(relevant_g_counts[, col_names[1:(index_cohort - 1)], with = FALSE], na.rm = TRUE)) - # start_treat <- start_time + correction_index - # # Identify where is the end point in the cohort t or pret based on the table relevant_g_counts for the current g. This is the size of the treated group - # g_size <- relevant_g_counts[, get(as.character(group))] - # # Sum the gsize to start_treat to get the end point of th treated: end_treat - # end_treat <- start_treat + g_size - 1 - # # Impute treated units with 1 - # did_cohort_index[start_treat:end_treat] <- 1 - # - # } - - } return(did_cohort_index) @@ -166,7 +123,6 @@ get_did_cohort_index <- function(group, time, pret, dp2){ #' #' @return Time period indicating the pre treatment period. #' @noRd -#' @export run_DRDID <- function(cohort_data, covariates, dp2){ if(dp2$panel){ @@ -243,20 +199,6 @@ run_DRDID <- function(cohort_data, covariates, dp2){ # still total number of units (not just included in G or C) n <- cohort_data[, .N] - # # coerce a y1 and y0 in one single column - # cohort_data[, y := fcoalesce(y1, y0)] - # cohort_data[, post := as.integer(!is.na(y1))] - # cohort_data[, inpre := as.numeric(!is.na(y0))] - # cohort_data[, inpost := as.numeric(!is.na(y1))] - - # TODO; DELETE THIS, IT IS MANUALLY IMPUTED - # cohort_data <- dp2$time_invariant_data[ (G == 3 | G == Inf) & (period == t | period == pret),] - # cohort_data[, post := fifelse(period == t, 1, 0)] - # cohort_data[, D := fifelse(G == 3, 1, 0)] - # names(cohort_data)[3] <- "y" - # names(cohort_data)[4] <- "i.weights" - - # pick up the indices for units that will be used to compute ATT(g,t) valid_obs <- which(cohort_data[, !is.na(D)]) cohort_data <- cohort_data[valid_obs] @@ -273,54 +215,42 @@ run_DRDID <- function(cohort_data, covariates, dp2){ covariates <- as.matrix(covariates) - - # give short names for data in this iteration - # G <- disdat$.G - # C <- disdat$.C - # Y <- disdat[[yname]] - # post <- 1*(disdat[[tname]] == tlist[t+tfac]) - # # num obs. for computing ATT(g,t), have to be careful here - # n1 <- sum(G+C) - # w <- disdat$.w - # sample_dt[, NEW_Y := fcoalesce(Y1, Y2)] - #----------------------------------------------------------------------------- # code for actually computing ATT(g,t) #----------------------------------------------------------------------------- - # TODO; IMPLEMENT REPEATED CROSS-SECTION if (inherits(dp2$est_method, "function")) { # user-specified function - attgt <- dp2$est_method(y=Y, - post=post, - D=G, + attgt <- dp2$est_method(y=cohort_data[, y], + post=cohort_data[, post], + D=cohort_data[, D], covariates=covariates, - i.weights=w, + i.weights=cohort_data[, i.weights], inffunc=TRUE) } else if (dp2$est_method == "ipw") { # inverse-probability weights - attgt <- DRDID::std_ipw_did_rc(y=Y, - post=post, - D=G, - covariates=covariates, - i.weights=w, - boot=FALSE, inffunc=TRUE) + attgt <- std_ipw_did_rc(y=cohort_data[, y], + post=cohort_data[, post], + D=cohort_data[, D], + covariates=covariates, + i.weights=cohort_data[, i.weights], + boot=FALSE, inffunc=TRUE) } else if (dp2$est_method == "reg") { # regression - attgt <- DRDID::reg_did_rc(y=Y, - post=post, - D=G, - covariates=covariates, - i.weights=w, - boot=FALSE, inffunc=TRUE) + attgt <- reg_did_rc(y=cohort_data[, y], + post=cohort_data[, post], + D=cohort_data[, D], + covariates=covariates, + i.weights=cohort_data[, i.weights], + boot=FALSE, inffunc=TRUE) } else { # doubly robust, this is default - attgt <- DRDID::drdid_rc(y=cohort_data[, y], - post=cohort_data[, post], - D=cohort_data[, D], - covariates=covariates, - i.weights=cohort_data[, i.weights], - boot=FALSE, inffunc=TRUE) + attgt <- drdid_rc(y=cohort_data[, y], + post=cohort_data[, post], + D=cohort_data[, D], + covariates=covariates, + i.weights=cohort_data[, i.weights], + boot=FALSE, inffunc=TRUE) } # n/n1 adjusts for estimating the @@ -349,8 +279,6 @@ run_DRDID <- function(cohort_data, covariates, dp2){ #' @return a list with the gt cell and the results after performing estimation #' #' @keywords internal -#' -#' @export run_att_gt_estimation <- function(gt, dp2){ # get the current g,t values g <- gt[[1]] @@ -411,7 +339,6 @@ run_att_gt_estimation <- function(gt, dp2){ #' standard errors. #' #' @keywords internal -#' #' @export compute.att_gt2 <- function(dp2) { diff --git a/R/imports.R b/R/imports.R index 7ba87c1..a382770 100644 --- a/R/imports.R +++ b/R/imports.R @@ -13,6 +13,10 @@ #' @import BMisc #' @import data.table #' @importFrom tidyr gather -#' @importFrom methods is +#' @importFrom methods is as +#' @importFrom dreamerr check_set_arg +#' @importFrom DRDID drdid_panel reg_did_panel std_ipw_did_panel std_ipw_did_rc reg_did_rc drdid_rc NULL -utils::globalVariables(c('.','.G','.y')) +utils::globalVariables(c('.','.G','.y', 'asif_never_treated', 'treated_first_period', 'count', 'constant', '.rowid', + 'V1', 'control_group', 'cohort', 'cohort_size', 'period', 'period_size', 'y1', 'y0', + 'i.weights', 'y', 'cluster', 'id', '..cols_to_keep')) diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index 4d0ee72..1626aa6 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -4,7 +4,6 @@ #' @param args list of arguments to validate #' #' @return nothing, but throws an error if any of the arguments are not valid -#' @export #' @noRd validate_args <- function(args, data){ @@ -98,7 +97,6 @@ validate_args <- function(args, data){ #' @param args list of arguments to validate #' #' @return A List, containing order data and arguments -#' @export #' @noRd did_standarization <- function(data, args){ # keep relevant columns in data @@ -214,7 +212,7 @@ did_standarization <- function(data, args){ data_comp <- data[complete.cases(data)] # Check if the panel is balanced - is_balanced <- check_balanced_panel(data_comp, id_col = args$idname, time_col = args$tname) + is_balanced <- check_balance(data_comp, id_col = args$idname, time_col = args$tname) args$allow_unbalanced_panel <- !is_balanced message(if (!is_balanced) @@ -364,7 +362,6 @@ did_standarization <- function(data, args){ #' @param args list of arguments to validate #' #' @return A List, containing outcomes tensor, time invariant data, cohort counts, covariates matrix, cluster vector and weights vector. -#' @export #' @noRd get_did_tensors <- function(data, args){ diff --git a/R/utility_functions.R b/R/utility_functions.R index 03b6c8f..39af866 100644 --- a/R/utility_functions.R +++ b/R/utility_functions.R @@ -50,7 +50,6 @@ trimmer <- function(g, tname, idname, gname, xformla, data, control_group="notye #' @return data from first period with .y0 (outcome in first period), .y1 (outcome in second period), #' and .dy (change in outcomes over time) appended to it #' @noRd -#' @export get_wide_data <- function(data, yname, idname, tname) { # check if data is data.table if (!is.data.table(data)) { @@ -74,7 +73,7 @@ get_wide_data <- function(data, yname, idname, tname) { return(data) } -#' @title Check balanced panal data +#' @title Check balanced panel data #' @description A utility function to check if your dataset is a balanced panel dataset. #' #' @param data data.table used in function @@ -83,7 +82,6 @@ get_wide_data <- function(data, yname, idname, tname) { #' #' @return Boolean indicating if the dataset is balanced or not. #' @noRd -#' @export check_balance <- function(data, id_col, time_col) { # Count the number of observations per unit (idname) diff --git a/man/att_gt.Rd b/man/att_gt.Rd index 073e68e..9ecd2c1 100644 --- a/man/att_gt.Rd +++ b/man/att_gt.Rd @@ -23,6 +23,7 @@ att_gt( clustervars = NULL, est_method = "dr", base_period = "varying", + faster_mode = FALSE, print_details = FALSE, pl = FALSE, cores = 1 @@ -150,6 +151,11 @@ estimate in the period right before treatment (or earlier when the user allows for anticipation) to be equal to 0, but one extra estimate in an earlier period.} +\item{faster_mode}{This option enables a faster version of \code{did}, optimizing +computation time for large datasets by improving data management within the package. +The default is set to \code{FALSE}. While the difference is minimal for small datasets, +it is recommended for use with large datasets.} + \item{print_details}{Whether or not to show details/progress of computations. Default is \code{FALSE}.} diff --git a/man/att_gt2.Rd b/man/att_gt2.Rd deleted file mode 100644 index 94a9886..0000000 --- a/man/att_gt2.Rd +++ /dev/null @@ -1,293 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/att_gt2.R -\name{att_gt2} -\alias{att_gt2} -\title{Group-Time Average Treatment Effects} -\usage{ -att_gt2( - yname, - tname, - idname = NULL, - gname, - xformla = NULL, - data, - panel = TRUE, - allow_unbalanced_panel = FALSE, - control_group = "nevertreated", - anticipation = 0, - weightsname = NULL, - alp = 0.05, - bstrap = TRUE, - cband = TRUE, - biters = 1000, - clustervars = NULL, - est_method = "dr", - base_period = "varying", - print_details = FALSE, - pl = FALSE, - cores = 1 -) -} -\arguments{ -\item{yname}{The name of the outcome variable} - -\item{tname}{The name of the column containing the time periods} - -\item{idname}{The individual (cross-sectional unit) id name} - -\item{gname}{The name of the variable in \code{data} that -contains the first period when a particular observation is treated. -This should be a positive number for all observations in treated groups. -It defines which "group" a unit belongs to. It should be 0 for units -in the untreated group.} - -\item{xformla}{A formula for the covariates to include in the -model. It should be of the form \code{~ X1 + X2}. Default -is NULL which is equivalent to \code{xformla=~1}. This is -used to create a matrix of covariates which is then passed -to the 2x2 DID estimator chosen in \code{est_method}.} - -\item{data}{The name of the data.frame that contains the data} - -\item{panel}{Whether or not the data is a panel dataset. -The panel dataset should be provided in long format -- that -is, where each row corresponds to a unit observed at a -particular point in time. The default is TRUE. When -is using a panel dataset, the variable \code{idname} must -be set. When \code{panel=FALSE}, the data is treated -as repeated cross sections.} - -\item{allow_unbalanced_panel}{Whether or not function should -"balance" the panel with respect to time and id. The default -values if \code{FALSE} which means that \code{\link[=att_gt]{att_gt()}} will drop -all units where data is not observed in all periods. -The advantage of this is that the computations are faster -(sometimes substantially).} - -\item{control_group}{Which units to use the control group. -The default is "nevertreated" which sets the control group -to be the group of units that never participate in the -treatment. This group does not change across groups or -time periods. The other option is to set -\code{group="notyettreated"}. In this case, the control group -is set to the group of units that have not yet participated -in the treatment in that time period. This includes all -never treated units, but it includes additional units that -eventually participate in the treatment, but have not -participated yet.} - -\item{anticipation}{The number of time periods before participating -in the treatment where units can anticipate participating in the -treatment and therefore it can affect their untreated potential outcomes} - -\item{weightsname}{The name of the column containing the sampling weights. -If not set, all observations have same weight.} - -\item{alp}{the significance level, default is 0.05} - -\item{bstrap}{Boolean for whether or not to compute standard errors using -the multiplier bootstrap. If standard errors are clustered, then one -must set \code{bstrap=TRUE}. Default is \code{TRUE} (in addition, cband -is also by default \code{TRUE} indicating that uniform confidence bands -will be returned. If bstrap is \code{FALSE}, then analytical -standard errors are reported.} - -\item{cband}{Boolean for whether or not to compute a uniform confidence -band that covers all of the group-time average treatment effects -with fixed probability \code{1-alp}. In order to compute uniform confidence -bands, \code{bstrap} must also be set to \code{TRUE}. The default is -\code{TRUE}.} - -\item{biters}{The number of bootstrap iterations to use. The default is 1000, -and this is only applicable if \code{bstrap=TRUE}.} - -\item{clustervars}{A vector of variables names to cluster on. At most, there -can be two variables (otherwise will throw an error) and one of these -must be the same as idname which allows for clustering at the individual -level. By default, we cluster at individual level (when \code{bstrap=TRUE}).} - -\item{est_method}{the method to compute group-time average treatment effects. The default is "dr" which uses the doubly robust -approach in the \code{DRDID} package. Other built-in methods -include "ipw" for inverse probability weighting and "reg" for -first step regression estimators. The user can also pass their -own function for estimating group time average treatment -effects. This should be a function -\code{f(Y1,Y0,treat,covariates)} where \code{Y1} is an -\code{n} x \code{1} vector of outcomes in the post-treatment -outcomes, \code{Y0} is an \code{n} x \code{1} vector of -pre-treatment outcomes, \code{treat} is a vector indicating -whether or not an individual participates in the treatment, -and \code{covariates} is an \code{n} x \code{k} matrix of -covariates. The function should return a list that includes -\code{ATT} (an estimated average treatment effect), and -\code{inf.func} (an \code{n} x \code{1} influence function). -The function can return other things as well, but these are -the only two that are required. \code{est_method} is only used -if covariates are included.} - -\item{base_period}{Whether to use a "varying" base period or a -"universal" base period. Either choice results in the same -post-treatment estimates of ATT(g,t)'s. In pre-treatment -periods, using a varying base period amounts to computing a -pseudo-ATT in each treatment period by comparing the change -in outcomes for a particular group relative to its comparison -group in the pre-treatment periods (i.e., in pre-treatment -periods this setting computes changes from period t-1 to period -t, but repeatedly changes the value of t) - -A universal base period fixes the base period to always be -(g-anticipation-1). This does not compute -pseudo-ATT(g,t)'s in pre-treatment periods, but rather -reports average changes in outcomes from period t to -(g-anticipation-1) for a particular group relative to its comparison -group. This is analogous to what is often reported in event -study regressions. - -Using a varying base period results in an estimate of -ATT(g,t) being reported in the period immediately before -treatment. Using a universal base period normalizes the -estimate in the period right before treatment (or earlier when -the user allows for anticipation) to be equal to 0, but one -extra estimate in an earlier period.} - -\item{print_details}{Whether or not to show details/progress of computations. -Default is \code{FALSE}.} - -\item{pl}{Whether or not to use parallel processing} - -\item{cores}{The number of cores to use for parallel processing} -} -\value{ -an \code{\link{MP}} object containing all the results for group-time average -treatment effects -} -\description{ -\code{att_gt} computes average treatment effects in DID -setups where there are more than two periods of data and allowing for -treatment to occur at different points in time and allowing for -treatment effect heterogeneity and dynamics. -See Callaway and Sant'Anna (2021) for a detailed description. -} -\section{Examples:}{ -\strong{Basic \code{\link[=att_gt]{att_gt()}} call:} - -\if{html}{\out{
}}\preformatted{# Example data -data(mpdta) -set.seed(09152024) -out1 <- att_gt(yname="lemp", - tname="year", - idname="countyreal", - gname="first.treat", - xformla=NULL, - data=mpdta) -summary(out1) -#> -#> Call: -#> att_gt(yname = "lemp", tname = "year", idname = "countyreal", -#> gname = "first.treat", xformla = NULL, data = mpdta) -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> -#> Group-Time Average Treatment Effects: -#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] -#> 2004 2004 -0.0105 0.0246 -0.0755 0.0545 -#> 2004 2005 -0.0704 0.0346 -0.1621 0.0212 -#> 2004 2006 -0.1373 0.0397 -0.2422 -0.0323 * -#> 2004 2007 -0.1008 0.0366 -0.1976 -0.0040 * -#> 2006 2004 0.0065 0.0226 -0.0532 0.0663 -#> 2006 2005 -0.0028 0.0193 -0.0538 0.0483 -#> 2006 2006 -0.0046 0.0185 -0.0536 0.0444 -#> 2006 2007 -0.0412 0.0208 -0.0962 0.0137 -#> 2007 2004 0.0305 0.0146 -0.0081 0.0692 -#> 2007 2005 -0.0027 0.0162 -0.0457 0.0402 -#> 2007 2006 -0.0311 0.0182 -0.0793 0.0172 -#> 2007 2007 -0.0261 0.0174 -0.0722 0.0201 -#> --- -#> Signif. codes: `*' confidence band does not cover 0 -#> -#> P-value for pre-test of parallel trends assumption: 0.16812 -#> Control Group: Never Treated, Anticipation Periods: 0 -#> Estimation Method: Doubly Robust -}\if{html}{\out{
}} - -\strong{Using covariates:} - -\if{html}{\out{
}}\preformatted{out2 <- att_gt(yname="lemp", - tname="year", - idname="countyreal", - gname="first.treat", - xformla=~lpop, - data=mpdta) -summary(out2) -#> -#> Call: -#> att_gt(yname = "lemp", tname = "year", idname = "countyreal", -#> gname = "first.treat", xformla = ~lpop, data = mpdta) -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> -#> Group-Time Average Treatment Effects: -#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] -#> 2004 2004 -0.0145 0.0249 -0.0817 0.0527 -#> 2004 2005 -0.0764 0.0307 -0.1592 0.0064 -#> 2004 2006 -0.1404 0.0370 -0.2403 -0.0406 * -#> 2004 2007 -0.1069 0.0331 -0.1962 -0.0176 * -#> 2006 2004 -0.0005 0.0215 -0.0583 0.0574 -#> 2006 2005 -0.0062 0.0181 -0.0549 0.0425 -#> 2006 2006 0.0010 0.0190 -0.0502 0.0521 -#> 2006 2007 -0.0413 0.0207 -0.0971 0.0145 -#> 2007 2004 0.0267 0.0143 -0.0117 0.0652 -#> 2007 2005 -0.0046 0.0153 -0.0459 0.0368 -#> 2007 2006 -0.0284 0.0197 -0.0816 0.0247 -#> 2007 2007 -0.0288 0.0157 -0.0712 0.0136 -#> --- -#> Signif. codes: `*' confidence band does not cover 0 -#> -#> P-value for pre-test of parallel trends assumption: 0.23267 -#> Control Group: Never Treated, Anticipation Periods: 0 -#> Estimation Method: Doubly Robust -}\if{html}{\out{
}} - -\strong{Specify comparison units:} - -\if{html}{\out{
}}\preformatted{out3 <- att_gt(yname="lemp", - tname="year", - idname="countyreal", - gname="first.treat", - xformla=~lpop, - control_group = "notyettreated", - data=mpdta) -summary(out3) -#> -#> Call: -#> att_gt(yname = "lemp", tname = "year", idname = "countyreal", -#> gname = "first.treat", xformla = ~lpop, data = mpdta, control_group = "notyettreated") -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> -#> Group-Time Average Treatment Effects: -#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] -#> 2004 2004 -0.0212 0.0219 -0.0797 0.0374 -#> 2004 2005 -0.0816 0.0299 -0.1617 -0.0015 * -#> 2004 2006 -0.1382 0.0375 -0.2387 -0.0376 * -#> 2004 2007 -0.1069 0.0354 -0.2016 -0.0122 * -#> 2006 2004 -0.0075 0.0216 -0.0653 0.0504 -#> 2006 2005 -0.0046 0.0184 -0.0539 0.0448 -#> 2006 2006 0.0087 0.0167 -0.0362 0.0535 -#> 2006 2007 -0.0413 0.0192 -0.0927 0.0101 -#> 2007 2004 0.0269 0.0146 -0.0122 0.0661 -#> 2007 2005 -0.0042 0.0160 -0.0470 0.0386 -#> 2007 2006 -0.0284 0.0182 -0.0773 0.0204 -#> 2007 2007 -0.0288 0.0176 -0.0759 0.0184 -#> --- -#> Signif. codes: `*' confidence band does not cover 0 -#> -#> P-value for pre-test of parallel trends assumption: 0.23326 -#> Control Group: Not Yet Treated, Anticipation Periods: 0 -#> Estimation Method: Doubly Robust -}\if{html}{\out{
}} -} - -\references{ -Callaway, Brantly and Pedro H.C. Sant'Anna. \"Difference-in-Differences with Multiple Time Periods.\" Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. \doi{10.1016/j.jeconom.2020.12.001}, \url{https://arxiv.org/abs/1803.09015} -} diff --git a/tests/testthat/test-att_gt.R b/tests/testthat/test-att_gt.R index fe495d2..c851a18 100644 --- a/tests/testthat/test-att_gt.R +++ b/tests/testthat/test-att_gt.R @@ -659,3 +659,109 @@ test_that("clustered standard errors", { gname="G", est_method="dr", clustervars="cluster", panel=FALSE) expect_equal(res_rc$att[1], 1, tol=.5) }) + +test_that("faster mode enabled for panel data", { + data <- did::mpdta + out <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", + xformla = ~1, data = mpdta, bstrap = FALSE, cband = FALSE, base_period = "universal", + control_group = "nevertreated", est_method = "dr") + out2 <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", + xformla = ~1, data = mpdta, bstrap = FALSE, cband = FALSE, base_period = "universal", + control_group = "nevertreated", est_method = "dr", faster_mode = TRUE) + + # check if results are equal. + expect_equal(out$att[1], out2$att[1]) + expect_equal(out$se, as.numeric(out2$se)) + # -------------------------------------------------------------------------------------------------------- + out <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", + xformla = ~1, data = mpdta, bstrap = FALSE, cband = FALSE, base_period = "varying", + control_group = "nevertreated", est_method = "dr") + out2 <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", + xformla = ~1, data = mpdta, bstrap = FALSE, cband = FALSE, base_period = "varying", + control_group = "nevertreated", est_method = "dr", faster_mode = TRUE) + + # check if results are equal. + expect_equal(out$att[1], out2$att[1]) + expect_equal(out$se, as.numeric(out2$se)) + + # -------------------------------------------------------------------------------------------------------- + out <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", + xformla = ~1, data = mpdta, bstrap = FALSE, cband = FALSE, base_period = "varying", + control_group = "notyettreated", est_method = "dr") + out2 <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", + xformla = ~1, data = mpdta, bstrap = FALSE, cband = FALSE, base_period = "varying", + control_group = "notyettreated", est_method = "dr", faster_mode = TRUE) + + # check if results are equal. + expect_equal(out$att[1], out2$att[1]) + expect_equal(out$se, as.numeric(out2$se)) + + # -------------------------------------------------------------------------------------------------------- + out <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", + xformla = ~1, data = mpdta, bstrap = FALSE, cband = FALSE, base_period = "universal", + control_group = "notyettreated", est_method = "dr") + out2 <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", + xformla = ~1, data = mpdta, bstrap = FALSE, cband = FALSE, base_period = "universal", + control_group = "notyettreated", est_method = "dr", faster_mode = TRUE) + + # check if results are equal. + expect_equal(out$att[1], out2$att[1]) + expect_equal(out$se, as.numeric(out2$se)) + +}) + +test_that("faster model enabled for repeated cross sectional data", { + + data_rcs <- as.data.table(did::build_sim_dataset(reset.sim(time.periods=4, n=1000), panel=FALSE)) + data_rcs$period <- as.integer(data_rcs$period) + data_rcs[G == 0, G := Inf] + + # ---------------------------------------------------------------------------------------------------------------------------------- + out_rcs <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, + bstrap = FALSE, cband = FALSE, base_period = "universal", control_group = "nevertreated", est_method = "dr") + + out_rcs2 <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, + bstrap = FALSE, cband = FALSE, print_details = TRUE, base_period = "universal", control_group = "nevertreated", + est_method = "dr", faster_mode = TRUE ) + + # check if results are equal. + expect_equal(out_rcs$att[1], out_rcs2$att[1]) + expect_equal(out_rcs$se, as.numeric(out_rcs2$se)) + + # ---------------------------------------------------------------------------------------------------------------------------------- + out_rcs <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, + bstrap = FALSE, cband = FALSE, base_period = "varying", control_group = "nevertreated", est_method = "dr") + + out_rcs2 <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, + bstrap = FALSE, cband = FALSE, print_details = TRUE, base_period = "varying", control_group = "nevertreated", + est_method = "dr", faster_mode = TRUE ) + + # check if results are equal. + expect_equal(out_rcs$att[1], out_rcs2$att[1]) + expect_equal(out_rcs$se, as.numeric(out_rcs2$se)) + + # ---------------------------------------------------------------------------------------------------------------------------------- + out_rcs <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, + bstrap = FALSE, cband = FALSE, base_period = "varying", control_group = "notyettreated", est_method = "dr") + + out_rcs2 <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, + bstrap = FALSE, cband = FALSE, print_details = TRUE, base_period = "varying", control_group = "notyettreated", + est_method = "dr", faster_mode = TRUE ) + + # check if results are equal. + expect_equal(out_rcs$att[1], out_rcs2$att[1]) + expect_equal(out_rcs$se, as.numeric(out_rcs2$se)) + + # ---------------------------------------------------------------------------------------------------------------------------------- + out_rcs <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, + bstrap = FALSE, cband = FALSE, base_period = "universal", control_group = "notyettreated", est_method = "dr") + + out_rcs2 <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, + bstrap = FALSE, cband = FALSE, print_details = TRUE, base_period = "universal", control_group = "notyettreated", + est_method = "dr", faster_mode = TRUE ) + + # check if results are equal. + expect_equal(out_rcs$att[1], out_rcs2$att[1]) + expect_equal(out_rcs$se, as.numeric(out_rcs2$se)) + +}) From ce64d14c0dfec75bad65e08f7a58eac5e4e79221 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Sun, 6 Oct 2024 15:51:37 -0400 Subject: [PATCH 20/50] dropping rcpp exports not needed --- R/RcppExports.R | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 R/RcppExports.R diff --git a/R/RcppExports.R b/R/RcppExports.R deleted file mode 100644 index e6e35e6..0000000 --- a/R/RcppExports.R +++ /dev/null @@ -1,11 +0,0 @@ -# Generated by using Rcpp::compileAttributes() -> do not edit by hand -# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -checkTreatmentUniqueness <- function(dta, idname, treatName) { - invisible(.Call('_did_checkTreatmentUniqueness', PACKAGE = 'did', dta, idname, treatName)) -} - -checkWeightsUniqueness <- function(dta, idname) { - invisible(.Call('_did_checkWeightsUniqueness', PACKAGE = 'did', dta, idname)) -} - From 6ed0a02b4e0a3acda3bf6d8a4e1c321262d60090 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Mon, 7 Oct 2024 07:17:16 -0400 Subject: [PATCH 21/50] fixing version of DRDID --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index e46f43e..13c51ee 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -15,7 +15,7 @@ Imports: pbapply, ggplot2, ggpubr, - DRDID (>= 1.1.1), + DRDID (>= 1.1.0), generics, methods, tidyr, From bca02cac70d95b136c35e8cfaf6413f7f61be313 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Mon, 7 Oct 2024 07:59:29 -0400 Subject: [PATCH 22/50] fixing unit test --- tests/testthat/test-att_gt.R | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/testthat/test-att_gt.R b/tests/testthat/test-att_gt.R index c851a18..e9a6128 100644 --- a/tests/testthat/test-att_gt.R +++ b/tests/testthat/test-att_gt.R @@ -663,10 +663,10 @@ test_that("clustered standard errors", { test_that("faster mode enabled for panel data", { data <- did::mpdta out <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", - xformla = ~1, data = mpdta, bstrap = FALSE, cband = FALSE, base_period = "universal", + xformla = ~1, data = data, bstrap = FALSE, cband = FALSE, base_period = "universal", control_group = "nevertreated", est_method = "dr") out2 <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", - xformla = ~1, data = mpdta, bstrap = FALSE, cband = FALSE, base_period = "universal", + xformla = ~1, data = data, bstrap = FALSE, cband = FALSE, base_period = "universal", control_group = "nevertreated", est_method = "dr", faster_mode = TRUE) # check if results are equal. @@ -674,10 +674,10 @@ test_that("faster mode enabled for panel data", { expect_equal(out$se, as.numeric(out2$se)) # -------------------------------------------------------------------------------------------------------- out <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", - xformla = ~1, data = mpdta, bstrap = FALSE, cband = FALSE, base_period = "varying", + xformla = ~1, data = data, bstrap = FALSE, cband = FALSE, base_period = "varying", control_group = "nevertreated", est_method = "dr") out2 <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", - xformla = ~1, data = mpdta, bstrap = FALSE, cband = FALSE, base_period = "varying", + xformla = ~1, data = data, bstrap = FALSE, cband = FALSE, base_period = "varying", control_group = "nevertreated", est_method = "dr", faster_mode = TRUE) # check if results are equal. @@ -686,10 +686,10 @@ test_that("faster mode enabled for panel data", { # -------------------------------------------------------------------------------------------------------- out <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", - xformla = ~1, data = mpdta, bstrap = FALSE, cband = FALSE, base_period = "varying", + xformla = ~1, data = data, bstrap = FALSE, cband = FALSE, base_period = "varying", control_group = "notyettreated", est_method = "dr") out2 <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", - xformla = ~1, data = mpdta, bstrap = FALSE, cband = FALSE, base_period = "varying", + xformla = ~1, data = data, bstrap = FALSE, cband = FALSE, base_period = "varying", control_group = "notyettreated", est_method = "dr", faster_mode = TRUE) # check if results are equal. @@ -698,10 +698,10 @@ test_that("faster mode enabled for panel data", { # -------------------------------------------------------------------------------------------------------- out <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", - xformla = ~1, data = mpdta, bstrap = FALSE, cband = FALSE, base_period = "universal", + xformla = ~1, data = data, bstrap = FALSE, cband = FALSE, base_period = "universal", control_group = "notyettreated", est_method = "dr") out2 <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", - xformla = ~1, data = mpdta, bstrap = FALSE, cband = FALSE, base_period = "universal", + xformla = ~1, data = data, bstrap = FALSE, cband = FALSE, base_period = "universal", control_group = "notyettreated", est_method = "dr", faster_mode = TRUE) # check if results are equal. From 627e75ef7649a98e0e3038287422fb1eb56b7a32 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Mon, 7 Oct 2024 08:16:43 -0400 Subject: [PATCH 23/50] changing min R version --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 13c51ee..2aeecc2 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -5,7 +5,7 @@ Authors@R: c(person("Brantly", "Callaway", email = "brantly.callaway@uga.edu", r URL: https://bcallaway11.github.io/did/, https://github.com/bcallaway11/did/ Description: The standard Difference-in-Differences (DID) setup involves two periods and two groups -- a treated group and untreated group. Many applications of DID methods involve more than two periods and have individuals that are treated at different points in time. This package contains tools for computing average treatment effect parameters in Difference in Differences setups with more than two periods and with variation in treatment timing using the methods developed in Callaway and Sant'Anna (2021) . The main parameters are group-time average treatment effects which are the average treatment effect for a particular group at a a particular time. These can be aggregated into a fewer number of treatment effect parameters, and the package deals with the cases where there is selective treatment timing, dynamic treatment effects, calendar time effects, or combinations of these. There are also functions for testing the Difference in Differences assumption, and plotting group-time average treatment effects. Depends: - R (>= 4.3), + R (>= 3.5), License: GPL-2 Encoding: UTF-8 LazyData: true From 10fbcecf382046ff6b91cde4026135c7afe08e09 Mon Sep 17 00:00:00 2001 From: "Pedro H. C. Sant'Anna" Date: Mon, 7 Oct 2024 10:05:46 -0400 Subject: [PATCH 24/50] Update compute.att_gt2.R --- R/compute.att_gt2.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index a794345..7322c38 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -289,7 +289,7 @@ run_att_gt_estimation <- function(gt, dp2){ # if we are in period (g-1) or base period out of bounds, normalize results to be equal to NULL # and break without computing anything if(t == pret | !pret %in% seq_along(dp2$time_periods)){ - if(dp2$print_details){cat("\n Skipping (g,t) as base period is out of bounds or for varying base period.")} + # if(dp2$print_details){cat("\n Skipping (g,t) as base period is out of bounds or for varying base period.")} return(NULL) } From 961f73503caa12dc42401548f296222a383baee4 Mon Sep 17 00:00:00 2001 From: "Pedro H. C. Sant'Anna" Date: Mon, 7 Oct 2024 10:06:08 -0400 Subject: [PATCH 25/50] Update DESCRIPTION --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 2aeecc2..b4936d0 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: did Title: Treatment Effects with Multiple Periods and Groups -Version: 2.2.0.903 +Version: 2.2.0.904 Authors@R: c(person("Brantly", "Callaway", email = "brantly.callaway@uga.edu", role = c("aut", "cre")), person("Pedro H. C.", "Sant'Anna", email="pedro.h.santanna@vanderbilt.edu", role = c("aut"))) URL: https://bcallaway11.github.io/did/, https://github.com/bcallaway11/did/ Description: The standard Difference-in-Differences (DID) setup involves two periods and two groups -- a treated group and untreated group. Many applications of DID methods involve more than two periods and have individuals that are treated at different points in time. This package contains tools for computing average treatment effect parameters in Difference in Differences setups with more than two periods and with variation in treatment timing using the methods developed in Callaway and Sant'Anna (2021) . The main parameters are group-time average treatment effects which are the average treatment effect for a particular group at a a particular time. These can be aggregated into a fewer number of treatment effect parameters, and the package deals with the cases where there is selective treatment timing, dynamic treatment effects, calendar time effects, or combinations of these. There are also functions for testing the Difference in Differences assumption, and plotting group-time average treatment effects. From 4d2bdfa40b92d6adcb09a2a276ea03992cca52e4 Mon Sep 17 00:00:00 2001 From: pedrohcgs Date: Sat, 12 Oct 2024 12:23:44 -0400 Subject: [PATCH 26/50] Fix some pre-processing --- R/pre_process_did2.R | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index 1626aa6..33c4be0 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -10,7 +10,7 @@ validate_args <- function(args, data){ data_names <- names(data) # ---------------------- Error Checking ---------------------- - + args$control_group <- args$control_group[1] # Flag for control group types control_group_message <- "control_group must be either 'nevertreated' or 'notyettreated'" dreamerr::check_set_arg(args$control_group, "match", .choices = c("nevertreated", "notyettreated"), .message = control_group_message, .up = 1) @@ -24,7 +24,7 @@ validate_args <- function(args, data){ dreamerr::check_set_arg(args$weightsname, args$clustervars, "NULL | match", .choices = data_names, .message = checkvar_message, .up = 1) # check if times periods are numeric - if(!data[, is.integer(get(args$tname))]){stop("tname = ",args$tname, " is not integer. Please convert it")} + if(!data[, is.numeric(get(args$tname))]){stop("tname = ",args$tname, " is not numeric. Please convert it")} # Check if gname is numeric if(!data[, is.numeric(get(args$gname))]){stop("gname = ",args$gname, " is not numeric. Please convert it")} @@ -53,6 +53,7 @@ validate_args <- function(args, data){ } # Flag for based period: not in c("universal", "varying"), stop + args$base_period <- args$base_period[1] base_period_message <- "base_period must be either 'universal' or 'varying'." dreamerr::check_set_arg(args$base_period, "match", .choices = c("universal", "varying"), .message = base_period_message, .up = 1) From fdb17e942b1687cbc149f026db4b5535c4941c33 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Mon, 14 Oct 2024 23:24:46 -0400 Subject: [PATCH 27/50] fixing bootstrap with faster_mode --- R/DIDparams.R | 2 + R/DIDparams2.R | 4 + R/att_gt.R | 3 +- R/compute.aggte.R | 1298 ++++++++++++++++++++------------------- R/mboot.R | 76 ++- R/pre_process_did.R | 2 + R/pre_process_did2.R | 7 +- man/DIDparams.Rd | 6 + man/aggte.Rd | 97 +-- man/att_gt.Rd | 82 +-- man/pre_process_did.Rd | 6 + man/pre_process_did2.Rd | 8 +- 12 files changed, 780 insertions(+), 811 deletions(-) diff --git a/R/DIDparams.R b/R/DIDparams.R index b163d11..20ad7ec 100644 --- a/R/DIDparams.R +++ b/R/DIDparams.R @@ -31,6 +31,7 @@ DIDparams <- function(yname, clustervars=NULL, cband=TRUE, print_details=TRUE, + faster_mode=FALSE, pl=FALSE, cores=1, est_method="dr", @@ -59,6 +60,7 @@ DIDparams <- function(yname, clustervars=clustervars, cband=cband, print_details=print_details, + faster_mode=faster_model, pl=pl, cores=cores, est_method=est_method, diff --git a/R/DIDparams2.R b/R/DIDparams2.R index 86dd91e..bde12f0 100644 --- a/R/DIDparams2.R +++ b/R/DIDparams2.R @@ -28,6 +28,7 @@ DIDparams2 <- function(did_tensors, args, call=NULL) { cores <- args$cores pl <- args$pl print_details <- args$print_details + faster_mode <- args$faster_mode alp <- args$alp true_repeated_cross_sections <- args$true_repeated_cross_sections time_periods_count <- args$time_periods_count @@ -38,6 +39,7 @@ DIDparams2 <- function(did_tensors, args, call=NULL) { # get the arguments from did_tensors outcomes_tensor <- did_tensors$outcomes_tensor + data <- did_tensors$data time_invariant_data <- did_tensors$time_invariant_data cohort_counts <- did_tensors$cohort_counts period_counts <- did_tensors$period_counts @@ -66,6 +68,7 @@ DIDparams2 <- function(did_tensors, args, call=NULL) { cores=cores, pl = pl, print_details=print_details, + faster_mode=faster_mode, alp=alp, true_repeated_cross_sections=true_repeated_cross_sections, time_periods_count=time_periods_count, @@ -74,6 +77,7 @@ DIDparams2 <- function(did_tensors, args, call=NULL) { treated_groups=treated_groups, id_count=id_count, outcomes_tensor=outcomes_tensor, + data=data, time_invariant_data=time_invariant_data, cohort_counts=cohort_counts, period_counts=period_counts, diff --git a/R/att_gt.R b/R/att_gt.R index 3717c47..bb60ab8 100644 --- a/R/att_gt.R +++ b/R/att_gt.R @@ -185,7 +185,7 @@ att_gt <- function(yname, clustervars=NULL, est_method="dr", base_period="varying", - faster_mode=FALSE, + faster_mode=TRUE, print_details=FALSE, pl=FALSE, cores=1) { @@ -212,6 +212,7 @@ att_gt <- function(yname, est_method=est_method, base_period=base_period, print_details=print_details, + faster_mode=faster_mode, pl=pl, cores=cores, call=match.call() diff --git a/R/compute.aggte.R b/R/compute.aggte.R index 017d968..b0810c8 100644 --- a/R/compute.aggte.R +++ b/R/compute.aggte.R @@ -1,645 +1,653 @@ -#' @title Compute Aggregated Treatment Effect Parameters -#' -#' @description Does the heavy lifting on computing aggregated group-time -#' average treatment effects -#' -#' @inheritParams att_gt -#' @inheritParams aggte -#' @param call The function call to aggte -#' -#' @return [`AGGTEobj`] object -#' -#' @keywords internal -#' -#' @export -compute.aggte <- function(MP, - type = "group", - balance_e = NULL, - min_e = -Inf, - max_e = Inf, - na.rm = FALSE, - bstrap = NULL, - biters = NULL, - cband = NULL, - alp = NULL, - clustervars = NULL, - call = NULL) { - - #----------------------------------------------------------------------------- - # unpack MP object - #----------------------------------------------------------------------------- - # load parameters - group <- MP$group - t <- MP$t - att <- MP$att - dp <- MP$DIDparams - inffunc1 <- MP$inffunc - n <- MP$n - - - gname <- dp$gname - data <- as.data.frame(dp$data) - tname <- dp$tname - idname <- dp$idname - if(is.null(clustervars)){ - clustervars <- dp$clustervars - } - if(is.null(bstrap)){ - bstrap <- dp$bstrap - } - if(is.null(biters)){ - biters <- dp$biters - } - if(is.null(alp)){ - alp <- dp$alp - } - if(is.null(cband)){ - cband <- dp$cband - } - - tlist <- dp$tlist - glist <- dp$glist - panel <- dp$panel - - # overwrite MP objects (so we can actually compute bootstrap) - MP$DIDparams$clustervars <- clustervars - MP$DIDparams$bstrap <- bstrap - MP$DIDparams$biters <- biters - MP$DIDparams$alp <- alp - MP$DIDparams$cband <- cband - dp <- MP$DIDparams - - if(!(type %in% c("simple", "dynamic", "group", "calendar"))) { - stop('`type` must be one of c("simple", "dynamic", "group", "calendar")') - } - - if(na.rm){ - notna <- !is.na(att) - group <- group[notna] - t <- t[notna] - att <- att[notna] - inffunc1 <- inffunc1[, notna] - #tlist <- sort(unique(t)) - glist <- sort(unique(group)) - - # If aggte is of the group type, ensure we have non-missing post-treatment ATTs for each group - if(type == "group"){ - # Get the groups that have some non-missing ATT(g,t) in post-treatmemt periods - gnotna <- sapply(glist, function(g) { - # look at post-treatment periods for group g - whichg <- which( (group == g) & (g <= t)) - attg <- att[whichg] - group_select <- !is.na(mean(attg)) - return(group_select) - }) - gnotna <- glist[gnotna] - # indicator for not all post-treatment ATT(g,t) missing - not_all_na <- group %in% gnotna - # Re-do the na.rm thing to update the groups - group <- group[not_all_na] - t <- t[not_all_na] - att <- att[not_all_na] - inffunc1 <- inffunc1[, not_all_na] - #tlist <- sort(unique(t)) - glist <- sort(unique(group)) - } - } - - if((na.rm == FALSE) && base::anyNA(att)) stop("Missing values at att_gt found. If you want to remove these, set `na.rm = TRUE'.") - - # data from first period - #ifelse(panel, - # dta <- data[ data[,tname]==tlist[1], ], - # dta <- data - # ) - if(panel){ - # data from first period - dta <- data[ data[,tname]==tlist[1], ] - }else { - #aggregate data - dta <- base::suppressWarnings(stats::aggregate(data, list((data[,idname])), mean)[,-1]) - } - - #----------------------------------------------------------------------------- - # data organization and recoding - #----------------------------------------------------------------------------- - - # do some recoding to make sure time periods are 1 unit apart - # and then put these back together at the end - originalt <- t - originalgroup <- group - originalglist <- glist - originaltlist <- tlist - # In case g's are not part of tlist - originalgtlist <- sort(unique(c(originaltlist,originalglist))) - uniquet <- seq(1,length(unique(originalgtlist))) - # function to switch from "new" t values to original t values - t2orig <- function(t) { - unique(c(originalgtlist,0))[which(c(uniquet,0)==t)] - } - # function to switch between "original" - # t values and new t values - orig2t <- function(orig) { - new_t <- c(uniquet,0)[which(unique(c(originalgtlist,0))==orig)] - out <- ifelse(length(new_t) == 0, NA, new_t) - out - } - t <- sapply(originalt, orig2t) - group <- sapply(originalgroup, orig2t) - glist <- sapply(originalglist, orig2t) - tlist <- unique(t) - maxT <- max(t) - - # Set the weights - weights.ind <- dta$.w - - # we can work in overall probabilities because conditioning will cancel out - # cause it shows up in numerator and denominator - pg <- sapply(originalglist, function(g) mean(weights.ind*(dta[,gname]==g))) - - # length of this is equal to number of groups - pgg <- pg - - # same but length is equal to the number of ATT(g,t) - pg <- pg[match(group, glist)] - - # which group time average treatment effects are post-treatment - keepers <- which(group <= t & t<= (group + max_e)) ### added second condition to allow for limit on longest period included in att - - # n x 1 vector of group variable - G <- unlist(lapply(dta[,gname], orig2t)) - - #----------------------------------------------------------------------------- - # Compute the simple ATT summary - #----------------------------------------------------------------------------- - - if (type == "simple") { - - # simple att - # averages all post-treatment ATT(g,t) with weights - # given by group size - simple.att <- sum(att[keepers]*pg[keepers])/(sum(pg[keepers])) - if(is.nan(simple.att)) simple.att <- NA - - # get the part of the influence function coming from estimated weights - simple.wif <- wif(keepers, pg, weights.ind, G, group) - - # get the overall influence function - simple.if <- get_agg_inf_func(att=att, - inffunc1=inffunc1, - whichones=keepers, - weights.agg=pg[keepers]/sum(pg[keepers]), - wif=simple.wif) - # Make it as vector - simple.if <- as.numeric(simple.if) - - # get standard errors from overall influence function - simple.se <- getSE(simple.if, dp) - if(!is.na(simple.se)){ - if(simple.se <= sqrt(.Machine$double.eps)*10) simple.se <- NA - } - - - return(AGGTEobj(overall.att = simple.att, - overall.se = simple.se, - type = type, - inf.function = list(simple.att = simple.if), - call=call, - DIDparams=dp)) - } - - #----------------------------------------------------------------------------- - # Compute the group (i.e., selective) treatment timing estimators - #----------------------------------------------------------------------------- - - if (type == "group") { - - # get group specific ATTs - # note: there are no estimated weights here - selective.att.g <- sapply(glist, function(g) { - # look at post-treatment periods for group g - whichg <- which( (group == g) & (g <= t) & (t<= (group + max_e))) ### added last condition to allow for limit on longest period included in att - attg <- att[whichg] - mean(attg) - }) - selective.att.g[is.nan(selective.att.g)] <- NA - - - # get standard errors for each group specific ATT - selective.se.inner <- lapply(glist, function(g) { - whichg <- which( (group == g) & (g <= t) & (t<= (group + max_e))) ### added last condition to allow for limit on longest period included in att - inf.func.g <- as.numeric(get_agg_inf_func(att=att, - inffunc1=inffunc1, - whichones=whichg, - weights.agg=pg[whichg]/sum(pg[whichg]), - wif=NULL)) - se.g <- getSE(inf.func.g, dp) - list(inf.func=inf.func.g, se=se.g) - }) - - # recover standard errors separately by group - selective.se.g <- unlist(BMisc::getListElement(selective.se.inner, "se")) - selective.se.g[selective.se.g <= sqrt(.Machine$double.eps)*10] <- NA - - # recover influence function separately by group - selective.inf.func.g <- simplify2array(BMisc::getListElement(selective.se.inner, "inf.func")) - - # use multiplier bootstrap (across groups) to get critical value - # for constructing uniform confidence bands - selective.crit.val <- stats::qnorm(1 - alp/2) - if(dp$cband==TRUE){ - if(dp$bstrap == FALSE){ - warning('Used bootstrap procedure to compute simultaneous confidence band') - } - selective.crit.val <- mboot(selective.inf.func.g, dp)$crit.val - - if(is.na(selective.crit.val) | is.infinite(selective.crit.val)){ - warning('Simultaneous critival value is NA. This probably happened because we cannot compute t-statistic (std errors are NA). We then report pointwise conf. intervals.') - selective.crit.val <- stats::qnorm(1 - alp/2) - dp$cband <- FALSE - } - - if(selective.crit.val < stats::qnorm(1 - alp/2)){ - warning('Simultaneous conf. band is somehow smaller than pointwise one using normal approximation. Since this is unusual, we are reporting pointwise confidence intervals') - selective.crit.val <- stats::qnorm(1 - alp/2) - dp$cband <- FALSE - } - - if(selective.crit.val >= 7){ - warning("Simultaneous critical value is arguably `too large' to be realible. This usually happens when number of observations per group is small and/or there is no much variation in outcomes.") - } - - } - - # get overall att under selective treatment timing - # (here use pgg instead of pg because we can just look at each group) - selective.att <- sum(selective.att.g * pgg)/sum(pgg) - - # account for having to estimate pgg in the influence function - selective.wif <- wif(keepers=1:length(glist), - pg=pgg, - weights.ind=weights.ind, - G=G, - group=group) - - # get overall influence function - selective.inf.func <- get_agg_inf_func(att=selective.att.g, - inffunc1=selective.inf.func.g, - whichones=(1:length(glist)), - weights.agg=pgg/sum(pgg), - wif=selective.wif) - - - selective.inf.func <- as.numeric(selective.inf.func) - # get overall standard error - selective.se <- getSE(selective.inf.func, dp) - if(!is.na(selective.se)){ - if((selective.se <= sqrt(.Machine$double.eps)*10)) selective.se <- NA - } - - return(AGGTEobj(overall.att=selective.att, - overall.se=selective.se, - type=type, - egt=originalglist, - att.egt=selective.att.g, - se.egt=selective.se.g, - crit.val.egt=selective.crit.val, - inf.function = list(selective.inf.func.g = selective.inf.func.g, - selective.inf.func = selective.inf.func), - call=call, - DIDparams=dp)) - - } - - - - #----------------------------------------------------------------------------- - # Compute the event-study estimators - #----------------------------------------------------------------------------- - - if (type == "dynamic") { - - # event times - # this looks at all available event times - # note: event times can be negative here. - # note: event time = 0 corresponds to "on impact" - #eseq <- unique(t-group) - eseq <- unique(originalt - originalgroup) - eseq <- eseq[order(eseq)] - - # if the user specifies balance_e, then we are going to - # drop some event times and some groups; if not, we just - # keep everything (that is what this variable is for) - include.balanced.gt <- rep(TRUE, length(originalgroup)) - - # if we balance the sample with resepect to event time - if (!is.null(balance_e)) { - include.balanced.gt <- (t2orig(maxT) - originalgroup >= balance_e) - - eseq <- unique(originalt[include.balanced.gt] - originalgroup[include.balanced.gt]) - eseq <- eseq[order(eseq)] - - eseq <- eseq[ (eseq <= balance_e) & (eseq >= balance_e - t2orig(maxT) + t2orig(1))] - - } - - # only looks at some event times - eseq <- eseq[ (eseq >= min_e) & (eseq <= max_e) ] - - # compute atts that are specific to each event time - dynamic.att.e <- sapply(eseq, function(e) { - # keep att(g,t) for the right g&t as well as ones that - # are not trimmed out from balancing the sample - whiche <- which( (originalt - originalgroup == e) & (include.balanced.gt) ) - atte <- att[whiche] - pge <- pg[whiche]/(sum(pg[whiche])) - sum(atte*pge) - }) - - # compute standard errors for dynamic effects - dynamic.se.inner <- lapply(eseq, function(e) { - whiche <- which( (originalt - originalgroup == e) & (include.balanced.gt) ) - pge <- pg[whiche]/(sum(pg[whiche])) - wif.e <- wif(whiche, pg, weights.ind, G, group) - inf.func.e <- as.numeric(get_agg_inf_func(att=att, - inffunc1=inffunc1, - whichones=whiche, - weights.agg=pge, - wif=wif.e)) - se.e <- getSE(inf.func.e, dp) - list(inf.func=inf.func.e, se=se.e) - }) - - dynamic.se.e <- unlist(BMisc::getListElement(dynamic.se.inner, "se")) - dynamic.se.e[dynamic.se.e <= sqrt(.Machine$double.eps)*10] <- NA - - dynamic.inf.func.e <- simplify2array(BMisc::getListElement(dynamic.se.inner, "inf.func")) - - dynamic.crit.val <- stats::qnorm(1 - alp/2) - if(dp$cband==TRUE){ - if(dp$bstrap == FALSE){ - warning('Used bootstrap procedure to compute simultaneous confidence band') - } - dynamic.crit.val <- mboot(dynamic.inf.func.e, dp)$crit.val - - if(is.na(dynamic.crit.val) | is.infinite(dynamic.crit.val)){ - warning('Simultaneous critival value is NA. This probably happened because we cannot compute t-statistic (std errors are NA). We then report pointwise conf. intervals.') - dynamic.crit.val <- stats::qnorm(1 - alp/2) - dp$cband <- FALSE - } - - if(dynamic.crit.val < stats::qnorm(1 - alp/2)){ - warning('Simultaneous conf. band is somehow smaller than pointwise one using normal approximation. Since this is unusual, we are reporting pointwise confidence intervals') - dynamic.crit.val <- stats::qnorm(1 - alp/2) - dp$cband <- FALSE - } - - if(dynamic.crit.val >= 7){ - warning("Simultaneous critical value is arguably `too large' to be realible. This usually happens when number of observations per group is small and/or there is no much variation in outcomes.") - } - } - - # get overall average treatment effect - # by averaging over positive dynamics - epos <- eseq >= 0 - dynamic.att <- mean(dynamic.att.e[epos]) - dynamic.inf.func <- get_agg_inf_func(att=dynamic.att.e[epos], - inffunc1=as.matrix(dynamic.inf.func.e[,epos]), - whichones=(1:sum(epos)), - weights.agg=(rep(1/sum(epos), sum(epos))), - wif=NULL) - - dynamic.inf.func <- as.numeric(dynamic.inf.func) - dynamic.se <- getSE(dynamic.inf.func, dp) - if(!is.na(dynamic.se)){ - if (dynamic.se <= sqrt(.Machine$double.eps)*10) dynamic.se <- NA - } - - return(AGGTEobj(overall.att=dynamic.att, - overall.se=dynamic.se, - type=type, - egt=eseq, - att.egt=dynamic.att.e, - se.egt=dynamic.se.e, - crit.val.egt=dynamic.crit.val, - inf.function = list(dynamic.inf.func.e = dynamic.inf.func.e, - dynamic.inf.func = dynamic.inf.func), - call=call, - min_e=min_e, - max_e=max_e, - balance_e=balance_e, - DIDparams=dp - )) - } - - #----------------------------------------------------------------------------- - # calendar time effects - #----------------------------------------------------------------------------- - - if (type == "calendar") { - - # drop time periods where no one is treated yet - # (can't get treatment effects in those periods) - minG <- min(group) - calendar.tlist <- tlist[tlist>=minG] - - # calendar time specific atts - calendar.att.t <- sapply(calendar.tlist, function(t1) { - # look at post-treatment periods for group g - whicht <- which( (t == t1) & (group <= t)) - attt <- att[whicht] - pgt <- pg[whicht]/(sum(pg[whicht])) - sum(pgt * attt) - }) - - # get standard errors and influence functions - # for each time specific att - calendar.se.inner <- lapply(calendar.tlist, function(t1) { - whicht <- which( (t == t1) & (group <= t)) - pgt <- pg[whicht]/(sum(pg[whicht])) - wif.t <- wif(keepers=whicht, - pg=pg, - weights.ind=weights.ind, - G=G, - group=group) - inf.func.t <- as.numeric(get_agg_inf_func(att=att, - inffunc1=inffunc1, - whichones=whicht, - weights.agg=pgt, - wif=wif.t)) - se.t <- getSE(inf.func.t, dp) - list(inf.func=inf.func.t, se=se.t) - }) - - # recover standard errors separately by time - calendar.se.t <- unlist(BMisc::getListElement(calendar.se.inner, "se")) - calendar.se.t[calendar.se.t <= sqrt(.Machine$double.eps)*10] <- NA - # recover influence function separately by time - calendar.inf.func.t <- simplify2array(BMisc::getListElement(calendar.se.inner, "inf.func")) - - # use multiplier boostrap (across groups) to get critical value - # for constructing uniform confidence bands - calendar.crit.val <- stats::qnorm(1-alp/2) - if(dp$cband==TRUE){ - if(dp$bstrap == FALSE){ - warning('Used bootstrap procedure to compute simultaneous confidence band') - } - calendar.crit.val <- mboot(calendar.inf.func.t, dp)$crit.val - - if(is.na(calendar.crit.val) | is.infinite(calendar.crit.val)){ - warning('Simultaneous critival value is NA. This probably happened because we cannot compute t-statistic (std errors are NA). We then report pointwise conf. intervals.') - calendar.crit.val <- stats::qnorm(1 - alp/2) - dp$cband <- FALSE - } - - if(calendar.crit.val < stats::qnorm(1 - alp/2)){ - warning('Simultaneous conf. band is somehow smaller than pointwise one using normal approximation. Since this is unusual, we are reporting pointwise confidence intervals') - calendar.crit.val <- stats::qnorm(1 - alp/2) - dp$cband <- FALSE - } - - if(calendar.crit.val >= 7){ - warning("Simultaneous critical value is arguably `too large' to be realible. This usually happens when number of observations per group is small and/or there is no much variation in outcomes.") - } - } - - # get overall att under calendar time effects - # this is just average over all time periods - calendar.att <- mean(calendar.att.t) - - # get overall influence function - calendar.inf.func <- get_agg_inf_func(att=calendar.att.t, - inffunc1=calendar.inf.func.t, - whichones=(1:length(calendar.tlist)), - weights.agg=rep(1/length(calendar.tlist), length(calendar.tlist)), - wif=NULL) - calendar.inf.func <- as.numeric(calendar.inf.func) - # get overall standard error - calendar.se <- getSE(calendar.inf.func, dp) - if(!is.na(calendar.se)){ - if (calendar.se <= sqrt(.Machine$double.eps)*10) calendar.se <- NA - } - return(AGGTEobj(overall.att=calendar.att, - overall.se=calendar.se, - type=type, - egt=sapply(calendar.tlist,t2orig), - att.egt=calendar.att.t, - se.egt=calendar.se.t, - crit.val.egt=calendar.crit.val, - inf.function = list(calendar.inf.func.t = calendar.inf.func.t, - calendar.inf.func = calendar.inf.func), - call=call, - DIDparams=dp - )) - - } - - -} - -#----------------------------------------------------------------------------- -# Internal functions for getting standard errors -#----------------------------------------------------------------------------- - -#' @title Compute extra term in influence function due to estimating weights -#' -#' @description A function to compute the extra term that shows up in the -#' influence function for aggregated treatment effect parameters -#' due to estimating the weights -#' -#' @param keepers a vector of indices for which group-time average -#' treatment effects are used to compute a particular aggregated parameter -#' @param pg a vector with same length as total number of group-time average -#' treatment effects that contains the probability of being in particular group -#' @param weights.ind additional sampling weights (nx1) -#' @param G vector containing which group a unit belongs to (nx1) -#' @param group vector of groups -#' -#' @return nxk influence function matrix -#' -#' @keywords internal -wif <- function(keepers, pg, weights.ind, G, group) { - # note: weights are all of the form P(G=g|cond)/sum_cond(P(G=g|cond)) - # this is equal to P(G=g)/sum_cond(P(G=g)) which simplifies things here - - # effect of estimating weights in the numerator - if1 <- sapply(keepers, function(k) { - (weights.ind * 1*BMisc::TorF(G==group[k]) - pg[k]) / - sum(pg[keepers]) - }) - # effect of estimating weights in the denominator - if2 <- base::rowSums( sapply( keepers, function(k) { - weights.ind*1*BMisc::TorF(G==group[k]) - pg[k] - })) %*% - t(pg[keepers]/(sum(pg[keepers])^2)) - - # return the influence function for the weights - if1 - if2 -} - - -#' @title Get an influence function for particular aggregate parameters -#' -#' @title This is a generic internal function for combining influence -#' functions across ATT(g,t)'s to return an influence function for -#' various aggregated treatment effect parameters. -#' -#' @param att vector of group-time average treatment effects -#' @param inffunc1 influence function for all group-time average treatment effects -#' (matrix) -#' @param whichones which elements of att will be used to compute the aggregated -#' treatment effect parameter -#' @param weights.agg the weights to apply to each element of att(whichones); -#' should have the same dimension as att(whichones) -#' @param wif extra influence function term coming from estimating the weights; -#' should be n x k matrix where k is dimension of whichones -#' -#' @return nx1 influence function -#' -#' @keywords internal -get_agg_inf_func <- function(att, inffunc1, whichones, weights.agg, wif=NULL) { - # enforce weights are in matrix form - weights.agg <- as.matrix(weights.agg) - - # multiplies influence function times weights and sums to get vector of weighted IF (of length n) - thisinffunc <- inffunc1[,whichones]%*%weights.agg - - # Incorporate influence function of the weights - if (!is.null(wif)) { - thisinffunc <- thisinffunc + wif%*%as.matrix(att[whichones]) - } - - # return influence function - return(thisinffunc) -} - - -#' @title Take influence function and return standard errors -#' -#' @description Function to take an nx1 influence function and return -#' a standard error -#' -#' @param thisinffunc An influence function -#' @inheritParams compute.aggte -#' -#' @return scalar standard error -#' -#' @keywords internal -getSE <- function(thisinffunc, DIDparams=NULL) { - alp <- .05 - bstrap <- FALSE - if (!is.null(DIDparams)) { - bstrap <- DIDparams$bstrap - alp <- DIDparams$alp - cband <- DIDparams$cband - n <- length(thisinffunc) - } - - if (bstrap) { - bout <- mboot(thisinffunc, DIDparams) - return(bout$se) - } else { - return(sqrt( mean((thisinffunc)^2)/n )) - } -} - +#' @title Compute Aggregated Treatment Effect Parameters +#' +#' @description Does the heavy lifting on computing aggregated group-time +#' average treatment effects +#' +#' @inheritParams att_gt +#' @inheritParams aggte +#' @param call The function call to aggte +#' +#' @return [`AGGTEobj`] object +#' +#' @keywords internal +#' +#' @export +compute.aggte <- function(MP, + type = "group", + balance_e = NULL, + min_e = -Inf, + max_e = Inf, + na.rm = FALSE, + bstrap = NULL, + biters = NULL, + cband = NULL, + alp = NULL, + clustervars = NULL, + call = NULL) { + + #----------------------------------------------------------------------------- + # unpack MP object + #----------------------------------------------------------------------------- + # load parameters + group <- MP$group + t <- MP$t + att <- MP$att + dp <- MP$DIDparams + inffunc1 <- MP$inffunc + n <- MP$n + + + gname <- dp$gname + tname <- dp$tname + idname <- dp$idname + panel <- dp$panel + if(is.null(clustervars)){ + clustervars <- dp$clustervars + } + if(is.null(bstrap)){ + bstrap <- dp$bstrap + } + if(is.null(biters)){ + biters <- dp$biters + } + if(is.null(alp)){ + alp <- dp$alp + } + if(is.null(cband)){ + cband <- dp$cband + } + if(dp$faster_mode){ + data <- as.data.frame(dp$data) + tlist <- dp$time_periods + glist <- dp$treated_groups + } else { + data <- as.data.frame(dp$data) + tlist <- dp$tlist + glist <- dp$glist + } + + + + # overwrite MP objects (so we can actually compute bootstrap) + MP$DIDparams$clustervars <- clustervars + MP$DIDparams$bstrap <- bstrap + MP$DIDparams$biters <- biters + MP$DIDparams$alp <- alp + MP$DIDparams$cband <- cband + dp <- MP$DIDparams + + if(!(type %in% c("simple", "dynamic", "group", "calendar"))) { + stop('`type` must be one of c("simple", "dynamic", "group", "calendar")') + } + + if(na.rm){ + notna <- !is.na(att) + group <- group[notna] + t <- t[notna] + att <- att[notna] + inffunc1 <- inffunc1[, notna] + #tlist <- sort(unique(t)) + glist <- sort(unique(group)) + + # If aggte is of the group type, ensure we have non-missing post-treatment ATTs for each group + if(type == "group"){ + # Get the groups that have some non-missing ATT(g,t) in post-treatmemt periods + gnotna <- sapply(glist, function(g) { + # look at post-treatment periods for group g + whichg <- which( (group == g) & (g <= t)) + attg <- att[whichg] + group_select <- !is.na(mean(attg)) + return(group_select) + }) + gnotna <- glist[gnotna] + # indicator for not all post-treatment ATT(g,t) missing + not_all_na <- group %in% gnotna + # Re-do the na.rm thing to update the groups + group <- group[not_all_na] + t <- t[not_all_na] + att <- att[not_all_na] + inffunc1 <- inffunc1[, not_all_na] + #tlist <- sort(unique(t)) + glist <- sort(unique(group)) + } + } + + if((na.rm == FALSE) && base::anyNA(att)) stop("Missing values at att_gt found. If you want to remove these, set `na.rm = TRUE'.") + + # data from first period + #ifelse(panel, + # dta <- data[ data[,tname]==tlist[1], ], + # dta <- data + # ) + if(panel){ + # data from first period + # TODO; THIS HAS TO BE OPTIMIZED WITH faster_mode enabled. + dta <- data[data[,tname]==tlist[1], ] + }else { + #aggregate data + dta <- base::suppressWarnings(stats::aggregate(data, list((data[,idname])), mean)[,-1]) + } + + #----------------------------------------------------------------------------- + # data organization and recoding + #----------------------------------------------------------------------------- + + # do some recoding to make sure time periods are 1 unit apart + # and then put these back together at the end + originalt <- t + originalgroup <- group + originalglist <- glist + originaltlist <- tlist + # In case g's are not part of tlist + originalgtlist <- sort(unique(c(originaltlist,originalglist))) + uniquet <- seq(1,length(unique(originalgtlist))) + # function to switch from "new" t values to original t values + t2orig <- function(t) { + unique(c(originalgtlist,0))[which(c(uniquet,0)==t)] + } + # function to switch between "original" + # t values and new t values + orig2t <- function(orig) { + new_t <- c(uniquet,0)[which(unique(c(originalgtlist,0))==orig)] + out <- ifelse(length(new_t) == 0, NA, new_t) + out + } + t <- sapply(originalt, orig2t) + group <- sapply(originalgroup, orig2t) + glist <- sapply(originalglist, orig2t) + tlist <- unique(t) + maxT <- max(t) + + # Set the weights + weights.ind <- dta$.w + + # we can work in overall probabilities because conditioning will cancel out + # cause it shows up in numerator and denominator + pg <- sapply(originalglist, function(g) mean(weights.ind*(dta[,gname]==g))) + + # length of this is equal to number of groups + pgg <- pg + + # same but length is equal to the number of ATT(g,t) + pg <- pg[match(group, glist)] + + # which group time average treatment effects are post-treatment + keepers <- which(group <= t & t<= (group + max_e)) ### added second condition to allow for limit on longest period included in att + + # n x 1 vector of group variable + G <- unlist(lapply(dta[,gname], orig2t)) + + #----------------------------------------------------------------------------- + # Compute the simple ATT summary + #----------------------------------------------------------------------------- + + if (type == "simple") { + + # simple att + # averages all post-treatment ATT(g,t) with weights + # given by group size + simple.att <- sum(att[keepers]*pg[keepers])/(sum(pg[keepers])) + if(is.nan(simple.att)) simple.att <- NA + + # get the part of the influence function coming from estimated weights + simple.wif <- wif(keepers, pg, weights.ind, G, group) + + # get the overall influence function + simple.if <- get_agg_inf_func(att=att, + inffunc1=inffunc1, + whichones=keepers, + weights.agg=pg[keepers]/sum(pg[keepers]), + wif=simple.wif) + # Make it as vector + simple.if <- as.numeric(simple.if) + + # get standard errors from overall influence function + simple.se <- getSE(simple.if, dp) + if(!is.na(simple.se)){ + if(simple.se <= sqrt(.Machine$double.eps)*10) simple.se <- NA + } + + + return(AGGTEobj(overall.att = simple.att, + overall.se = simple.se, + type = type, + inf.function = list(simple.att = simple.if), + call=call, + DIDparams=dp)) + } + + #----------------------------------------------------------------------------- + # Compute the group (i.e., selective) treatment timing estimators + #----------------------------------------------------------------------------- + + if (type == "group") { + + # get group specific ATTs + # note: there are no estimated weights here + selective.att.g <- sapply(glist, function(g) { + # look at post-treatment periods for group g + whichg <- which( (group == g) & (g <= t) & (t<= (group + max_e))) ### added last condition to allow for limit on longest period included in att + attg <- att[whichg] + mean(attg) + }) + selective.att.g[is.nan(selective.att.g)] <- NA + + + # get standard errors for each group specific ATT + selective.se.inner <- lapply(glist, function(g) { + whichg <- which( (group == g) & (g <= t) & (t<= (group + max_e))) ### added last condition to allow for limit on longest period included in att + inf.func.g <- as.numeric(get_agg_inf_func(att=att, + inffunc1=inffunc1, + whichones=whichg, + weights.agg=pg[whichg]/sum(pg[whichg]), + wif=NULL)) + se.g <- getSE(inf.func.g, dp) + list(inf.func=inf.func.g, se=se.g) + }) + + # recover standard errors separately by group + selective.se.g <- unlist(BMisc::getListElement(selective.se.inner, "se")) + selective.se.g[selective.se.g <= sqrt(.Machine$double.eps)*10] <- NA + + # recover influence function separately by group + selective.inf.func.g <- simplify2array(BMisc::getListElement(selective.se.inner, "inf.func")) + + # use multiplier bootstrap (across groups) to get critical value + # for constructing uniform confidence bands + selective.crit.val <- stats::qnorm(1 - alp/2) + if(dp$cband==TRUE){ + if(dp$bstrap == FALSE){ + warning('Used bootstrap procedure to compute simultaneous confidence band') + } + selective.crit.val <- mboot(selective.inf.func.g, dp)$crit.val + + if(is.na(selective.crit.val) | is.infinite(selective.crit.val)){ + warning('Simultaneous critival value is NA. This probably happened because we cannot compute t-statistic (std errors are NA). We then report pointwise conf. intervals.') + selective.crit.val <- stats::qnorm(1 - alp/2) + dp$cband <- FALSE + } + + if(selective.crit.val < stats::qnorm(1 - alp/2)){ + warning('Simultaneous conf. band is somehow smaller than pointwise one using normal approximation. Since this is unusual, we are reporting pointwise confidence intervals') + selective.crit.val <- stats::qnorm(1 - alp/2) + dp$cband <- FALSE + } + + if(selective.crit.val >= 7){ + warning("Simultaneous critical value is arguably `too large' to be realible. This usually happens when number of observations per group is small and/or there is no much variation in outcomes.") + } + + } + + # get overall att under selective treatment timing + # (here use pgg instead of pg because we can just look at each group) + selective.att <- sum(selective.att.g * pgg)/sum(pgg) + + # account for having to estimate pgg in the influence function + selective.wif <- wif(keepers=1:length(glist), + pg=pgg, + weights.ind=weights.ind, + G=G, + group=group) + + # get overall influence function + selective.inf.func <- get_agg_inf_func(att=selective.att.g, + inffunc1=selective.inf.func.g, + whichones=(1:length(glist)), + weights.agg=pgg/sum(pgg), + wif=selective.wif) + + + selective.inf.func <- as.numeric(selective.inf.func) + # get overall standard error + selective.se <- getSE(selective.inf.func, dp) + if(!is.na(selective.se)){ + if((selective.se <= sqrt(.Machine$double.eps)*10)) selective.se <- NA + } + + return(AGGTEobj(overall.att=selective.att, + overall.se=selective.se, + type=type, + egt=originalglist, + att.egt=selective.att.g, + se.egt=selective.se.g, + crit.val.egt=selective.crit.val, + inf.function = list(selective.inf.func.g = selective.inf.func.g, + selective.inf.func = selective.inf.func), + call=call, + DIDparams=dp)) + + } + + + + #----------------------------------------------------------------------------- + # Compute the event-study estimators + #----------------------------------------------------------------------------- + + if (type == "dynamic") { + + # event times + # this looks at all available event times + # note: event times can be negative here. + # note: event time = 0 corresponds to "on impact" + #eseq <- unique(t-group) + eseq <- unique(originalt - originalgroup) + eseq <- eseq[order(eseq)] + + # if the user specifies balance_e, then we are going to + # drop some event times and some groups; if not, we just + # keep everything (that is what this variable is for) + include.balanced.gt <- rep(TRUE, length(originalgroup)) + + # if we balance the sample with resepect to event time + if (!is.null(balance_e)) { + include.balanced.gt <- (t2orig(maxT) - originalgroup >= balance_e) + + eseq <- unique(originalt[include.balanced.gt] - originalgroup[include.balanced.gt]) + eseq <- eseq[order(eseq)] + + eseq <- eseq[ (eseq <= balance_e) & (eseq >= balance_e - t2orig(maxT) + t2orig(1))] + + } + + # only looks at some event times + eseq <- eseq[ (eseq >= min_e) & (eseq <= max_e) ] + + # compute atts that are specific to each event time + dynamic.att.e <- sapply(eseq, function(e) { + # keep att(g,t) for the right g&t as well as ones that + # are not trimmed out from balancing the sample + whiche <- which( (originalt - originalgroup == e) & (include.balanced.gt) ) + atte <- att[whiche] + pge <- pg[whiche]/(sum(pg[whiche])) + sum(atte*pge) + }) + + # compute standard errors for dynamic effects + dynamic.se.inner <- lapply(eseq, function(e) { + whiche <- which( (originalt - originalgroup == e) & (include.balanced.gt) ) + pge <- pg[whiche]/(sum(pg[whiche])) + wif.e <- wif(whiche, pg, weights.ind, G, group) + inf.func.e <- as.numeric(get_agg_inf_func(att=att, + inffunc1=inffunc1, + whichones=whiche, + weights.agg=pge, + wif=wif.e)) + se.e <- getSE(inf.func.e, dp) + list(inf.func=inf.func.e, se=se.e) + }) + + dynamic.se.e <- unlist(BMisc::getListElement(dynamic.se.inner, "se")) + dynamic.se.e[dynamic.se.e <= sqrt(.Machine$double.eps)*10] <- NA + + dynamic.inf.func.e <- simplify2array(BMisc::getListElement(dynamic.se.inner, "inf.func")) + + dynamic.crit.val <- stats::qnorm(1 - alp/2) + if(dp$cband==TRUE){ + if(dp$bstrap == FALSE){ + warning('Used bootstrap procedure to compute simultaneous confidence band') + } + dynamic.crit.val <- mboot(dynamic.inf.func.e, dp)$crit.val + + if(is.na(dynamic.crit.val) | is.infinite(dynamic.crit.val)){ + warning('Simultaneous critival value is NA. This probably happened because we cannot compute t-statistic (std errors are NA). We then report pointwise conf. intervals.') + dynamic.crit.val <- stats::qnorm(1 - alp/2) + dp$cband <- FALSE + } + + if(dynamic.crit.val < stats::qnorm(1 - alp/2)){ + warning('Simultaneous conf. band is somehow smaller than pointwise one using normal approximation. Since this is unusual, we are reporting pointwise confidence intervals') + dynamic.crit.val <- stats::qnorm(1 - alp/2) + dp$cband <- FALSE + } + + if(dynamic.crit.val >= 7){ + warning("Simultaneous critical value is arguably `too large' to be realible. This usually happens when number of observations per group is small and/or there is no much variation in outcomes.") + } + } + + # get overall average treatment effect + # by averaging over positive dynamics + epos <- eseq >= 0 + dynamic.att <- mean(dynamic.att.e[epos]) + dynamic.inf.func <- get_agg_inf_func(att=dynamic.att.e[epos], + inffunc1=as.matrix(dynamic.inf.func.e[,epos]), + whichones=(1:sum(epos)), + weights.agg=(rep(1/sum(epos), sum(epos))), + wif=NULL) + + dynamic.inf.func <- as.numeric(dynamic.inf.func) + dynamic.se <- getSE(dynamic.inf.func, dp) + if(!is.na(dynamic.se)){ + if (dynamic.se <= sqrt(.Machine$double.eps)*10) dynamic.se <- NA + } + + return(AGGTEobj(overall.att=dynamic.att, + overall.se=dynamic.se, + type=type, + egt=eseq, + att.egt=dynamic.att.e, + se.egt=dynamic.se.e, + crit.val.egt=dynamic.crit.val, + inf.function = list(dynamic.inf.func.e = dynamic.inf.func.e, + dynamic.inf.func = dynamic.inf.func), + call=call, + min_e=min_e, + max_e=max_e, + balance_e=balance_e, + DIDparams=dp + )) + } + + #----------------------------------------------------------------------------- + # calendar time effects + #----------------------------------------------------------------------------- + + if (type == "calendar") { + + # drop time periods where no one is treated yet + # (can't get treatment effects in those periods) + minG <- min(group) + calendar.tlist <- tlist[tlist>=minG] + + # calendar time specific atts + calendar.att.t <- sapply(calendar.tlist, function(t1) { + # look at post-treatment periods for group g + whicht <- which( (t == t1) & (group <= t)) + attt <- att[whicht] + pgt <- pg[whicht]/(sum(pg[whicht])) + sum(pgt * attt) + }) + + # get standard errors and influence functions + # for each time specific att + calendar.se.inner <- lapply(calendar.tlist, function(t1) { + whicht <- which( (t == t1) & (group <= t)) + pgt <- pg[whicht]/(sum(pg[whicht])) + wif.t <- wif(keepers=whicht, + pg=pg, + weights.ind=weights.ind, + G=G, + group=group) + inf.func.t <- as.numeric(get_agg_inf_func(att=att, + inffunc1=inffunc1, + whichones=whicht, + weights.agg=pgt, + wif=wif.t)) + se.t <- getSE(inf.func.t, dp) + list(inf.func=inf.func.t, se=se.t) + }) + + # recover standard errors separately by time + calendar.se.t <- unlist(BMisc::getListElement(calendar.se.inner, "se")) + calendar.se.t[calendar.se.t <= sqrt(.Machine$double.eps)*10] <- NA + # recover influence function separately by time + calendar.inf.func.t <- simplify2array(BMisc::getListElement(calendar.se.inner, "inf.func")) + + # use multiplier boostrap (across groups) to get critical value + # for constructing uniform confidence bands + calendar.crit.val <- stats::qnorm(1-alp/2) + if(dp$cband==TRUE){ + if(dp$bstrap == FALSE){ + warning('Used bootstrap procedure to compute simultaneous confidence band') + } + calendar.crit.val <- mboot(calendar.inf.func.t, dp)$crit.val + + if(is.na(calendar.crit.val) | is.infinite(calendar.crit.val)){ + warning('Simultaneous critival value is NA. This probably happened because we cannot compute t-statistic (std errors are NA). We then report pointwise conf. intervals.') + calendar.crit.val <- stats::qnorm(1 - alp/2) + dp$cband <- FALSE + } + + if(calendar.crit.val < stats::qnorm(1 - alp/2)){ + warning('Simultaneous conf. band is somehow smaller than pointwise one using normal approximation. Since this is unusual, we are reporting pointwise confidence intervals') + calendar.crit.val <- stats::qnorm(1 - alp/2) + dp$cband <- FALSE + } + + if(calendar.crit.val >= 7){ + warning("Simultaneous critical value is arguably `too large' to be realible. This usually happens when number of observations per group is small and/or there is no much variation in outcomes.") + } + } + + # get overall att under calendar time effects + # this is just average over all time periods + calendar.att <- mean(calendar.att.t) + + # get overall influence function + calendar.inf.func <- get_agg_inf_func(att=calendar.att.t, + inffunc1=calendar.inf.func.t, + whichones=(1:length(calendar.tlist)), + weights.agg=rep(1/length(calendar.tlist), length(calendar.tlist)), + wif=NULL) + calendar.inf.func <- as.numeric(calendar.inf.func) + # get overall standard error + calendar.se <- getSE(calendar.inf.func, dp) + if(!is.na(calendar.se)){ + if (calendar.se <= sqrt(.Machine$double.eps)*10) calendar.se <- NA + } + return(AGGTEobj(overall.att=calendar.att, + overall.se=calendar.se, + type=type, + egt=sapply(calendar.tlist,t2orig), + att.egt=calendar.att.t, + se.egt=calendar.se.t, + crit.val.egt=calendar.crit.val, + inf.function = list(calendar.inf.func.t = calendar.inf.func.t, + calendar.inf.func = calendar.inf.func), + call=call, + DIDparams=dp + )) + + } + + +} + +#----------------------------------------------------------------------------- +# Internal functions for getting standard errors +#----------------------------------------------------------------------------- + +#' @title Compute extra term in influence function due to estimating weights +#' +#' @description A function to compute the extra term that shows up in the +#' influence function for aggregated treatment effect parameters +#' due to estimating the weights +#' +#' @param keepers a vector of indices for which group-time average +#' treatment effects are used to compute a particular aggregated parameter +#' @param pg a vector with same length as total number of group-time average +#' treatment effects that contains the probability of being in particular group +#' @param weights.ind additional sampling weights (nx1) +#' @param G vector containing which group a unit belongs to (nx1) +#' @param group vector of groups +#' +#' @return nxk influence function matrix +#' +#' @keywords internal +wif <- function(keepers, pg, weights.ind, G, group) { + # note: weights are all of the form P(G=g|cond)/sum_cond(P(G=g|cond)) + # this is equal to P(G=g)/sum_cond(P(G=g)) which simplifies things here + + # effect of estimating weights in the numerator + if1 <- sapply(keepers, function(k) { + (weights.ind * 1*BMisc::TorF(G==group[k]) - pg[k]) / + sum(pg[keepers]) + }) + # effect of estimating weights in the denominator + if2 <- base::rowSums( sapply( keepers, function(k) { + weights.ind*1*BMisc::TorF(G==group[k]) - pg[k] + })) %*% + t(pg[keepers]/(sum(pg[keepers])^2)) + + # return the influence function for the weights + if1 - if2 +} + + +#' @title Get an influence function for particular aggregate parameters +#' +#' @title This is a generic internal function for combining influence +#' functions across ATT(g,t)'s to return an influence function for +#' various aggregated treatment effect parameters. +#' +#' @param att vector of group-time average treatment effects +#' @param inffunc1 influence function for all group-time average treatment effects +#' (matrix) +#' @param whichones which elements of att will be used to compute the aggregated +#' treatment effect parameter +#' @param weights.agg the weights to apply to each element of att(whichones); +#' should have the same dimension as att(whichones) +#' @param wif extra influence function term coming from estimating the weights; +#' should be n x k matrix where k is dimension of whichones +#' +#' @return nx1 influence function +#' +#' @keywords internal +get_agg_inf_func <- function(att, inffunc1, whichones, weights.agg, wif=NULL) { + # enforce weights are in matrix form + weights.agg <- as.matrix(weights.agg) + + # multiplies influence function times weights and sums to get vector of weighted IF (of length n) + thisinffunc <- inffunc1[,whichones]%*%weights.agg + + # Incorporate influence function of the weights + if (!is.null(wif)) { + thisinffunc <- thisinffunc + wif%*%as.matrix(att[whichones]) + } + + # return influence function + return(thisinffunc) +} + + +#' @title Take influence function and return standard errors +#' +#' @description Function to take an nx1 influence function and return +#' a standard error +#' +#' @param thisinffunc An influence function +#' @inheritParams compute.aggte +#' +#' @return scalar standard error +#' +#' @keywords internal +getSE <- function(thisinffunc, DIDparams=NULL) { + alp <- .05 + bstrap <- FALSE + if (!is.null(DIDparams)) { + bstrap <- DIDparams$bstrap + alp <- DIDparams$alp + cband <- DIDparams$cband + n <- length(thisinffunc) + } + + if (bstrap) { + bout <- mboot(thisinffunc, DIDparams) + return(bout$se) + } else { + return(sqrt( mean((thisinffunc)^2)/n )) + } +} + diff --git a/R/mboot.R b/R/mboot.R index d110e6f..6ebf42a 100644 --- a/R/mboot.R +++ b/R/mboot.R @@ -20,21 +20,36 @@ #' @export mboot <- function(inf.func, DIDparams, pl = FALSE, cores = 1) { - # setup needed variables - data <- as.data.frame(DIDparams$data) - idname <- DIDparams$idname - clustervars <- DIDparams$clustervars - biters <- DIDparams$biters - tname <- DIDparams$tname - tlist <- unique(data[,tname])[order(unique(data[,tname]))] - alp <- DIDparams$alp - panel <- DIDparams$panel - true_repeated_cross_sections <- DIDparams$true_repeated_cross_sections - - # just get n obsevations (for clustering below...) - ifelse(panel, - dta <- data[ data[,tname]==tlist[1], ], - dta <- data) + # setup needed variables according to faster_mode; This returns different type of objects + # depending on whether we are in faster_mode or not that has to be handled in the code below + if (DIDparams$faster_mode) { + data <- DIDparams$time_invariant_data + dta <- data + idname <- DIDparams$idname + clustervars <- DIDparams$clustervars + biters <- DIDparams$biters + tname <- DIDparams$tname + tlist <- DIDparams$time_periods + alp <- DIDparams$alp + panel <- DIDparams$panel + true_repeated_cross_sections <- DIDparams$true_repeated_cross_sections + } else { + data <- as.data.frame(DIDparams$data) + idname <- DIDparams$idname + clustervars <- DIDparams$clustervars + biters <- DIDparams$biters + tname <- DIDparams$tname + tlist <- unique(data[,tname])[order(unique(data[,tname]))] + alp <- DIDparams$alp + panel <- DIDparams$panel + true_repeated_cross_sections <- DIDparams$true_repeated_cross_sections + + # just get n observations (for clustering below...) + ifelse(panel, + dta <- data[ data[,tname]==tlist[1], ], + dta <- data) + } + # Make sure inf.func is matrix because we need this for computing n below inf.func <- as.matrix(inf.func) @@ -59,22 +74,23 @@ mboot <- function(inf.func, DIDparams, pl = FALSE, cores = 1) { } if (length(clustervars) > 0) { - # check that cluster variable does not vary over time within unit - clust_tv <- aggregate(data[,clustervars], by=list(data[,idname]), function(rr) length(unique(rr))==1) - if (!all(clust_tv[,2])) { - stop("can't handle time-varying cluster variables") + if(!DIDparams$faster_mode){ + # check that cluster variable does not vary over time within unit + clust_tv <- aggregate(data[,clustervars], by=list(data[,idname]), function(rr) length(unique(rr))==1) + if (!all(clust_tv[,2])) { + stop("can't handle time-varying cluster variables") + } + ## # CHECK iF CLUSTERVAR is TIME-VARYING + ## clust_tv = base::suppressWarnings(stats::aggregate(data[,clustervars], list((data[,idname])), sd)) + ## clust_tv$x[is.na(clust_tv$x)] <- 0 + ## if(any(clust_tv[,2]>.Machine$double.eps)){ + ## stop("can't handle time-varying cluster variables") + ## } else if (!panel){ + ## # IF NOT, SUBSET DTA TO ONE VALUE PER ID + ## # Here we do not care about tname and yname as we do not use these + ## dta <- base::suppressWarnings(stats::aggregate(dta, list((data[,idname])), mean)[,-1]) + ## } } - ## # CHECK iF CLUSTERVAR is TIME-VARYING - ## clust_tv = base::suppressWarnings(stats::aggregate(data[,clustervars], list((data[,idname])), sd)) - ## clust_tv$x[is.na(clust_tv$x)] <- 0 - ## if(any(clust_tv[,2]>.Machine$double.eps)){ - ## stop("can't handle time-varying cluster variables") - ## } else if (!panel){ - ## # IF NOT, SUBSET DTA TO ONE VALUE PER ID - ## # Here we do not care about tname and yname as we do not use these - ## dta <- base::suppressWarnings(stats::aggregate(dta, list((data[,idname])), mean)[,-1]) - ## } - } # multiplier bootstrap diff --git a/R/pre_process_did.R b/R/pre_process_did.R index 5fddd1d..b7df809 100644 --- a/R/pre_process_did.R +++ b/R/pre_process_did.R @@ -29,6 +29,7 @@ pre_process_did <- function(yname, est_method = "dr", base_period = "varying", print_details = TRUE, + faster_mode = FALSE, pl = FALSE, cores = 1, call = NULL) { @@ -344,6 +345,7 @@ pre_process_did <- function(yname, clustervars=clustervars, cband=cband, print_details=print_details, + faster_mode=faster_mode, pl=pl, cores=cores, est_method=est_method, diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index 33c4be0..eb33987 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -438,6 +438,7 @@ get_did_tensors <- function(data, args){ # Gather all the arguments to return return(list(outcomes_tensor = outcomes_tensor, + data = data, time_invariant_data = invariant_data, cohort_counts = cohort_counts, period_counts = period_counts, @@ -467,7 +468,7 @@ pre_process_did2 <- function(yname, data, panel = TRUE, allow_unbalanced_panel, - control_group = "nevertreated", + control_group = c("nevertreated","notyettreated"), anticipation = 0, weightsname = NULL, alp = 0.05, @@ -478,6 +479,7 @@ pre_process_did2 <- function(yname, est_method = "dr", base_period = "varying", print_details = TRUE, + faster_mode=FALSE, pl = FALSE, cores = 1, call = NULL) { @@ -492,6 +494,9 @@ pre_process_did2 <- function(yname, args_names <- setdiff(names(formals()), "data") args <- mget(args_names, sys.frame(sys.nframe())) + # pick a control_group by default + args$control_group <- control_group[1] + # run error checking on arguments validate_args(args, data) diff --git a/man/DIDparams.Rd b/man/DIDparams.Rd index 9303d07..083a4f2 100644 --- a/man/DIDparams.Rd +++ b/man/DIDparams.Rd @@ -20,6 +20,7 @@ DIDparams( clustervars = NULL, cband = TRUE, print_details = TRUE, + faster_mode = FALSE, pl = FALSE, cores = 1, est_method = "dr", @@ -100,6 +101,11 @@ bands, \code{bstrap} must also be set to \code{TRUE}. The default is \item{print_details}{Whether or not to show details/progress of computations. Default is \code{FALSE}.} +\item{faster_mode}{This option enables a faster version of \code{did}, optimizing +computation time for large datasets by improving data management within the package. +The default is set to \code{FALSE}. While the difference is minimal for small datasets, +it is recommended for use with large datasets.} + \item{pl}{Whether or not to use parallel processing} \item{cores}{The number of cores to use for parallel processing} diff --git a/man/aggte.Rd b/man/aggte.Rd index ed9930b..3bdc4ce 100644 --- a/man/aggte.Rd +++ b/man/aggte.Rd @@ -88,7 +88,7 @@ and "calendar." Initial ATT(g,t) estimates from \code{\link[=att_gt]{att_gt()}} -\if{html}{\out{
}}\preformatted{data(mpdta) +\if{html}{\out{
", collapse = TRUE}">}}\preformatted{data(mpdta) set.seed(09152024) out <- att_gt(yname="lemp", tname="year", @@ -102,109 +102,22 @@ You can aggregate the ATT(g,t) in many ways. \strong{Overall ATT:} -\if{html}{\out{
}}\preformatted{aggte(out, type = "simple") -#> -#> Call: -#> aggte(MP = out, type = "simple") -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> -#> -#> ATT Std. Error [ 95\% Conf. Int.] -#> -0.04 0.0123 -0.064 -0.0159 * -#> -#> -#> --- -#> Signif. codes: `*' confidence band does not cover 0 -#> -#> Control Group: Never Treated, Anticipation Periods: 0 -#> Estimation Method: Doubly Robust +\if{html}{\out{
", collapse = TRUE}">}}\preformatted{aggte(out, type = "simple") }\if{html}{\out{
}} \strong{Dynamic ATT (Event-Study):} -\if{html}{\out{
}}\preformatted{aggte(out, type = "dynamic") -#> -#> Call: -#> aggte(MP = out, type = "dynamic") -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> -#> -#> Overall summary of ATT's based on event-study/dynamic aggregation: -#> ATT Std. Error [ 95\% Conf. Int.] -#> -0.0772 0.0209 -0.1181 -0.0363 * -#> -#> -#> Dynamic Effects: -#> Event time Estimate Std. Error [95\% Simult. Conf. Band] -#> -3 0.0305 0.0158 -0.0103 0.0713 -#> -2 -0.0006 0.0134 -0.0351 0.0340 -#> -1 -0.0245 0.0145 -0.0617 0.0128 -#> 0 -0.0199 0.0125 -0.0521 0.0122 -#> 1 -0.0510 0.0161 -0.0926 -0.0093 * -#> 2 -0.1373 0.0386 -0.2368 -0.0377 * -#> 3 -0.1008 0.0345 -0.1899 -0.0117 * -#> --- -#> Signif. codes: `*' confidence band does not cover 0 -#> -#> Control Group: Never Treated, Anticipation Periods: 0 -#> Estimation Method: Doubly Robust +\if{html}{\out{
", collapse = TRUE}">}}\preformatted{aggte(out, type = "dynamic") }\if{html}{\out{
}} \strong{ATT for each group:} -\if{html}{\out{
}}\preformatted{aggte(out, type = "group") -#> -#> Call: -#> aggte(MP = out, type = "group") -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> -#> -#> Overall summary of ATT's based on group/cohort aggregation: -#> ATT Std. Error [ 95\% Conf. Int.] -#> -0.031 0.0126 -0.0558 -0.0062 * -#> -#> -#> Group Effects: -#> Group Estimate Std. Error [95\% Simult. Conf. Band] -#> 2004 -0.0797 0.0281 -0.1407 -0.0188 * -#> 2006 -0.0229 0.0156 -0.0568 0.0110 -#> 2007 -0.0261 0.0172 -0.0634 0.0113 -#> --- -#> Signif. codes: `*' confidence band does not cover 0 -#> -#> Control Group: Never Treated, Anticipation Periods: 0 -#> Estimation Method: Doubly Robust +\if{html}{\out{
", collapse = TRUE}">}}\preformatted{aggte(out, type = "group") }\if{html}{\out{
}} \strong{ATT for each calendar year:} -\if{html}{\out{
}}\preformatted{aggte(out, type = "calendar") -#> -#> Call: -#> aggte(MP = out, type = "calendar") -#> -#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , -#> -#> -#> Overall summary of ATT's based on calendar time aggregation: -#> ATT Std. Error [ 95\% Conf. Int.] -#> -0.0417 0.0172 -0.0755 -0.0079 * -#> -#> -#> Time Effects: -#> Time Estimate Std. Error [95\% Simult. Conf. Band] -#> 2004 -0.0105 0.0251 -0.0701 0.0490 -#> 2005 -0.0704 0.0320 -0.1464 0.0056 -#> 2006 -0.0488 0.0213 -0.0994 0.0018 -#> 2007 -0.0371 0.0139 -0.0700 -0.0041 * -#> --- -#> Signif. codes: `*' confidence band does not cover 0 -#> -#> Control Group: Never Treated, Anticipation Periods: 0 -#> Estimation Method: Doubly Robust +\if{html}{\out{
", collapse = TRUE}">}}\preformatted{aggte(out, type = "calendar") }\if{html}{\out{
}} } diff --git a/man/att_gt.Rd b/man/att_gt.Rd index 9ecd2c1..a798d51 100644 --- a/man/att_gt.Rd +++ b/man/att_gt.Rd @@ -23,7 +23,7 @@ att_gt( clustervars = NULL, est_method = "dr", base_period = "varying", - faster_mode = FALSE, + faster_mode = TRUE, print_details = FALSE, pl = FALSE, cores = 1 @@ -196,18 +196,18 @@ summary(out1) #> #> Group-Time Average Treatment Effects: #> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] -#> 2004 2004 -0.0105 0.0246 -0.0755 0.0545 -#> 2004 2005 -0.0704 0.0346 -0.1621 0.0212 -#> 2004 2006 -0.1373 0.0397 -0.2422 -0.0323 * -#> 2004 2007 -0.1008 0.0366 -0.1976 -0.0040 * -#> 2006 2004 0.0065 0.0226 -0.0532 0.0663 -#> 2006 2005 -0.0028 0.0193 -0.0538 0.0483 -#> 2006 2006 -0.0046 0.0185 -0.0536 0.0444 -#> 2006 2007 -0.0412 0.0208 -0.0962 0.0137 -#> 2007 2004 0.0305 0.0146 -0.0081 0.0692 -#> 2007 2005 -0.0027 0.0162 -0.0457 0.0402 -#> 2007 2006 -0.0311 0.0182 -0.0793 0.0172 -#> 2007 2007 -0.0261 0.0174 -0.0722 0.0201 +#> 2004 2004 -0.0105 0.0258 -0.0809 0.0599 +#> 2004 2005 -0.0704 0.0341 -0.1635 0.0227 +#> 2004 2006 -0.1373 0.0384 -0.2423 -0.0322 * +#> 2004 2007 -0.1008 0.0354 -0.1976 -0.0040 * +#> 2006 2004 0.0065 0.0235 -0.0578 0.0708 +#> 2006 2005 -0.0028 0.0192 -0.0554 0.0499 +#> 2006 2006 -0.0046 0.0184 -0.0548 0.0456 +#> 2006 2007 -0.0412 0.0207 -0.0977 0.0153 +#> 2007 2004 0.0305 0.0161 -0.0135 0.0746 +#> 2007 2005 -0.0027 0.0157 -0.0456 0.0401 +#> 2007 2006 -0.0311 0.0184 -0.0815 0.0193 +#> 2007 2007 -0.0261 0.0176 -0.0741 0.0220 #> --- #> Signif. codes: `*' confidence band does not cover 0 #> @@ -233,23 +233,23 @@ summary(out2) #> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , #> #> Group-Time Average Treatment Effects: -#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] -#> 2004 2004 -0.0145 0.0249 -0.0817 0.0527 -#> 2004 2005 -0.0764 0.0307 -0.1592 0.0064 -#> 2004 2006 -0.1404 0.0370 -0.2403 -0.0406 * -#> 2004 2007 -0.1069 0.0331 -0.1962 -0.0176 * -#> 2006 2004 -0.0005 0.0215 -0.0583 0.0574 -#> 2006 2005 -0.0062 0.0181 -0.0549 0.0425 -#> 2006 2006 0.0010 0.0190 -0.0502 0.0521 -#> 2006 2007 -0.0413 0.0207 -0.0971 0.0145 -#> 2007 2004 0.0267 0.0143 -0.0117 0.0652 -#> 2007 2005 -0.0046 0.0153 -0.0459 0.0368 -#> 2007 2006 -0.0284 0.0197 -0.0816 0.0247 -#> 2007 2007 -0.0288 0.0157 -0.0712 0.0136 +#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] +#> 2004 2004 0.0318 0.0323 -0.0560 0.1197 +#> 2004 2005 -0.0213 0.0398 -0.1296 0.0870 +#> 2004 2006 -0.1081 0.0441 -0.2278 0.0117 +#> 2004 2007 -0.0699 0.0466 -0.1965 0.0566 +#> 2006 2004 0.0409 0.0303 -0.0414 0.1233 +#> 2006 2005 -0.0010 0.0246 -0.0678 0.0657 +#> 2006 2006 -0.0221 0.0232 -0.0851 0.0409 +#> 2006 2007 -0.0607 0.0266 -0.1328 0.0115 +#> 2007 2004 0.0448 0.0184 -0.0050 0.0947 +#> 2007 2005 -0.0027 0.0192 -0.0549 0.0494 +#> 2007 2006 -0.0388 0.0190 -0.0906 0.0129 +#> 2007 2007 -0.0272 0.0182 -0.0766 0.0221 #> --- #> Signif. codes: `*' confidence band does not cover 0 #> -#> P-value for pre-test of parallel trends assumption: 0.23267 +#> P-value for pre-test of parallel trends assumption: 0.05493 #> Control Group: Never Treated, Anticipation Periods: 0 #> Estimation Method: Doubly Robust }\if{html}{\out{
}} @@ -272,23 +272,23 @@ summary(out3) #> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , #> #> Group-Time Average Treatment Effects: -#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] -#> 2004 2004 -0.0212 0.0219 -0.0797 0.0374 -#> 2004 2005 -0.0816 0.0299 -0.1617 -0.0015 * -#> 2004 2006 -0.1382 0.0375 -0.2387 -0.0376 * -#> 2004 2007 -0.1069 0.0354 -0.2016 -0.0122 * -#> 2006 2004 -0.0075 0.0216 -0.0653 0.0504 -#> 2006 2005 -0.0046 0.0184 -0.0539 0.0448 -#> 2006 2006 0.0087 0.0167 -0.0362 0.0535 -#> 2006 2007 -0.0413 0.0192 -0.0927 0.0101 -#> 2007 2004 0.0269 0.0146 -0.0122 0.0661 -#> 2007 2005 -0.0042 0.0160 -0.0470 0.0386 -#> 2007 2006 -0.0284 0.0182 -0.0773 0.0204 -#> 2007 2007 -0.0288 0.0176 -0.0759 0.0184 +#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] +#> 2004 2004 0.0118 0.0351 -0.0867 0.1104 +#> 2004 2005 -0.0161 0.0428 -0.1362 0.1039 +#> 2004 2006 -0.1054 0.0475 -0.2385 0.0278 +#> 2004 2007 -0.0699 0.0453 -0.1969 0.0570 +#> 2006 2004 0.0262 0.0312 -0.0612 0.1136 +#> 2006 2005 0.0115 0.0238 -0.0552 0.0782 +#> 2006 2006 -0.0170 0.0225 -0.0802 0.0462 +#> 2006 2007 -0.0607 0.0277 -0.1383 0.0170 +#> 2007 2004 0.0445 0.0174 -0.0041 0.0932 +#> 2007 2005 -0.0015 0.0175 -0.0506 0.0476 +#> 2007 2006 -0.0388 0.0200 -0.0951 0.0174 +#> 2007 2007 -0.0272 0.0186 -0.0795 0.0250 #> --- #> Signif. codes: `*' confidence band does not cover 0 #> -#> P-value for pre-test of parallel trends assumption: 0.23326 +#> P-value for pre-test of parallel trends assumption: 0.02999 #> Control Group: Not Yet Treated, Anticipation Periods: 0 #> Estimation Method: Doubly Robust }\if{html}{\out{
}} diff --git a/man/pre_process_did.Rd b/man/pre_process_did.Rd index 08b9ddf..2d8a2c7 100644 --- a/man/pre_process_did.Rd +++ b/man/pre_process_did.Rd @@ -24,6 +24,7 @@ pre_process_did( est_method = "dr", base_period = "varying", print_details = TRUE, + faster_mode = FALSE, pl = FALSE, cores = 1, call = NULL @@ -154,6 +155,11 @@ extra estimate in an earlier period.} \item{print_details}{Whether or not to show details/progress of computations. Default is \code{FALSE}.} +\item{faster_mode}{This option enables a faster version of \code{did}, optimizing +computation time for large datasets by improving data management within the package. +The default is set to \code{FALSE}. While the difference is minimal for small datasets, +it is recommended for use with large datasets.} + \item{pl}{Whether or not to use parallel processing} \item{cores}{The number of cores to use for parallel processing} diff --git a/man/pre_process_did2.Rd b/man/pre_process_did2.Rd index 10fea7c..0d1d9cb 100644 --- a/man/pre_process_did2.Rd +++ b/man/pre_process_did2.Rd @@ -13,7 +13,7 @@ pre_process_did2( data, panel = TRUE, allow_unbalanced_panel, - control_group = "nevertreated", + control_group = c("nevertreated", "notyettreated"), anticipation = 0, weightsname = NULL, alp = 0.05, @@ -24,6 +24,7 @@ pre_process_did2( est_method = "dr", base_period = "varying", print_details = TRUE, + faster_mode = FALSE, pl = FALSE, cores = 1, call = NULL @@ -154,6 +155,11 @@ extra estimate in an earlier period.} \item{print_details}{Whether or not to show details/progress of computations. Default is \code{FALSE}.} +\item{faster_mode}{This option enables a faster version of \code{did}, optimizing +computation time for large datasets by improving data management within the package. +The default is set to \code{FALSE}. While the difference is minimal for small datasets, +it is recommended for use with large datasets.} + \item{pl}{Whether or not to use parallel processing} \item{cores}{The number of cores to use for parallel processing} From 5ecc54ca77b2f576285d7216d48c889ae1d24ca0 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Tue, 15 Oct 2024 14:04:26 -0400 Subject: [PATCH 28/50] fixing aggregation under faster_mode --- R/DIDparams.R | 2 +- R/att_gt.R | 2 +- R/compute.aggte.R | 11 +++--- R/mboot.R | 40 +++++++------------ man/aggte.Rd | 97 ++++++++++++++++++++++++++++++++++++++++++++--- 5 files changed, 113 insertions(+), 39 deletions(-) diff --git a/R/DIDparams.R b/R/DIDparams.R index 20ad7ec..7aafd3a 100644 --- a/R/DIDparams.R +++ b/R/DIDparams.R @@ -60,7 +60,7 @@ DIDparams <- function(yname, clustervars=clustervars, cband=cband, print_details=print_details, - faster_mode=faster_model, + faster_mode=faster_mode, pl=pl, cores=cores, est_method=est_method, diff --git a/R/att_gt.R b/R/att_gt.R index bb60ab8..e9a54ba 100644 --- a/R/att_gt.R +++ b/R/att_gt.R @@ -185,7 +185,7 @@ att_gt <- function(yname, clustervars=NULL, est_method="dr", base_period="varying", - faster_mode=TRUE, + faster_mode=FALSE, print_details=FALSE, pl=FALSE, cores=1) { diff --git a/R/compute.aggte.R b/R/compute.aggte.R index b0810c8..785392c 100644 --- a/R/compute.aggte.R +++ b/R/compute.aggte.R @@ -57,7 +57,10 @@ compute.aggte <- function(MP, cband <- dp$cband } if(dp$faster_mode){ - data <- as.data.frame(dp$data) + dt <- dp$data + dt[get(gname) == Inf, (gname) := 0] # going back to the old way + data <- as.data.frame(dt) + rm(dt) tlist <- dp$time_periods glist <- dp$treated_groups } else { @@ -66,8 +69,6 @@ compute.aggte <- function(MP, glist <- dp$glist } - - # overwrite MP objects (so we can actually compute bootstrap) MP$DIDparams$clustervars <- clustervars MP$DIDparams$bstrap <- bstrap @@ -120,8 +121,8 @@ compute.aggte <- function(MP, # dta <- data # ) if(panel){ - # data from first period # TODO; THIS HAS TO BE OPTIMIZED WITH faster_mode enabled. + # data from first period dta <- data[data[,tname]==tlist[1], ] }else { #aggregate data @@ -159,7 +160,7 @@ compute.aggte <- function(MP, maxT <- max(t) # Set the weights - weights.ind <- dta$.w + ifelse(dp$faster_mode, weights.ind <- as.numeric(dp$weights_vector), weights.ind <- dta$.w) # we can work in overall probabilities because conditioning will cancel out # cause it shows up in numerator and denominator diff --git a/R/mboot.R b/R/mboot.R index 6ebf42a..dc9f0bd 100644 --- a/R/mboot.R +++ b/R/mboot.R @@ -22,33 +22,19 @@ mboot <- function(inf.func, DIDparams, pl = FALSE, cores = 1) { # setup needed variables according to faster_mode; This returns different type of objects # depending on whether we are in faster_mode or not that has to be handled in the code below - if (DIDparams$faster_mode) { - data <- DIDparams$time_invariant_data - dta <- data - idname <- DIDparams$idname - clustervars <- DIDparams$clustervars - biters <- DIDparams$biters - tname <- DIDparams$tname - tlist <- DIDparams$time_periods - alp <- DIDparams$alp - panel <- DIDparams$panel - true_repeated_cross_sections <- DIDparams$true_repeated_cross_sections - } else { - data <- as.data.frame(DIDparams$data) - idname <- DIDparams$idname - clustervars <- DIDparams$clustervars - biters <- DIDparams$biters - tname <- DIDparams$tname - tlist <- unique(data[,tname])[order(unique(data[,tname]))] - alp <- DIDparams$alp - panel <- DIDparams$panel - true_repeated_cross_sections <- DIDparams$true_repeated_cross_sections - - # just get n observations (for clustering below...) - ifelse(panel, - dta <- data[ data[,tname]==tlist[1], ], - dta <- data) - } + idname <- DIDparams$idname + clustervars <- DIDparams$clustervars + biters <- DIDparams$biters + tname <- DIDparams$tname + alp <- DIDparams$alp + panel <- DIDparams$panel + true_repeated_cross_sections <- DIDparams$true_repeated_cross_sections + data <- as.data.frame(DIDparams$data) + tlist <- ifelse(DIDparams$faster_mode, DIDparams$time_periods, unique(data[,tname])[order(unique(data[,tname]))]) + # just get n observations (for clustering below...) + ifelse(panel, + dta <- data[ data[,tname]==tlist[1], ], + dta <- data) # Make sure inf.func is matrix because we need this for computing n below inf.func <- as.matrix(inf.func) diff --git a/man/aggte.Rd b/man/aggte.Rd index 3bdc4ce..1c00b2f 100644 --- a/man/aggte.Rd +++ b/man/aggte.Rd @@ -88,7 +88,7 @@ and "calendar." Initial ATT(g,t) estimates from \code{\link[=att_gt]{att_gt()}} -\if{html}{\out{
", collapse = TRUE}">}}\preformatted{data(mpdta) +\if{html}{\out{
}}\preformatted{data(mpdta) set.seed(09152024) out <- att_gt(yname="lemp", tname="year", @@ -102,22 +102,109 @@ You can aggregate the ATT(g,t) in many ways. \strong{Overall ATT:} -\if{html}{\out{
", collapse = TRUE}">}}\preformatted{aggte(out, type = "simple") +\if{html}{\out{
}}\preformatted{aggte(out, type = "simple") +#> +#> Call: +#> aggte(MP = out, type = "simple") +#> +#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , +#> +#> +#> ATT Std. Error [ 95\% Conf. Int.] +#> -0.04 0.0119 -0.0633 -0.0166 * +#> +#> +#> --- +#> Signif. codes: `*' confidence band does not cover 0 +#> +#> Control Group: Never Treated, Anticipation Periods: 0 +#> Estimation Method: Doubly Robust }\if{html}{\out{
}} \strong{Dynamic ATT (Event-Study):} -\if{html}{\out{
", collapse = TRUE}">}}\preformatted{aggte(out, type = "dynamic") +\if{html}{\out{
}}\preformatted{aggte(out, type = "dynamic") +#> +#> Call: +#> aggte(MP = out, type = "dynamic") +#> +#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , +#> +#> +#> Overall summary of ATT's based on event-study/dynamic aggregation: +#> ATT Std. Error [ 95\% Conf. Int.] +#> -0.0772 0.0208 -0.118 -0.0365 * +#> +#> +#> Dynamic Effects: +#> Event time Estimate Std. Error [95\% Simult. Conf. Band] +#> -3 0.0305 0.0154 -0.0101 0.0711 +#> -2 -0.0006 0.0129 -0.0346 0.0334 +#> -1 -0.0245 0.0145 -0.0628 0.0139 +#> 0 -0.0199 0.0119 -0.0513 0.0114 +#> 1 -0.0510 0.0160 -0.0934 -0.0085 * +#> 2 -0.1373 0.0393 -0.2412 -0.0333 * +#> 3 -0.1008 0.0356 -0.1949 -0.0067 * +#> --- +#> Signif. codes: `*' confidence band does not cover 0 +#> +#> Control Group: Never Treated, Anticipation Periods: 0 +#> Estimation Method: Doubly Robust }\if{html}{\out{
}} \strong{ATT for each group:} -\if{html}{\out{
", collapse = TRUE}">}}\preformatted{aggte(out, type = "group") +\if{html}{\out{
}}\preformatted{aggte(out, type = "group") +#> +#> Call: +#> aggte(MP = out, type = "group") +#> +#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , +#> +#> +#> Overall summary of ATT's based on group/cohort aggregation: +#> ATT Std. Error [ 95\% Conf. Int.] +#> -0.031 0.0126 -0.0557 -0.0064 * +#> +#> +#> Group Effects: +#> Group Estimate Std. Error [95\% Simult. Conf. Band] +#> 2004 -0.0797 0.0300 -0.1445 -0.0150 * +#> 2006 -0.0229 0.0163 -0.0582 0.0123 +#> 2007 -0.0261 0.0167 -0.0622 0.0101 +#> --- +#> Signif. codes: `*' confidence band does not cover 0 +#> +#> Control Group: Never Treated, Anticipation Periods: 0 +#> Estimation Method: Doubly Robust }\if{html}{\out{
}} \strong{ATT for each calendar year:} -\if{html}{\out{
", collapse = TRUE}">}}\preformatted{aggte(out, type = "calendar") +\if{html}{\out{
}}\preformatted{aggte(out, type = "calendar") +#> +#> Call: +#> aggte(MP = out, type = "calendar") +#> +#> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , +#> +#> +#> Overall summary of ATT's based on calendar time aggregation: +#> ATT Std. Error [ 95\% Conf. Int.] +#> -0.0417 0.0175 -0.0759 -0.0075 * +#> +#> +#> Time Effects: +#> Time Estimate Std. Error [95\% Simult. Conf. Band] +#> 2004 -0.0105 0.0242 -0.0685 0.0475 +#> 2005 -0.0704 0.0319 -0.1467 0.0059 +#> 2006 -0.0488 0.0206 -0.0980 0.0004 +#> 2007 -0.0371 0.0133 -0.0689 -0.0052 * +#> --- +#> Signif. codes: `*' confidence band does not cover 0 +#> +#> Control Group: Never Treated, Anticipation Periods: 0 +#> Estimation Method: Doubly Robust }\if{html}{\out{
}} } From fe2670b9a6bc1fa578b1c34c5e97e9bcfa27d952 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Tue, 15 Oct 2024 22:43:36 -0400 Subject: [PATCH 29/50] solving not yet treated comparison group unit test --- R/att_gt.R | 2 +- R/compute.att_gt2.R | 3 ++ R/pre_process_did2.R | 2 +- man/att_gt.Rd | 56 ++++++++++++++++++------------------ tests/testthat/test-att_gt.R | 4 +-- 5 files changed, 35 insertions(+), 32 deletions(-) diff --git a/R/att_gt.R b/R/att_gt.R index e9a54ba..bb60ab8 100644 --- a/R/att_gt.R +++ b/R/att_gt.R @@ -185,7 +185,7 @@ att_gt <- function(yname, clustervars=NULL, est_method="dr", base_period="varying", - faster_mode=FALSE, + faster_mode=TRUE, print_details=FALSE, pl=FALSE, cores=1) { diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index 7322c38..b1228b6 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -65,6 +65,9 @@ get_did_cohort_index <- function(group, time, pret, dp2){ col_names <- names(dp2$crosstable_counts)[-1] # Exclude 'T' column min_idx <- match(as.character(min_control_group), col_names) max_idx <- match(as.character(max_control_group), col_names) + # correction in case there is not never-treated units! Pick the very last time period... + ifelse(is.na(min_idx), min_idx <- match(tail(col_names,1), col_names), min_idx <- min_idx) + ifelse(is.na(max_idx), max_idx <- match(tail(col_names,1), col_names), max_idx <- max_idx) # Start the loop for (i in c(pret, time)) { diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index eb33987..a3ae6b8 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -423,7 +423,7 @@ get_did_tensors <- function(data, args){ if(args$xformla == ~1){ covariates <- rep(1, args$id_count) } else { - covariates <- as.data.table(model.frame(args$xformla, data = invariant_data, na.action = na.pass)) + covariates <- as.data.table(model.matrix(args$xformla, data = invariant_data, na.action = na.pass)) } # Get the cluster variable only diff --git a/man/att_gt.Rd b/man/att_gt.Rd index a798d51..a6e954e 100644 --- a/man/att_gt.Rd +++ b/man/att_gt.Rd @@ -233,23 +233,23 @@ summary(out2) #> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , #> #> Group-Time Average Treatment Effects: -#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] -#> 2004 2004 0.0318 0.0323 -0.0560 0.1197 -#> 2004 2005 -0.0213 0.0398 -0.1296 0.0870 -#> 2004 2006 -0.1081 0.0441 -0.2278 0.0117 -#> 2004 2007 -0.0699 0.0466 -0.1965 0.0566 -#> 2006 2004 0.0409 0.0303 -0.0414 0.1233 -#> 2006 2005 -0.0010 0.0246 -0.0678 0.0657 -#> 2006 2006 -0.0221 0.0232 -0.0851 0.0409 -#> 2006 2007 -0.0607 0.0266 -0.1328 0.0115 -#> 2007 2004 0.0448 0.0184 -0.0050 0.0947 -#> 2007 2005 -0.0027 0.0192 -0.0549 0.0494 -#> 2007 2006 -0.0388 0.0190 -0.0906 0.0129 -#> 2007 2007 -0.0272 0.0182 -0.0766 0.0221 +#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] +#> 2004 2004 -0.0145 0.0222 -0.0737 0.0446 +#> 2004 2005 -0.0764 0.0303 -0.1570 0.0041 +#> 2004 2006 -0.1404 0.0382 -0.2421 -0.0388 * +#> 2004 2007 -0.1069 0.0358 -0.2021 -0.0117 * +#> 2006 2004 -0.0005 0.0231 -0.0618 0.0609 +#> 2006 2005 -0.0062 0.0188 -0.0561 0.0437 +#> 2006 2006 0.0010 0.0204 -0.0534 0.0553 +#> 2006 2007 -0.0413 0.0210 -0.0971 0.0145 +#> 2007 2004 0.0267 0.0140 -0.0104 0.0639 +#> 2007 2005 -0.0046 0.0170 -0.0498 0.0407 +#> 2007 2006 -0.0284 0.0187 -0.0782 0.0213 +#> 2007 2007 -0.0288 0.0161 -0.0715 0.0140 #> --- #> Signif. codes: `*' confidence band does not cover 0 #> -#> P-value for pre-test of parallel trends assumption: 0.05493 +#> P-value for pre-test of parallel trends assumption: 0.23267 #> Control Group: Never Treated, Anticipation Periods: 0 #> Estimation Method: Doubly Robust }\if{html}{\out{
}} @@ -272,23 +272,23 @@ summary(out3) #> Reference: Callaway, Brantly and Pedro H.C. Sant'Anna. "Difference-in-Differences with Multiple Time Periods." Journal of Econometrics, Vol. 225, No. 2, pp. 200-230, 2021. , #> #> Group-Time Average Treatment Effects: -#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] -#> 2004 2004 0.0118 0.0351 -0.0867 0.1104 -#> 2004 2005 -0.0161 0.0428 -0.1362 0.1039 -#> 2004 2006 -0.1054 0.0475 -0.2385 0.0278 -#> 2004 2007 -0.0699 0.0453 -0.1969 0.0570 -#> 2006 2004 0.0262 0.0312 -0.0612 0.1136 -#> 2006 2005 0.0115 0.0238 -0.0552 0.0782 -#> 2006 2006 -0.0170 0.0225 -0.0802 0.0462 -#> 2006 2007 -0.0607 0.0277 -0.1383 0.0170 -#> 2007 2004 0.0445 0.0174 -0.0041 0.0932 -#> 2007 2005 -0.0015 0.0175 -0.0506 0.0476 -#> 2007 2006 -0.0388 0.0200 -0.0951 0.0174 -#> 2007 2007 -0.0272 0.0186 -0.0795 0.0250 +#> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] +#> 2004 2004 -0.0212 0.0217 -0.0788 0.0365 +#> 2004 2005 -0.0816 0.0324 -0.1676 0.0044 +#> 2004 2006 -0.1382 0.0368 -0.2361 -0.0403 * +#> 2004 2007 -0.1069 0.0344 -0.1984 -0.0154 * +#> 2006 2004 -0.0075 0.0233 -0.0693 0.0544 +#> 2006 2005 -0.0046 0.0184 -0.0533 0.0442 +#> 2006 2006 0.0087 0.0182 -0.0397 0.0570 +#> 2006 2007 -0.0413 0.0205 -0.0956 0.0130 +#> 2007 2004 0.0269 0.0136 -0.0091 0.0630 +#> 2007 2005 -0.0042 0.0153 -0.0448 0.0364 +#> 2007 2006 -0.0284 0.0191 -0.0792 0.0223 +#> 2007 2007 -0.0288 0.0167 -0.0732 0.0157 #> --- #> Signif. codes: `*' confidence band does not cover 0 #> -#> P-value for pre-test of parallel trends assumption: 0.02999 +#> P-value for pre-test of parallel trends assumption: 0.23326 #> Control Group: Not Yet Treated, Anticipation Periods: 0 #> Estimation Method: Doubly Robust }\if{html}{\out{
}} diff --git a/tests/testthat/test-att_gt.R b/tests/testthat/test-att_gt.R index e9a6128..c14c32d 100644 --- a/tests/testthat/test-att_gt.R +++ b/tests/testthat/test-att_gt.R @@ -8,7 +8,7 @@ library(BMisc) #----------------------------------------------------------------------------- # test each estimation method with panel data # Expected results: treatment effects = 1, p-value for pre-test -# uniformly distributed, ipw model is incorectly specified here +# uniformly distributed, ipw model is incorrectly specified here #----------------------------------------------------------------------------- test_that("att_gt works w/o dynamics, time effects, or group effects", { set.seed(09142024) @@ -206,7 +206,7 @@ test_that("not yet treated comparison group", { # dr res <- att_gt(yname="Y", xformla=~X, data=data, tname="period", control_group="notyettreated", - gname="G", est_method="dr", panel=FALSE) + gname="G", est_method="dr", panel=FALSE, print_details = TRUE) expect_equal(res$att[1], 1, tol=.5) From ea166ea6f883da35f3c313e1079a7602fcb60535 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Wed, 16 Oct 2024 01:00:31 -0400 Subject: [PATCH 30/50] fixing some units treated in fisrt period unit test --- R/compute.att_gt2.R | 11 ++++++----- R/pre_process_did2.R | 2 +- tests/testthat/test-att_gt.R | 26 +++++++++++++------------- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index b1228b6..3fe7451 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -77,7 +77,7 @@ get_did_cohort_index <- function(group, time, pret, dp2){ # ------------------------------------------------ # Identify the index_time for 'i' based on period_counts and compute the starting point - index_time <- which(dp2$period_counts[, period] == i) + index_time <- which(dp2$period_counts[, period] == dp2$reverse_mapping[i]) start_time <- ifelse(index_time == 1, 1, dp2$period_counts[1:(index_time - 1), sum(period_size)] + 1) # Extract the relevant row for current time period 'i' only once @@ -100,12 +100,12 @@ get_did_cohort_index <- function(group, time, pret, dp2){ # ------------------------------------------------ # Calculate correction_index based on the current g and the relevant row for the current time period - index_cohort <- which(dp2$cohort_counts[, cohort] == group) + index_cohort <- which(dp2$cohort_counts[, cohort] == dp2$reverse_mapping[group]) correction_index <- ifelse(index_cohort == 1, 0, sum(relevant_g_row[, col_names[1:(index_cohort - 1)], with = FALSE], na.rm = TRUE)) # Compute start and end points for treated units start_treat <- start_time + correction_index - g_size <- relevant_g_row[, get(as.character(group))] + g_size <- relevant_g_row[, get(as.character(dp2$reverse_mapping[group]))] end_treat <- start_treat + g_size - 1 # Impute treated units with 1 @@ -311,7 +311,7 @@ run_att_gt_estimation <- function(gt, dp2){ cohort_data <- data.table(did_cohort_index, dp2$outcomes_tensor[[t]], dp2$outcomes_tensor[[pret]], dp2$weights_vector) names(cohort_data) <- c("D", "y1", "y0", "i.weights") } else { - dp2$time_invariant_data[, post := fifelse(get(dp2$tname) == t, 1, 0)] + dp2$time_invariant_data[, post := fifelse(get(dp2$tname) == dp2$reverse_mapping[t], 1, 0)] cohort_data <- data.table(did_cohort_index, dp2$time_invariant_data[[dp2$yname]], dp2$time_invariant_data$post, dp2$time_invariant_data$weights) names(cohort_data) <- c("D", "y", "post", "i.weights") } @@ -320,7 +320,7 @@ run_att_gt_estimation <- function(gt, dp2){ # run estimation did_result <- tryCatch(run_DRDID(cohort_data, covariates, dp2), error = function(e) { - warning("\n Error in computing internal 2x2 DiD for (g,t) = (",g,t,"):", e$message) + warning("\n Error in computing internal 2x2 DiD for (g,t) = (",g,",",t,"):", e$message) return(NULL) }) return(did_result) @@ -353,6 +353,7 @@ compute.att_gt2 <- function(dp2) { time_mapping <- setNames(seq_along(time_periods), time_periods) # Create a reverse mapping from standardized values back to the original reverse_mapping <- setNames(as.numeric(names(time_mapping)), time_mapping) + dp2$reverse_mapping <- reverse_mapping # Convert both time_periods and treated_group using the mapping time_periods <- time_mapping[as.character(time_periods)] treated_groups <- time_mapping[as.character(treated_groups)] diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index a3ae6b8..211d9d5 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -177,7 +177,7 @@ did_standarization <- function(data, args){ data[is.na(treated_first_period), treated_first_period := FALSE] # count the number of units treated in the first period - nfirstperiod <- ifelse(args$panel, uniqueN(data[treated_first_period == TRUE, get(args$idname)]), nrow(data[data$treated_firstperiod == TRUE])) + nfirstperiod <- ifelse(args$panel, uniqueN(data[treated_first_period == TRUE, get(args$idname)]), nrow(data[treated_first_period == TRUE])) # handle units treated in the first period if (nfirstperiod > 0) { diff --git a/tests/testthat/test-att_gt.R b/tests/testthat/test-att_gt.R index c14c32d..955a659 100644 --- a/tests/testthat/test-att_gt.R +++ b/tests/testthat/test-att_gt.R @@ -206,7 +206,7 @@ test_that("not yet treated comparison group", { # dr res <- att_gt(yname="Y", xformla=~X, data=data, tname="period", control_group="notyettreated", - gname="G", est_method="dr", panel=FALSE, print_details = TRUE) + gname="G", est_method="dr", panel=FALSE) expect_equal(res$att[1], 1, tol=.5) @@ -671,7 +671,7 @@ test_that("faster mode enabled for panel data", { # check if results are equal. expect_equal(out$att[1], out2$att[1]) - expect_equal(out$se, as.numeric(out2$se)) + expect_equal(out$se, out2$se) # -------------------------------------------------------------------------------------------------------- out <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", xformla = ~1, data = data, bstrap = FALSE, cband = FALSE, base_period = "varying", @@ -682,7 +682,7 @@ test_that("faster mode enabled for panel data", { # check if results are equal. expect_equal(out$att[1], out2$att[1]) - expect_equal(out$se, as.numeric(out2$se)) + expect_equal(out$se, out2$se) # -------------------------------------------------------------------------------------------------------- out <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", @@ -694,7 +694,7 @@ test_that("faster mode enabled for panel data", { # check if results are equal. expect_equal(out$att[1], out2$att[1]) - expect_equal(out$se, as.numeric(out2$se)) + expect_equal(out$se, out2$se) # -------------------------------------------------------------------------------------------------------- out <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", @@ -706,7 +706,7 @@ test_that("faster mode enabled for panel data", { # check if results are equal. expect_equal(out$att[1], out2$att[1]) - expect_equal(out$se, as.numeric(out2$se)) + expect_equal(out$se, out2$se) }) @@ -721,47 +721,47 @@ test_that("faster model enabled for repeated cross sectional data", { bstrap = FALSE, cband = FALSE, base_period = "universal", control_group = "nevertreated", est_method = "dr") out_rcs2 <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, - bstrap = FALSE, cband = FALSE, print_details = TRUE, base_period = "universal", control_group = "nevertreated", + bstrap = FALSE, cband = FALSE, base_period = "universal", control_group = "nevertreated", est_method = "dr", faster_mode = TRUE ) # check if results are equal. expect_equal(out_rcs$att[1], out_rcs2$att[1]) - expect_equal(out_rcs$se, as.numeric(out_rcs2$se)) + expect_equal(out_rcs$se, out_rcs2$se) # ---------------------------------------------------------------------------------------------------------------------------------- out_rcs <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, bstrap = FALSE, cband = FALSE, base_period = "varying", control_group = "nevertreated", est_method = "dr") out_rcs2 <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, - bstrap = FALSE, cband = FALSE, print_details = TRUE, base_period = "varying", control_group = "nevertreated", + bstrap = FALSE, cband = FALSE, base_period = "varying", control_group = "nevertreated", est_method = "dr", faster_mode = TRUE ) # check if results are equal. expect_equal(out_rcs$att[1], out_rcs2$att[1]) - expect_equal(out_rcs$se, as.numeric(out_rcs2$se)) + expect_equal(out_rcs$se, out_rcs2$se) # ---------------------------------------------------------------------------------------------------------------------------------- out_rcs <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, bstrap = FALSE, cband = FALSE, base_period = "varying", control_group = "notyettreated", est_method = "dr") out_rcs2 <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, - bstrap = FALSE, cband = FALSE, print_details = TRUE, base_period = "varying", control_group = "notyettreated", + bstrap = FALSE, cband = FALSE, base_period = "varying", control_group = "notyettreated", est_method = "dr", faster_mode = TRUE ) # check if results are equal. expect_equal(out_rcs$att[1], out_rcs2$att[1]) - expect_equal(out_rcs$se, as.numeric(out_rcs2$se)) + expect_equal(out_rcs$se, out_rcs2$se) # ---------------------------------------------------------------------------------------------------------------------------------- out_rcs <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, bstrap = FALSE, cband = FALSE, base_period = "universal", control_group = "notyettreated", est_method = "dr") out_rcs2 <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, - bstrap = FALSE, cband = FALSE, print_details = TRUE, base_period = "universal", control_group = "notyettreated", + bstrap = FALSE, cband = FALSE, base_period = "universal", control_group = "notyettreated", est_method = "dr", faster_mode = TRUE ) # check if results are equal. expect_equal(out_rcs$att[1], out_rcs2$att[1]) - expect_equal(out_rcs$se, as.numeric(out_rcs2$se)) + expect_equal(out_rcs$se, out_rcs2$se) }) From 3faed16e289de57c81cbaeae21bd63182a953698 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Thu, 17 Oct 2024 00:09:24 -0400 Subject: [PATCH 31/50] fixing small comparison group unit test --- R/att_gt.R | 18 +++++++++++++++++- R/compute.att_gt2.R | 2 +- R/pre_process_did2.R | 6 +++--- tests/testthat/test-att_gt.R | 20 +++++++++++++++++--- 4 files changed, 38 insertions(+), 8 deletions(-) diff --git a/R/att_gt.R b/R/att_gt.R index bb60ab8..52a2adc 100644 --- a/R/att_gt.R +++ b/R/att_gt.R @@ -260,7 +260,23 @@ att_gt <- function(yname, inffunc <- results$inffunc # process results - attgt.results <- process_attgt(attgt.list) + # attgt.results <- process_attgt(attgt.list) + tryCatch( + { + # Attempt to run this line for process results + attgt.results <- process_attgt(attgt.list) + }, + error = function(e) { + # Handle the error + if (faster_mode) { + # If faster_mode is TRUE, send this stop message + stop("An unexpected error occurred, normally associated with a singular matrix due to not enough control units. Try changing faster_mode=FALSE.") + } else { + # If faster_mode is FALSE, send this stop message + stop("An unexpected error occurred, normally associated with a singular matrix due to not enough control units.") + } + } + ) group <- attgt.results$group att <- attgt.results$att tt <- attgt.results$tt diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index 3fe7451..4a82d8c 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -320,7 +320,7 @@ run_att_gt_estimation <- function(gt, dp2){ # run estimation did_result <- tryCatch(run_DRDID(cohort_data, covariates, dp2), error = function(e) { - warning("\n Error in computing internal 2x2 DiD for (g,t) = (",g,",",t,"):", e$message) + warning("\n Error in computing internal 2x2 DiD for (g,t) = (",g,",",t,"): ", e$message) return(NULL) }) return(did_result) diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index 211d9d5..9dcb0bd 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -324,12 +324,12 @@ did_standarization <- function(data, args){ # Warn if some groups are small if (nrow(gsize) > 0) { - gpaste <- paste(gsize[[args$gname]], collapse = ",") + gpaste <- paste(gsize[,1], collapse = ",") warning(paste0("Be aware that there are some small groups in your dataset.\n Check groups: ", gpaste, ".")) # Check if the never treated group is too small - if (Inf %in% gsize[[args$gname]] & control_group == "nevertreated") { - stop("Never treated group is too small, try setting control_group=\"notyettreated\"") + if ((Inf %in% gsize[,1]) & (args$control_group == "nevertreated")) { + stop("never treated group is too small, try setting control_group=\"notyettreated\"") } } diff --git a/tests/testthat/test-att_gt.R b/tests/testthat/test-att_gt.R index 955a659..4c8218a 100644 --- a/tests/testthat/test-att_gt.R +++ b/tests/testthat/test-att_gt.R @@ -533,18 +533,32 @@ test_that("small comparison group", { expect_error(expect_warning(res_ipw <- att_gt(yname="Y", xformla=~X, data=data, tname="period", idname="id", gname="G", est_method="ipw"), "small groups"), "never treated group is too small") + #----------------------------------------------------------------------------- + # not-yet-treated comparison group with faster_mode = TRUE + #----------------------------------------------------------------------------- + + # dr + expect_error(expect_warning(res_dr <- att_gt(yname="Y", xformla=~X, data=data, tname="period", idname="id", control_group="notyettreated", + gname="G", est_method="dr", faster_mode = TRUE), "matrix is singular"), "faster_mode=FALSE") + # reg + expect_error(expect_warning(res_reg <- att_gt(yname="Y", xformla=~X, data=data, tname="period", idname="id", control_group="notyettreated", + gname="G", est_method="reg", faster_mode = TRUE), "matrix is singular"), "faster_mode=FALSE") + # ipw + expect_warning(res_ipw <- att_gt(yname="Y", xformla=~X, data=data, tname="period", idname="id", control_group="notyettreated", + gname="G", est_method="ipw", faster_mode = TRUE), "small groups") + #----------------------------------------------------------------------------- # not-yet-treated comparison group #----------------------------------------------------------------------------- # dr expect_warning(res_dr <- att_gt(yname="Y", xformla=~X, data=data, tname="period", idname="id", control_group="notyettreated", - gname="G", est_method="dr"), "small group") + gname="G", est_method="dr", faster_mode = FALSE), "small group") # reg expect_warning(res_reg <- att_gt(yname="Y", xformla=~X, data=data, tname="period", idname="id", control_group="notyettreated", - gname="G", est_method="reg"), "Not enough control units") + gname="G", est_method="reg", faster_mode = FALSE), "Not enough control units") # ipw expect_warning(res_ipw <- att_gt(yname="Y", xformla=~X, data=data, tname="period", idname="id", control_group="notyettreated", - gname="G", est_method="ipw"), "overlap condition violated") + gname="G", est_method="ipw", faster_mode = FALSE), "overlap condition violated") # code should still work for some (g,t)'s expect_equal(res_dr$att[1], 1, tol=.5) From 4837bf232717751bdba6b752917a948eee3fee51 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Fri, 18 Oct 2024 00:49:57 -0400 Subject: [PATCH 32/50] fixing bug where g is a column in data --- R/compute.att_gt.R | 4 ++-- R/imports.R | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/R/compute.att_gt.R b/R/compute.att_gt.R index b7380ec..ca4986e 100644 --- a/R/compute.att_gt.R +++ b/R/compute.att_gt.R @@ -74,7 +74,7 @@ compute.att_gt <- function(dp) { for (g in 1:nG) { # Set up .G once - data[, .G := as.integer(get(gname) == glist[g]), .SDcols = gname] + data[, .G := as.numeric(get(gname) == glist[[..g]]), .SDcols = gname] # loop over time periods for (t in 1:tlist.length) { @@ -97,7 +97,7 @@ compute.att_gt <- function(dp) { if(!nevertreated) { data[, .C := as.integer((get(gname) == 0) | ((get(gname) > (tlist[max(t, pret) + tfac] + anticipation)) & - (get(gname) != glist[g])))] + (get(gname) != glist[[..g]])))] } diff --git a/R/imports.R b/R/imports.R index a382770..d94dd7a 100644 --- a/R/imports.R +++ b/R/imports.R @@ -19,4 +19,4 @@ NULL utils::globalVariables(c('.','.G','.y', 'asif_never_treated', 'treated_first_period', 'count', 'constant', '.rowid', 'V1', 'control_group', 'cohort', 'cohort_size', 'period', 'period_size', 'y1', 'y0', - 'i.weights', 'y', 'cluster', 'id', '..cols_to_keep')) + 'i.weights', 'y', 'cluster', 'id', '..cols_to_keep', '..g')) From eb8e6475cb0cd39fe94e092a492ca0e08a5884b6 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Fri, 18 Oct 2024 00:50:31 -0400 Subject: [PATCH 33/50] fixing anticipation unit test --- R/compute.att_gt2.R | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index 4a82d8c..854d4bb 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -36,10 +36,11 @@ get_did_cohort_index <- function(group, time, pret, dp2){ treated_groups <- dp2$treated_groups time_periods <- dp2$time_periods # based on control_group option - min_control_group_index <- ifelse(dp2$control_group == "notyettreated", max(time, pret) + dp2$anticipation + 1, Inf) - min_control_group <- ifelse(min_control_group_index == Inf | min_control_group_index > dp2$time_periods_count, - Inf, - time_periods[min_control_group_index]) + # min_control_group_index <- ifelse(dp2$control_group == "notyettreated", max(time, pret) + dp2$anticipation + 1, Inf) + # min_control_group <- ifelse(min_control_group_index == Inf | min_control_group_index > dp2$time_periods_count, + # Inf, + # time_periods[min_control_group_index]) + min_control_group <- ifelse(dp2$control_group == "notyettreated", dp2$reverse_mapping[max(time, pret) +1] + dp2$anticipation, Inf) max_control_group <- Inf # always include the never treated units as the maximum. @@ -48,10 +49,15 @@ get_did_cohort_index <- function(group, time, pret, dp2){ if(dp2$panel){ + # adding some correction in control group to avoid weird behavior when the control group is not yet treated + #ifelse(!min_control_group %in% dp2$cohort_counts$cohort, min_control_group <- dp2$cohort_count[cohort == min_control_group_index, cohort], min_control_group <- min_control_group) + ifelse(!max_control_group %in% dp2$cohort_counts$cohort, max_control_group <- tail(dp2$cohort_count$cohort,1), max_control_group <- max_control_group) + # getting the index to get units who will participate in the estimation for the (g,t) cell. start_control <- dp2$cohort_counts[cohort < min_control_group, sum(cohort_size)]+1 end_control <- dp2$cohort_counts[cohort <= max_control_group, sum(cohort_size)] - index <- which(dp2$cohort_counts[, cohort] == time_periods[group]) + #index <- which(dp2$cohort_counts[, cohort] == time_periods[group]) + index <- which(dp2$cohort_counts[, cohort] == dp2$reverse_mapping[group]) start_treat <- ifelse(index == 1, 1, dp2$cohort_counts[1:(index-1), sum(cohort_size)]+1) end_treat <- dp2$cohort_counts[1:index, sum(cohort_size)] # set the cohort index; .C = 0 and .G = 1 @@ -348,9 +354,12 @@ compute.att_gt2 <- function(dp2) { n <- dp2$id_count # Total number of units treated_groups <- dp2$treated_groups time_periods <- dp2$time_periods + + gt_index <- sort(union(treated_groups, time_periods)) # standardize the times to indexes # Create a mapping for time_periods to standardized form - time_mapping <- setNames(seq_along(time_periods), time_periods) + #time_mapping <- setNames(seq_along(time_periods), time_periods) + time_mapping <- setNames(seq_along(gt_index), gt_index) # Create a reverse mapping from standardized values back to the original reverse_mapping <- setNames(as.numeric(names(time_mapping)), time_mapping) dp2$reverse_mapping <- reverse_mapping From f7b8f324664b0a3c3f2a6ba7186970e911bcca0f Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Fri, 18 Oct 2024 02:19:54 -0400 Subject: [PATCH 34/50] fix malinformed unit test --- R/pre_process_did2.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index 9dcb0bd..a197f9e 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -39,7 +39,7 @@ validate_args <- function(args, data){ if(!data[, is.numeric(get(args$idname))]){stop("idname = ", args$idname, " is not numeric. Please convert it")} # Check if gname is unique by idname: irreversibility of the treatment - check_treatment_uniqueness <- data[, .(constant = all(get(args$gname)[1] == get(args$gname))), by = get(args$idname)][, all(constant)] + check_treatment_uniqueness <- data[, .(constant = all(get(args$gname)[1] == get(args$gname))), by = get(args$idname)][, all(constant, na.rm = TRUE)] if (!check_treatment_uniqueness) { stop("The value of gname (treatment variable) must be the same across all periods for each particular unit. The treatment must be irreversible.") } From 0509e77f3de9017838eeac270106dbb4d6166902 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Sat, 19 Oct 2024 02:58:57 -0400 Subject: [PATCH 35/50] fixing unbalanced panel data --- R/compute.att_gt2.R | 13 +++++++++---- R/pre_process_did2.R | 14 +++++++++----- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index 854d4bb..95e2437 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -45,7 +45,9 @@ get_did_cohort_index <- function(group, time, pret, dp2){ # select the DiD cohort - did_cohort_index <- rep(NA, dp2$id_count) + ifelse(dp2$allow_unbalanced_panel, did_cohort_index <- rep(NA, dp2$time_invariant_data[, .N]), did_cohort_index <- rep(NA, dp2$id_count)) + #did_cohort_index <- rep(NA, dp2$id_count) + if(dp2$panel){ @@ -268,7 +270,10 @@ run_DRDID <- function(cohort_data, covariates, dp2){ # adjust influence function to account for only using # subgroup to estimate att(g,t) inf_func_vector <- rep(0, n) - inf_func_not_na <- (n/n1)*attgt$att.inf.func + #inf_func_not_na <- (n/n1)*attgt$att.inf.func + ifelse(dp2$allow_unbalanced_panel, + inf_func_not_na <- (dp2$id_count/n1)*attgt$att.inf.func, + inf_func_not_na <- (n/n1)*attgt$att.inf.func) inf_func_vector[valid_obs] <- inf_func_not_na } @@ -318,8 +323,8 @@ run_att_gt_estimation <- function(gt, dp2){ names(cohort_data) <- c("D", "y1", "y0", "i.weights") } else { dp2$time_invariant_data[, post := fifelse(get(dp2$tname) == dp2$reverse_mapping[t], 1, 0)] - cohort_data <- data.table(did_cohort_index, dp2$time_invariant_data[[dp2$yname]], dp2$time_invariant_data$post, dp2$time_invariant_data$weights) - names(cohort_data) <- c("D", "y", "post", "i.weights") + cohort_data <- data.table(did_cohort_index, dp2$time_invariant_data[[dp2$yname]], dp2$time_invariant_data$post, dp2$time_invariant_data$weights, dp2$time_invariant_data$.rowid) + names(cohort_data) <- c("D", "y", "post", "i.weights", ".rowid") } diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index a197f9e..03e1584 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -254,7 +254,7 @@ did_standarization <- function(data, args){ if(any(unit_count[, count < raw_time_size])){ mis_unit <- unit_count[count < raw_time_size] warning(nrow(mis_unit), " units are missing in some periods. Converting to balanced panel by dropping them.") - data <- data[!get(args$idname) %in% mis_unit[, get(args$idname)]] + data <- data[!get(args$idname) %in% mis_unit$get] } # If all data is dropped, stop execution @@ -397,10 +397,14 @@ get_did_tensors <- function(data, args){ # We can do this filtering because the data is already sorted appropriately invariant_data <- data[1:args$id_count] } else { - # get the first observation for each unit - invariant_data <- data[data[, .I[1], by = get(args$idname)]$V1] - # # order by idname - # setorderv(invariant_data, c(args$idname), c(1)) + if (!args$allow_unbalanced_panel) { + # get the first observation for each unit + invariant_data <- data[data[, .I[1], by = get(args$idname)]$V1] + # # order by idname + # setorderv(invariant_data, c(args$idname), c(1)) + } else { + invariant_data <- copy(data) + } } # Get cohort counts From cce42f874fbbf241afc82bba7a22f80820a7cf5a Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Sat, 19 Oct 2024 04:18:28 -0400 Subject: [PATCH 36/50] fixing clustered std. errors --- R/mboot.R | 3 ++- R/pre_process_did2.R | 7 ++++++- man/att_gt.Rd | 24 ++++++++++++------------ tests/testthat/test-att_gt.R | 6 ++++++ 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/R/mboot.R b/R/mboot.R index dc9f0bd..6c433ca 100644 --- a/R/mboot.R +++ b/R/mboot.R @@ -29,6 +29,7 @@ mboot <- function(inf.func, DIDparams, pl = FALSE, cores = 1) { alp <- DIDparams$alp panel <- DIDparams$panel true_repeated_cross_sections <- DIDparams$true_repeated_cross_sections + unbalanced_panel <- DIDparams$allow_unbalanced_panel data <- as.data.frame(DIDparams$data) tlist <- ifelse(DIDparams$faster_mode, DIDparams$time_periods, unique(data[,tname])[order(unique(data[,tname]))]) # just get n observations (for clustering below...) @@ -84,7 +85,7 @@ mboot <- function(inf.func, DIDparams, pl = FALSE, cores = 1) { if (length(clustervars)==0) { bres <- sqrt(n) * run_multiplier_bootstrap(inf.func, biters, pl, cores) } else { - n_clusters <- length(unique(data[,clustervars])) + n_clusters <- length(unique(dta[,clustervars])) cluster <- unique(dta[,c(idname,clustervars)])[,2] cluster_n <- aggregate(cluster, by=list(cluster), length)[,2] cluster_mean_if <- rowsum(inf.func, cluster,reorder=TRUE) / cluster_n diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index 03e1584..1525a33 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -59,6 +59,11 @@ validate_args <- function(args, data){ # Flags for cluster variable if (!is.null(args$clustervars)) { + # Check if it is a unbalanced panel with faster_model enable + clustervars + if (args$faster_mode & args$allow_unbalanced_panel) { + stop("Computing clustered standard errors with unbalanced panel using faster_mode=TRUE is currently not available. Please set faster_mode=FALSE.") + } + # dropping idname from cluster if (args$idname %in% args$clustervars) { args$clustervars <- setdiff(args$clustervars, args$idname) @@ -70,7 +75,7 @@ validate_args <- function(args, data){ } # Check that cluster variables do not vary over time within each unit - if (length(cluster) > 0) { + if (length(args$cluster) > 0) { # Efficiently check for time-varying cluster variables clust_tv <- data[, lapply(.SD, function(col) length(unique(col)) == 1), by = id, .SDcols = args$cluster] # If any cluster variable varies over time within any unit, stop execution diff --git a/man/att_gt.Rd b/man/att_gt.Rd index a6e954e..2730a7a 100644 --- a/man/att_gt.Rd +++ b/man/att_gt.Rd @@ -273,18 +273,18 @@ summary(out3) #> #> Group-Time Average Treatment Effects: #> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] -#> 2004 2004 -0.0212 0.0217 -0.0788 0.0365 -#> 2004 2005 -0.0816 0.0324 -0.1676 0.0044 -#> 2004 2006 -0.1382 0.0368 -0.2361 -0.0403 * -#> 2004 2007 -0.1069 0.0344 -0.1984 -0.0154 * -#> 2006 2004 -0.0075 0.0233 -0.0693 0.0544 -#> 2006 2005 -0.0046 0.0184 -0.0533 0.0442 -#> 2006 2006 0.0087 0.0182 -0.0397 0.0570 -#> 2006 2007 -0.0413 0.0205 -0.0956 0.0130 -#> 2007 2004 0.0269 0.0136 -0.0091 0.0630 -#> 2007 2005 -0.0042 0.0153 -0.0448 0.0364 -#> 2007 2006 -0.0284 0.0191 -0.0792 0.0223 -#> 2007 2007 -0.0288 0.0167 -0.0732 0.0157 +#> 2004 2004 -0.0212 0.0217 -0.0798 0.0375 +#> 2004 2005 -0.0816 0.0324 -0.1690 0.0058 +#> 2004 2006 -0.1382 0.0368 -0.2378 -0.0386 * +#> 2004 2007 -0.0924 0.0338 -0.1838 -0.0009 * +#> 2006 2004 -0.0075 0.0233 -0.0703 0.0554 +#> 2006 2005 -0.0046 0.0184 -0.0542 0.0450 +#> 2006 2006 0.0087 0.0182 -0.0405 0.0579 +#> 2006 2007 -0.0217 0.0185 -0.0717 0.0284 +#> 2007 2004 0.0269 0.0136 -0.0097 0.0636 +#> 2007 2005 -0.0042 0.0153 -0.0455 0.0371 +#> 2007 2006 -0.0284 0.0191 -0.0801 0.0232 +#> 2007 2007 -0.0254 0.0163 -0.0695 0.0188 #> --- #> Signif. codes: `*' confidence band does not cover 0 #> diff --git a/tests/testthat/test-att_gt.R b/tests/testthat/test-att_gt.R index 4c8218a..3f2a7df 100644 --- a/tests/testthat/test-att_gt.R +++ b/tests/testthat/test-att_gt.R @@ -651,9 +651,15 @@ test_that("clustered standard errors", { data=data, panel=TRUE, allow_unbalanced_panel=TRUE, + faster_mode = FALSE, clustervars="cluster") expect_equal(res_ub$att[1], 1, tol=.5) + # expect an error with faster_mode=TRUE because it not currently available + expect_error(att_gt(yname="Y",tname="period",idname="id",gname="G", + xformla=~X,data=data,panel=TRUE, allow_unbalanced_panel=TRUE, + faster_mode = TRUE, clustervars="cluster"), "faster_mode=TRUE is currently not available") + #----------------------------------------------------------------------------- # also, check that we error when clustering variable varies within unit # over time From a742f37aac05a1232e653ae79a1760ad17863145 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Sat, 19 Oct 2024 21:20:22 -0400 Subject: [PATCH 37/50] adding fix for unbalanced panel data influence functions --- R/compute.att_gt2.R | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index 95e2437..5d8e848 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -207,6 +207,10 @@ run_DRDID <- function(cohort_data, covariates, dp2){ # -------------------------------------- # Repeated Cross-Section # -------------------------------------- + # if we are running unbalanced panel data, we get a temporary copy of cohort data to compute influence function + if(dp2$allow_unbalanced_panel){ + cohort_data_init <- copy(cohort_data[, .(D, .rowid)]) + } # still total number of units (not just included in G or C) n <- cohort_data[, .N] @@ -269,12 +273,19 @@ run_DRDID <- function(cohort_data, covariates, dp2){ # G and C # adjust influence function to account for only using # subgroup to estimate att(g,t) - inf_func_vector <- rep(0, n) - #inf_func_not_na <- (n/n1)*attgt$att.inf.func - ifelse(dp2$allow_unbalanced_panel, - inf_func_not_na <- (dp2$id_count/n1)*attgt$att.inf.func, - inf_func_not_na <- (n/n1)*attgt$att.inf.func) - inf_func_vector[valid_obs] <- inf_func_not_na + if(dp2$allow_unbalanced_panel){ + # since this is technically a panel data but ran as RCS, we need to adjust the influence function + # by aggregating influence value by .rowid (since several obs of one unit could be used to estimate ATT in each 2x2) + cohort_data_init[, inf_func_long := 0] + # Assign values from vec to the valid rows identified by valid_obs + cohort_data_init[valid_obs, inf_func_long := (dp2$id_count/n1)*attgt$att.inf.func] + inf_func_vector <- cohort_data_init[, .(inf_func = sum(inf_func_long, na.rm = TRUE)), by = .rowid][ , inf_func] + + } else { + inf_func_vector <- rep(0, n) + inf_func_not_na <- (n/n1)*attgt$att.inf.func + inf_func_vector[valid_obs] <- inf_func_not_na + } } From cd98b2e6d52ec1ac45c53bafd7a2da7df72afd34 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Sat, 19 Oct 2024 21:51:09 -0400 Subject: [PATCH 38/50] enablign clustered std. error with unbalanced panel --- R/pre_process_did2.R | 5 ----- tests/testthat/test-att_gt.R | 7 ++++--- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index 1525a33..f652f03 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -59,11 +59,6 @@ validate_args <- function(args, data){ # Flags for cluster variable if (!is.null(args$clustervars)) { - # Check if it is a unbalanced panel with faster_model enable + clustervars - if (args$faster_mode & args$allow_unbalanced_panel) { - stop("Computing clustered standard errors with unbalanced panel using faster_mode=TRUE is currently not available. Please set faster_mode=FALSE.") - } - # dropping idname from cluster if (args$idname %in% args$clustervars) { args$clustervars <- setdiff(args$clustervars, args$idname) diff --git a/tests/testthat/test-att_gt.R b/tests/testthat/test-att_gt.R index 3f2a7df..eb41b68 100644 --- a/tests/testthat/test-att_gt.R +++ b/tests/testthat/test-att_gt.R @@ -655,10 +655,11 @@ test_that("clustered standard errors", { clustervars="cluster") expect_equal(res_ub$att[1], 1, tol=.5) - # expect an error with faster_mode=TRUE because it not currently available - expect_error(att_gt(yname="Y",tname="period",idname="id",gname="G", + # clustered standard errors with unbalanced panel with faster mode + res_ub_faster <- att_gt(yname="Y",tname="period",idname="id",gname="G", xformla=~X,data=data,panel=TRUE, allow_unbalanced_panel=TRUE, - faster_mode = TRUE, clustervars="cluster"), "faster_mode=TRUE is currently not available") + faster_mode = TRUE, clustervars="cluster") + expect_equal(res_ub_faster$att[1], 1, tol=.5) #----------------------------------------------------------------------------- # also, check that we error when clustering variable varies within unit From 8a41dba38db623b15fd8ec0dcdd5f4d5f7d340e6 Mon Sep 17 00:00:00 2001 From: pedrohcgs Date: Mon, 4 Nov 2024 21:26:13 -0500 Subject: [PATCH 39/50] add test for varnames in dataset --- DESCRIPTION | 2 +- NEWS.md | 2 +- R/pre_process_did.R | 13 ++++++++++++- tests/testthat/test-user_bug_fixes.R | 12 ++++++++++++ 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 3fa39b5..770f487 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: did Title: Treatment Effects with Multiple Periods and Groups -Version: 2.2.0.907 +Version: 2.2.0.908 Authors@R: c(person("Brantly", "Callaway", email = "brantly.callaway@uga.edu", role = c("aut", "cre")), person("Pedro H. C.", "Sant'Anna", email="pedro.h.santanna@vanderbilt.edu", role = c("aut"))) URL: https://bcallaway11.github.io/did/, https://github.com/bcallaway11/did/ Description: The standard Difference-in-Differences (DID) setup involves two periods and two groups -- a treated group and untreated group. Many applications of DID methods involve more than two periods and have individuals that are treated at different points in time. This package contains tools for computing average treatment effect parameters in Difference in Differences setups with more than two periods and with variation in treatment timing using the methods developed in Callaway and Sant'Anna (2021) . The main parameters are group-time average treatment effects which are the average treatment effect for a particular group at a a particular time. These can be aggregated into a fewer number of treatment effect parameters, and the package deals with the cases where there is selective treatment timing, dynamic treatment effects, calendar time effects, or combinations of these. There are also functions for testing the Difference in Differences assumption, and plotting group-time average treatment effects. diff --git a/NEWS.md b/NEWS.md index 126916d..eb36319 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,6 @@ # did 2.2.0 - * Code improvements that made the package much faster and memory efficient + * Code improvements that made the package faster and more memory efficient * Improved automated testing and regression testing diff --git a/R/pre_process_did.R b/R/pre_process_did.R index 0946e29..71de568 100644 --- a/R/pre_process_did.R +++ b/R/pre_process_did.R @@ -52,9 +52,20 @@ pre_process_did <- function(yname, # make sure gname is numeric if (! (is.numeric(data[, gname])) ) stop("data[, gname] must be numeric") - # put in blank xformla if no covariates + # put in blank xformla if no covariates or check whether all variables are in data if (is.null(xformla)) { xformla <- ~1 + } else { + # extract variable names from the formula + formula_vars <- all.vars(xformla) + + # identify variables in xformla not in data + missing_vars <- setdiff(formula_vars, names(data)) + + # error checking for missing variables in data + if (length(missing_vars) > 0) { + stop(paste("The following variables are not in data:", paste(missing_vars, collapse = ", ")), call. = FALSE) + } } # drop irrelevant columns from data diff --git a/tests/testthat/test-user_bug_fixes.R b/tests/testthat/test-user_bug_fixes.R index 4954b20..c7ff635 100644 --- a/tests/testthat/test-user_bug_fixes.R +++ b/tests/testthat/test-user_bug_fixes.R @@ -146,3 +146,15 @@ test_that("0 pre-treatment estimates when outcomes are 0", { res_idx <- which(res$group==9 & res$t==7) expect_equal(res$att[res_idx],0) }) + +test_that("variables not in live in dataset", { + sp <- did::reset.sim(time.periods=3) + data <- build_sim_dataset(sp) + + X2 <- factor(data$cluster) + + expect_error(att_gt(yname="Y", xformla=~X2, data=data, tname="period", idname="id", control_group="notyettreated", + gname="G", est_method="dr", clustervars="cluster"), " variables are not in data") + +}) + From dcfcf34b7ab9c4eecddd10ee0630d07ccec8488c Mon Sep 17 00:00:00 2001 From: pedrohcgs Date: Mon, 4 Nov 2024 21:37:26 -0500 Subject: [PATCH 40/50] update compute.att_gt.R to use data.table --- R/compute.att_gt.R | 114 ++++++++++++++++++++++++++++++--------------- 1 file changed, 77 insertions(+), 37 deletions(-) diff --git a/R/compute.att_gt.R b/R/compute.att_gt.R index deee358..ca4986e 100644 --- a/R/compute.att_gt.R +++ b/R/compute.att_gt.R @@ -20,7 +20,7 @@ compute.att_gt <- function(dp) { #----------------------------------------------------------------------------- # unpack DIDparams #----------------------------------------------------------------------------- - data <- as.data.frame(dp$data) + data <- data.table::as.data.table(dp$data) yname <- dp$yname tname <- dp$tname idname <- dp$idname @@ -51,32 +51,30 @@ compute.att_gt <- function(dp) { counter <- 1 # number of time periods - tlist.length <- length(tlist) - tfac <- 0 - - if (base_period != "universal") { - tlist.length <- tlist.length - 1 - tfac <- 1 - } + tlist.length <- ifelse(base_period != "universal", length(tlist) - 1, length(tlist)) + tfac <- ifelse(base_period != "universal", 1, 0) # influence function - inffunc <- Matrix::Matrix(data=0,nrow=n, ncol=nG*(nT-tfac), sparse=TRUE) + inffunc <- Matrix::Matrix(data = 0, nrow = n, ncol = nG*(nT-tfac), sparse = TRUE) + + # list of collect sparse matrix updates + inffunc_updates <- list() + # counter for keeping track of updates + update_counter <- 1 # never treated option nevertreated <- (control_group[1] == "nevertreated") if(nevertreated) { - data$.C <- 1*(data[,gname] == 0) + data[, .C := as.integer(get(gname) == 0)] } - - # rename yname to .y - data$.y <- data[,yname] + data[, .y := get(yname), .SDcols = yname] # loop over groups for (g in 1:nG) { # Set up .G once - data$.G <- 1*(data[,gname] == glist[g]) + data[, .G := as.numeric(get(gname) == glist[[..g]]), .SDcols = gname] # loop over time periods for (t in 1:tlist.length) { @@ -97,9 +95,9 @@ compute.att_gt <- function(dp) { # that is, never treated + units that are eventually treated, # but not treated by the current period (+ anticipation) if(!nevertreated) { - data$.C <- 1 * ((data[,gname] == 0) | - ((data[,gname] > (tlist[max(t,pret)+tfac]+anticipation)) & - (data[,gname] != glist[g]))) + data[, .C := as.integer((get(gname) == 0) | + ((get(gname) > (tlist[max(t, pret) + tfac] + anticipation)) & + (get(gname) != glist[[..g]])))] } @@ -127,8 +125,16 @@ compute.att_gt <- function(dp) { if (base_period == "universal") { if (tlist[pret] == tlist[(t+tfac)]) { attgt.list[[counter]] <- list(att=0, group=glist[g], year=tlist[(t+tfac)], post=0) - inffunc[,counter] <- rep(0,n) - counter <- counter+1 + # inffunc[,counter] <- rep(0,n) + # counter <- counter+1 + inffunc_updates[[update_counter]] <- list( + indices = rep(TRUE, n), # Apply to all units + values = as.matrix(rep(0, n)) # Zero influence function + ) + + # Update the counters + update_counter <- update_counter + 1 + counter <- counter + 1 next } } @@ -148,13 +154,15 @@ compute.att_gt <- function(dp) { post.treat <- 1*(glist[g] <= tlist[t+tfac]) # total number of units (not just included in G or C) - disdat <- data[data[,tname] == tlist[t+tfac] | data[,tname] == tlist[pret],] + # disdat <- data[data[,tname] == tlist[t+tfac] | data[,tname] == tlist[pret],] + target_times <- c(tlist[t+tfac], tlist[pret]) + disdat <- data[get(tname) %in% target_times] if (panel) { # transform disdat it into "cross-sectional" data where one of the columns # contains the change in the outcome over time. - disdat <- panel2cs2(disdat, yname, idname, tname, balance_panel=FALSE) + disdat <- get_wide_data(disdat, yname, idname, tname) # still total number of units (not just included in G or C) n <- nrow(disdat) @@ -163,7 +171,7 @@ compute.att_gt <- function(dp) { disidx <- disdat$.G==1 | disdat$.C==1 # pick up the data that will be used to compute ATT(g,t) - disdat <- disdat[disidx,] + disdat <- disdat[disidx] n1 <- nrow(disdat) # num obs. for computing ATT(g,t) @@ -197,7 +205,8 @@ compute.att_gt <- function(dp) { # checks for pscore based methods if (est_method %in% c("dr", "ipw")) { - preliminary_logit <- glm(G ~ -1 + covariates, family=binomial(link=logit)) + #preliminary_logit <- glm(G ~ -1 + covariates, family=binomial(link=logit)) + preliminary_logit <- parglm::parglm(G ~ -1 + covariates, family = "binomial") preliminary_pscores <- predict(preliminary_logit, type="response") if (max(preliminary_pscores) >= 0.999) { pscore_problems_likely <- TRUE @@ -217,8 +226,16 @@ compute.att_gt <- function(dp) { if (reg_problems_likely | pscore_problems_likely) { attgt.list[[counter]] <- list(att=NA, group=glist[g], year=tlist[(t+tfac)], post=post.treat) - inffunc[,counter] <- NA - counter <- counter+1 + # inffunc[,counter] <- NA + # counter <- counter+1 + inffunc_updates[[update_counter]] <- list( + indices = rep(TRUE, n), # Apply to all units + values = as.matrix(rep(NA, n)) # NA influence function + ) + + # Update the counters + update_counter <- update_counter + 1 + counter <- counter + 1 next } } @@ -270,7 +287,7 @@ compute.att_gt <- function(dp) { # this is the fix for unbalanced panels; 2nd criteria shouldn't do anything # with true repeated cross sections, but should pick up the right time periods # only with unbalanced panel - disidx <- (data$.rowid %in% rightids) & ( (data[,tname] == tlist[t+tfac]) | (data[,tname]==tlist[pret])) + disidx <- (data$.rowid %in% rightids) & ( (data[[tname]] == tlist[t+tfac]) | (data[[tname]]==tlist[pret])) # pick up the data that will be used to compute ATT(g,t) disdat <- data[disidx,] @@ -281,8 +298,8 @@ compute.att_gt <- function(dp) { # give short names for data in this iteration G <- disdat$.G C <- disdat$.C - Y <- disdat[,yname] - post <- 1*(disdat[,tname] == tlist[t+tfac]) + Y <- disdat[[yname]] + post <- 1*(disdat[[tname]] == tlist[t+tfac]) # num obs. for computing ATT(g,t), have to be careful here n1 <- sum(G+C) w <- disdat$.w @@ -309,8 +326,16 @@ compute.att_gt <- function(dp) { if (skip_this_att_gt) { attgt.list[[counter]] <- list(att=NA, group=glist[g], year=tlist[(t+tfac)], post=post.treat) - inffunc[,counter] <- NA - counter <- counter+1 + # inffunc[,counter] <- NA + # counter <- counter+1 + inffunc_updates[[update_counter]] <- list( + indices = rep(TRUE, n), # Apply to all units + values = as.matrix(rep(NA, n)) # NA influence function + ) + + # Update the counters + update_counter <- update_counter + 1 + counter <- counter + 1 next } @@ -374,30 +399,45 @@ compute.att_gt <- function(dp) { att = attgt$ATT, group = glist[g], year = tlist[(t+tfac)], post = post.treat ) - # recover the influence function - # start with vector of 0s because influence function - # for units that are not in G or C will be equal to 0 - inf.func <- rep(0, n) # populate the influence function in the right places if(panel) { - inf.func[disidx] <- attgt$att.inf.func + # inf.func[disidx] <- attgt$att.inf.func + # Collect the indices and corresponding values for the update + inffunc_updates[[update_counter]] <- list( + indices = disidx, + values = attgt$att.inf.func + ) } else { # aggregate inf functions by id (order by id) aggte_inffunc = suppressWarnings(stats::aggregate(attgt$att.inf.func, list(rightids), sum)) disidx <- (unique(data$.rowid) %in% aggte_inffunc[,1]) - inf.func[disidx] <- aggte_inffunc[,2] + #inf.func[disidx] <- aggte_inffunc[,2] + inffunc_updates[[update_counter]] <- list( + indices = disidx, + values = aggte_inffunc[,2] + ) } # save it in influence function matrix # inffunc[g,t,] <- inf.func - inffunc[,counter] <- inf.func + #inffunc[,counter] <- inf.func + update_counter <- update_counter + 1 # update counter counter <- counter+1 } # end looping over t } # end looping over g + # Apply the updates to the influence function matrix + update_inffunc <- rbindlist(lapply(seq_along(inffunc_updates), function(i) { + update <- inffunc_updates[[i]] + data.table(row = which(update$indices), col = i, value = update$values) + })) + # Apply updates to the sparse matrix + inffunc[cbind(update_inffunc$row, update_inffunc$col)] <- update_inffunc$value + + return(list(attgt.list=attgt.list, inffunc=inffunc)) } From 8d33d4c03d0b100a1d66c1d8d29d5e5667c7bbf8 Mon Sep 17 00:00:00 2001 From: pedrohcgs Date: Mon, 4 Nov 2024 21:43:54 -0500 Subject: [PATCH 41/50] parglm in Description --- DESCRIPTION | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 770f487..4f83974 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -19,7 +19,8 @@ Imports: generics, methods, tidyr, - data.table (>= 1.15.4) + data.table (>= 1.15.4), + parglm (>= 0.1.7) Roxygen: list(markdown = TRUE) RoxygenNote: 7.3.2 VignetteBuilder: knitr From 618ad7ce4c4305eae78db974be252c1d80d92ca0 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Tue, 5 Nov 2024 11:18:25 -0500 Subject: [PATCH 42/50] updating pre_process2 --- R/pre_process_did2.R | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index f652f03..55cfde3 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -60,7 +60,7 @@ validate_args <- function(args, data){ # Flags for cluster variable if (!is.null(args$clustervars)) { # dropping idname from cluster - if (args$idname %in% args$clustervars) { + if ((!is.null(args$idname)) && (args$idname %in% args$clustervars)){ args$clustervars <- setdiff(args$clustervars, args$idname) } @@ -507,6 +507,17 @@ pre_process_did2 <- function(yname, # put in blank xformla if no covariates if (is.null(args$xformla)) { args$xformla <- ~1 + } else { + # extract variable names from the formula + formula_vars <- all.vars(args$xformla) + + # identify variables in xformla not in data + missing_vars <- setdiff(formula_vars, names(data)) + + # error checking for missing variables in data + if (length(missing_vars) > 0) { + stop(paste("The following variables are not in data:", paste(missing_vars, collapse = ", ")), call. = FALSE) + } } # Put the data in a standard format after some validation From 08d7255cf69ef87285f0ef81aadf100db22eb1d5 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Tue, 5 Nov 2024 19:17:17 -0500 Subject: [PATCH 43/50] fixing check for clustervars --- R/att_gt.R | 2 +- R/pre_process_did2.R | 6 ++-- man/aggte.Rd | 36 ++++++++++----------- man/att_gt.Rd | 74 ++++++++++++++++++++++---------------------- 4 files changed, 59 insertions(+), 59 deletions(-) diff --git a/R/att_gt.R b/R/att_gt.R index 52a2adc..c663801 100644 --- a/R/att_gt.R +++ b/R/att_gt.R @@ -185,7 +185,7 @@ att_gt <- function(yname, clustervars=NULL, est_method="dr", base_period="varying", - faster_mode=TRUE, + faster_mode=FALSE, print_details=FALSE, pl=FALSE, cores=1) { diff --git a/R/pre_process_did2.R b/R/pre_process_did2.R index 55cfde3..ec1b9de 100644 --- a/R/pre_process_did2.R +++ b/R/pre_process_did2.R @@ -65,14 +65,14 @@ validate_args <- function(args, data){ } # check if user is providing more than 2 cluster variables (different than idname) - if (length(args$cluster) > 1) { + if (length(args$clustervars) > 1) { stop("You can only provide 1 cluster variable additionally to the one provided in idname. Please check your arguments.") } # Check that cluster variables do not vary over time within each unit - if (length(args$cluster) > 0) { + if (length(args$clustervars) > 0) { # Efficiently check for time-varying cluster variables - clust_tv <- data[, lapply(.SD, function(col) length(unique(col)) == 1), by = id, .SDcols = args$cluster] + clust_tv <- data[, lapply(.SD, function(col) length(unique(col)) == 1), by = get(args$idname), .SDcols = args$clustervars] # If any cluster variable varies over time within any unit, stop execution if (!all(unlist(clust_tv[, -1, with = FALSE]))) { stop("did cannot handle time-varying cluster variables at the moment. Please check your cluster variable.") diff --git a/man/aggte.Rd b/man/aggte.Rd index 1c00b2f..ed9930b 100644 --- a/man/aggte.Rd +++ b/man/aggte.Rd @@ -111,7 +111,7 @@ You can aggregate the ATT(g,t) in many ways. #> #> #> ATT Std. Error [ 95\% Conf. Int.] -#> -0.04 0.0119 -0.0633 -0.0166 * +#> -0.04 0.0123 -0.064 -0.0159 * #> #> #> --- @@ -133,18 +133,18 @@ You can aggregate the ATT(g,t) in many ways. #> #> Overall summary of ATT's based on event-study/dynamic aggregation: #> ATT Std. Error [ 95\% Conf. Int.] -#> -0.0772 0.0208 -0.118 -0.0365 * +#> -0.0772 0.0209 -0.1181 -0.0363 * #> #> #> Dynamic Effects: #> Event time Estimate Std. Error [95\% Simult. Conf. Band] -#> -3 0.0305 0.0154 -0.0101 0.0711 -#> -2 -0.0006 0.0129 -0.0346 0.0334 -#> -1 -0.0245 0.0145 -0.0628 0.0139 -#> 0 -0.0199 0.0119 -0.0513 0.0114 -#> 1 -0.0510 0.0160 -0.0934 -0.0085 * -#> 2 -0.1373 0.0393 -0.2412 -0.0333 * -#> 3 -0.1008 0.0356 -0.1949 -0.0067 * +#> -3 0.0305 0.0158 -0.0103 0.0713 +#> -2 -0.0006 0.0134 -0.0351 0.0340 +#> -1 -0.0245 0.0145 -0.0617 0.0128 +#> 0 -0.0199 0.0125 -0.0521 0.0122 +#> 1 -0.0510 0.0161 -0.0926 -0.0093 * +#> 2 -0.1373 0.0386 -0.2368 -0.0377 * +#> 3 -0.1008 0.0345 -0.1899 -0.0117 * #> --- #> Signif. codes: `*' confidence band does not cover 0 #> @@ -164,14 +164,14 @@ You can aggregate the ATT(g,t) in many ways. #> #> Overall summary of ATT's based on group/cohort aggregation: #> ATT Std. Error [ 95\% Conf. Int.] -#> -0.031 0.0126 -0.0557 -0.0064 * +#> -0.031 0.0126 -0.0558 -0.0062 * #> #> #> Group Effects: #> Group Estimate Std. Error [95\% Simult. Conf. Band] -#> 2004 -0.0797 0.0300 -0.1445 -0.0150 * -#> 2006 -0.0229 0.0163 -0.0582 0.0123 -#> 2007 -0.0261 0.0167 -0.0622 0.0101 +#> 2004 -0.0797 0.0281 -0.1407 -0.0188 * +#> 2006 -0.0229 0.0156 -0.0568 0.0110 +#> 2007 -0.0261 0.0172 -0.0634 0.0113 #> --- #> Signif. codes: `*' confidence band does not cover 0 #> @@ -191,15 +191,15 @@ You can aggregate the ATT(g,t) in many ways. #> #> Overall summary of ATT's based on calendar time aggregation: #> ATT Std. Error [ 95\% Conf. Int.] -#> -0.0417 0.0175 -0.0759 -0.0075 * +#> -0.0417 0.0172 -0.0755 -0.0079 * #> #> #> Time Effects: #> Time Estimate Std. Error [95\% Simult. Conf. Band] -#> 2004 -0.0105 0.0242 -0.0685 0.0475 -#> 2005 -0.0704 0.0319 -0.1467 0.0059 -#> 2006 -0.0488 0.0206 -0.0980 0.0004 -#> 2007 -0.0371 0.0133 -0.0689 -0.0052 * +#> 2004 -0.0105 0.0251 -0.0701 0.0490 +#> 2005 -0.0704 0.0320 -0.1464 0.0056 +#> 2006 -0.0488 0.0213 -0.0994 0.0018 +#> 2007 -0.0371 0.0139 -0.0700 -0.0041 * #> --- #> Signif. codes: `*' confidence band does not cover 0 #> diff --git a/man/att_gt.Rd b/man/att_gt.Rd index 2730a7a..9ecd2c1 100644 --- a/man/att_gt.Rd +++ b/man/att_gt.Rd @@ -23,7 +23,7 @@ att_gt( clustervars = NULL, est_method = "dr", base_period = "varying", - faster_mode = TRUE, + faster_mode = FALSE, print_details = FALSE, pl = FALSE, cores = 1 @@ -196,18 +196,18 @@ summary(out1) #> #> Group-Time Average Treatment Effects: #> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] -#> 2004 2004 -0.0105 0.0258 -0.0809 0.0599 -#> 2004 2005 -0.0704 0.0341 -0.1635 0.0227 -#> 2004 2006 -0.1373 0.0384 -0.2423 -0.0322 * -#> 2004 2007 -0.1008 0.0354 -0.1976 -0.0040 * -#> 2006 2004 0.0065 0.0235 -0.0578 0.0708 -#> 2006 2005 -0.0028 0.0192 -0.0554 0.0499 -#> 2006 2006 -0.0046 0.0184 -0.0548 0.0456 -#> 2006 2007 -0.0412 0.0207 -0.0977 0.0153 -#> 2007 2004 0.0305 0.0161 -0.0135 0.0746 -#> 2007 2005 -0.0027 0.0157 -0.0456 0.0401 -#> 2007 2006 -0.0311 0.0184 -0.0815 0.0193 -#> 2007 2007 -0.0261 0.0176 -0.0741 0.0220 +#> 2004 2004 -0.0105 0.0246 -0.0755 0.0545 +#> 2004 2005 -0.0704 0.0346 -0.1621 0.0212 +#> 2004 2006 -0.1373 0.0397 -0.2422 -0.0323 * +#> 2004 2007 -0.1008 0.0366 -0.1976 -0.0040 * +#> 2006 2004 0.0065 0.0226 -0.0532 0.0663 +#> 2006 2005 -0.0028 0.0193 -0.0538 0.0483 +#> 2006 2006 -0.0046 0.0185 -0.0536 0.0444 +#> 2006 2007 -0.0412 0.0208 -0.0962 0.0137 +#> 2007 2004 0.0305 0.0146 -0.0081 0.0692 +#> 2007 2005 -0.0027 0.0162 -0.0457 0.0402 +#> 2007 2006 -0.0311 0.0182 -0.0793 0.0172 +#> 2007 2007 -0.0261 0.0174 -0.0722 0.0201 #> --- #> Signif. codes: `*' confidence band does not cover 0 #> @@ -234,18 +234,18 @@ summary(out2) #> #> Group-Time Average Treatment Effects: #> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] -#> 2004 2004 -0.0145 0.0222 -0.0737 0.0446 -#> 2004 2005 -0.0764 0.0303 -0.1570 0.0041 -#> 2004 2006 -0.1404 0.0382 -0.2421 -0.0388 * -#> 2004 2007 -0.1069 0.0358 -0.2021 -0.0117 * -#> 2006 2004 -0.0005 0.0231 -0.0618 0.0609 -#> 2006 2005 -0.0062 0.0188 -0.0561 0.0437 -#> 2006 2006 0.0010 0.0204 -0.0534 0.0553 -#> 2006 2007 -0.0413 0.0210 -0.0971 0.0145 -#> 2007 2004 0.0267 0.0140 -0.0104 0.0639 -#> 2007 2005 -0.0046 0.0170 -0.0498 0.0407 -#> 2007 2006 -0.0284 0.0187 -0.0782 0.0213 -#> 2007 2007 -0.0288 0.0161 -0.0715 0.0140 +#> 2004 2004 -0.0145 0.0249 -0.0817 0.0527 +#> 2004 2005 -0.0764 0.0307 -0.1592 0.0064 +#> 2004 2006 -0.1404 0.0370 -0.2403 -0.0406 * +#> 2004 2007 -0.1069 0.0331 -0.1962 -0.0176 * +#> 2006 2004 -0.0005 0.0215 -0.0583 0.0574 +#> 2006 2005 -0.0062 0.0181 -0.0549 0.0425 +#> 2006 2006 0.0010 0.0190 -0.0502 0.0521 +#> 2006 2007 -0.0413 0.0207 -0.0971 0.0145 +#> 2007 2004 0.0267 0.0143 -0.0117 0.0652 +#> 2007 2005 -0.0046 0.0153 -0.0459 0.0368 +#> 2007 2006 -0.0284 0.0197 -0.0816 0.0247 +#> 2007 2007 -0.0288 0.0157 -0.0712 0.0136 #> --- #> Signif. codes: `*' confidence band does not cover 0 #> @@ -273,18 +273,18 @@ summary(out3) #> #> Group-Time Average Treatment Effects: #> Group Time ATT(g,t) Std. Error [95\% Simult. Conf. Band] -#> 2004 2004 -0.0212 0.0217 -0.0798 0.0375 -#> 2004 2005 -0.0816 0.0324 -0.1690 0.0058 -#> 2004 2006 -0.1382 0.0368 -0.2378 -0.0386 * -#> 2004 2007 -0.0924 0.0338 -0.1838 -0.0009 * -#> 2006 2004 -0.0075 0.0233 -0.0703 0.0554 -#> 2006 2005 -0.0046 0.0184 -0.0542 0.0450 -#> 2006 2006 0.0087 0.0182 -0.0405 0.0579 -#> 2006 2007 -0.0217 0.0185 -0.0717 0.0284 -#> 2007 2004 0.0269 0.0136 -0.0097 0.0636 -#> 2007 2005 -0.0042 0.0153 -0.0455 0.0371 -#> 2007 2006 -0.0284 0.0191 -0.0801 0.0232 -#> 2007 2007 -0.0254 0.0163 -0.0695 0.0188 +#> 2004 2004 -0.0212 0.0219 -0.0797 0.0374 +#> 2004 2005 -0.0816 0.0299 -0.1617 -0.0015 * +#> 2004 2006 -0.1382 0.0375 -0.2387 -0.0376 * +#> 2004 2007 -0.1069 0.0354 -0.2016 -0.0122 * +#> 2006 2004 -0.0075 0.0216 -0.0653 0.0504 +#> 2006 2005 -0.0046 0.0184 -0.0539 0.0448 +#> 2006 2006 0.0087 0.0167 -0.0362 0.0535 +#> 2006 2007 -0.0413 0.0192 -0.0927 0.0101 +#> 2007 2004 0.0269 0.0146 -0.0122 0.0661 +#> 2007 2005 -0.0042 0.0160 -0.0470 0.0386 +#> 2007 2006 -0.0284 0.0182 -0.0773 0.0204 +#> 2007 2007 -0.0288 0.0176 -0.0759 0.0184 #> --- #> Signif. codes: `*' confidence band does not cover 0 #> From de183ae4bd8d8b936fe76aa437e5cda94cd06a55 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Tue, 5 Nov 2024 20:12:24 -0500 Subject: [PATCH 44/50] fixing tests --- DESCRIPTION | 3 --- R/compute.att_gt2.R | 2 +- R/imports.R | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 83155e6..a14a8bd 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,6 @@ Package: did Title: Treatment Effects with Multiple Periods and Groups - Version: 2.2.0.908 - Authors@R: c(person("Brantly", "Callaway", email = "brantly.callaway@uga.edu", role = c("aut", "cre")), person("Pedro H. C.", "Sant'Anna", email="pedro.h.santanna@vanderbilt.edu", role = c("aut"))) URL: https://bcallaway11.github.io/did/, https://github.com/bcallaway11/did/ Description: The standard Difference-in-Differences (DID) setup involves two periods and two groups -- a treated group and untreated group. Many applications of DID methods involve more than two periods and have individuals that are treated at different points in time. This package contains tools for computing average treatment effect parameters in Difference in Differences setups with more than two periods and with variation in treatment timing using the methods developed in Callaway and Sant'Anna (2021) . The main parameters are group-time average treatment effects which are the average treatment effect for a particular group at a a particular time. These can be aggregated into a fewer number of treatment effect parameters, and the package deals with the cases where there is selective treatment timing, dynamic treatment effects, calendar time effects, or combinations of these. There are also functions for testing the Difference in Differences assumption, and plotting group-time average treatment effects. @@ -24,7 +22,6 @@ Imports: parglm (>= 0.1.7), data.table (>= 1.15.4), dreamerr (>= 1.4.0) - Roxygen: list(markdown = TRUE) RoxygenNote: 7.3.2 VignetteBuilder: knitr diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index 5d8e848..ed61cca 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -279,7 +279,7 @@ run_DRDID <- function(cohort_data, covariates, dp2){ cohort_data_init[, inf_func_long := 0] # Assign values from vec to the valid rows identified by valid_obs cohort_data_init[valid_obs, inf_func_long := (dp2$id_count/n1)*attgt$att.inf.func] - inf_func_vector <- cohort_data_init[, .(inf_func = sum(inf_func_long, na.rm = TRUE)), by = .rowid][ , inf_func] + inf_func_vector <- cohort_data_init[, .(inf_func_agg = sum(inf_func_long, na.rm = TRUE)), by = .rowid][ , inf_func_agg] } else { inf_func_vector <- rep(0, n) diff --git a/R/imports.R b/R/imports.R index d94dd7a..5243d4b 100644 --- a/R/imports.R +++ b/R/imports.R @@ -19,4 +19,4 @@ NULL utils::globalVariables(c('.','.G','.y', 'asif_never_treated', 'treated_first_period', 'count', 'constant', '.rowid', 'V1', 'control_group', 'cohort', 'cohort_size', 'period', 'period_size', 'y1', 'y0', - 'i.weights', 'y', 'cluster', 'id', '..cols_to_keep', '..g')) + 'i.weights', 'y', 'cluster', 'id', '..cols_to_keep', '..g', 'inf_func_long', 'inf_func_agg')) From b5f63064ffe9433fc257c8e55995607b7e20d538 Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Tue, 5 Nov 2024 23:36:07 -0500 Subject: [PATCH 45/50] fixing last period for notyettreated groups --- R/compute.att_gt2.R | 4 +++- tests/testthat/test-att_gt.R | 32 ++++++++++++++++---------------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index ed61cca..5ef31cf 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -40,7 +40,9 @@ get_did_cohort_index <- function(group, time, pret, dp2){ # min_control_group <- ifelse(min_control_group_index == Inf | min_control_group_index > dp2$time_periods_count, # Inf, # time_periods[min_control_group_index]) - min_control_group <- ifelse(dp2$control_group == "notyettreated", dp2$reverse_mapping[max(time, pret) +1] + dp2$anticipation, Inf) + min_control_group <- ifelse((dp2$control_group == "notyettreated") & ((max(time, pret) + 1 + dp2$anticipation) <= length(dp2$reverse_mapping)), + dp2$reverse_mapping[max(time, pret) +1] + dp2$anticipation, + Inf) max_control_group <- Inf # always include the never treated units as the maximum. diff --git a/tests/testthat/test-att_gt.R b/tests/testthat/test-att_gt.R index eb41b68..a9c4ade 100644 --- a/tests/testthat/test-att_gt.R +++ b/tests/testthat/test-att_gt.R @@ -691,8 +691,8 @@ test_that("faster mode enabled for panel data", { control_group = "nevertreated", est_method = "dr", faster_mode = TRUE) # check if results are equal. - expect_equal(out$att[1], out2$att[1]) - expect_equal(out$se, out2$se) + expect_equal(out$att, out2$att) + expect_equal(out$se, as.numeric(out2$se)) # -------------------------------------------------------------------------------------------------------- out <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", xformla = ~1, data = data, bstrap = FALSE, cband = FALSE, base_period = "varying", @@ -702,8 +702,8 @@ test_that("faster mode enabled for panel data", { control_group = "nevertreated", est_method = "dr", faster_mode = TRUE) # check if results are equal. - expect_equal(out$att[1], out2$att[1]) - expect_equal(out$se, out2$se) + expect_equal(out$att, out2$att) + expect_equal(out$se, as.numeric(out2$se)) # -------------------------------------------------------------------------------------------------------- out <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", @@ -714,8 +714,8 @@ test_that("faster mode enabled for panel data", { control_group = "notyettreated", est_method = "dr", faster_mode = TRUE) # check if results are equal. - expect_equal(out$att[1], out2$att[1]) - expect_equal(out$se, out2$se) + expect_equal(out$att, out2$att) + expect_equal(out$se, as.numeric(out2$se)) # -------------------------------------------------------------------------------------------------------- out <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", @@ -726,8 +726,8 @@ test_that("faster mode enabled for panel data", { control_group = "notyettreated", est_method = "dr", faster_mode = TRUE) # check if results are equal. - expect_equal(out$att[1], out2$att[1]) - expect_equal(out$se, out2$se) + expect_equal(out$att, out2$att) + expect_equal(out$se, as.numeric(out2$se)) }) @@ -746,8 +746,8 @@ test_that("faster model enabled for repeated cross sectional data", { est_method = "dr", faster_mode = TRUE ) # check if results are equal. - expect_equal(out_rcs$att[1], out_rcs2$att[1]) - expect_equal(out_rcs$se, out_rcs2$se) + expect_equal(out_rcs$att, out_rcs2$att) + expect_equal(out_rcs$se, as.numeric(out_rcs2$se)) # ---------------------------------------------------------------------------------------------------------------------------------- out_rcs <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, @@ -758,8 +758,8 @@ test_that("faster model enabled for repeated cross sectional data", { est_method = "dr", faster_mode = TRUE ) # check if results are equal. - expect_equal(out_rcs$att[1], out_rcs2$att[1]) - expect_equal(out_rcs$se, out_rcs2$se) + expect_equal(out_rcs$att, out_rcs2$att) + expect_equal(out_rcs$se, as.numeric(out_rcs2$se)) # ---------------------------------------------------------------------------------------------------------------------------------- out_rcs <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, @@ -770,8 +770,8 @@ test_that("faster model enabled for repeated cross sectional data", { est_method = "dr", faster_mode = TRUE ) # check if results are equal. - expect_equal(out_rcs$att[1], out_rcs2$att[1]) - expect_equal(out_rcs$se, out_rcs2$se) + expect_equal(out_rcs$att, out_rcs2$att) + expect_equal(out_rcs$se, as.numeric(out_rcs2$se)) # ---------------------------------------------------------------------------------------------------------------------------------- out_rcs <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, @@ -782,7 +782,7 @@ test_that("faster model enabled for repeated cross sectional data", { est_method = "dr", faster_mode = TRUE ) # check if results are equal. - expect_equal(out_rcs$att[1], out_rcs2$att[1]) - expect_equal(out_rcs$se, out_rcs2$se) + expect_equal(out_rcs$att, out_rcs2$att) + expect_equal(out_rcs$se, as.numeric(out_rcs2$se)) }) From 14cd5513c02eda181fa328e1bf7b577f64d035b7 Mon Sep 17 00:00:00 2001 From: pedrohcgs Date: Sat, 9 Nov 2024 14:08:35 -0600 Subject: [PATCH 46/50] Update test_sim_data_2_groups.R --- tests/testthat/test_sim_data_2_groups.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testthat/test_sim_data_2_groups.R b/tests/testthat/test_sim_data_2_groups.R index 20c1ea2..2024ed3 100644 --- a/tests/testthat/test_sim_data_2_groups.R +++ b/tests/testthat/test_sim_data_2_groups.R @@ -1,6 +1,6 @@ library(DRDID) library(BMisc) -#library(tidyr) +library(tidyr) ## ----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # test it works without covariates and only two gropups From b31a003a54e3a3eb28257629cb57af0d9b55cd3c Mon Sep 17 00:00:00 2001 From: pedrohcgs Date: Sat, 9 Nov 2024 14:09:50 -0600 Subject: [PATCH 47/50] Update DESCRIPTION --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index a14a8bd..9dbc525 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: did Title: Treatment Effects with Multiple Periods and Groups -Version: 2.2.0.908 +Version: 2.2.0.909 Authors@R: c(person("Brantly", "Callaway", email = "brantly.callaway@uga.edu", role = c("aut", "cre")), person("Pedro H. C.", "Sant'Anna", email="pedro.h.santanna@vanderbilt.edu", role = c("aut"))) URL: https://bcallaway11.github.io/did/, https://github.com/bcallaway11/did/ Description: The standard Difference-in-Differences (DID) setup involves two periods and two groups -- a treated group and untreated group. Many applications of DID methods involve more than two periods and have individuals that are treated at different points in time. This package contains tools for computing average treatment effect parameters in Difference in Differences setups with more than two periods and with variation in treatment timing using the methods developed in Callaway and Sant'Anna (2021) . The main parameters are group-time average treatment effects which are the average treatment effect for a particular group at a a particular time. These can be aggregated into a fewer number of treatment effect parameters, and the package deals with the cases where there is selective treatment timing, dynamic treatment effects, calendar time effects, or combinations of these. There are also functions for testing the Difference in Differences assumption, and plotting group-time average treatment effects. From 8cc0f105d7ef01f1337a671f2bd4ef704ddd5afb Mon Sep 17 00:00:00 2001 From: marcelortizv Date: Mon, 11 Nov 2024 15:50:09 -0500 Subject: [PATCH 48/50] fixing construction of cohort index for notyettreated --- R/att_gt.R | 2 +- R/compute.att_gt2.R | 31 ++++++++++++------------------- man/run_att_gt_estimation.Rd | 6 ++++-- tests/testthat/test-att_gt.R | 20 ++++++++++++-------- 4 files changed, 29 insertions(+), 30 deletions(-) diff --git a/R/att_gt.R b/R/att_gt.R index c663801..f908a57 100644 --- a/R/att_gt.R +++ b/R/att_gt.R @@ -192,7 +192,7 @@ att_gt <- function(yname, # Check if user wants to run faster mode: if (faster_mode) { - # this is a DIDparams object + # this is a DIDparams2 object dp <- pre_process_did2(yname=yname, tname=tname, idname=idname, diff --git a/R/compute.att_gt2.R b/R/compute.att_gt2.R index 5ef31cf..d1cc7d9 100644 --- a/R/compute.att_gt2.R +++ b/R/compute.att_gt2.R @@ -36,31 +36,26 @@ get_did_cohort_index <- function(group, time, pret, dp2){ treated_groups <- dp2$treated_groups time_periods <- dp2$time_periods # based on control_group option - # min_control_group_index <- ifelse(dp2$control_group == "notyettreated", max(time, pret) + dp2$anticipation + 1, Inf) - # min_control_group <- ifelse(min_control_group_index == Inf | min_control_group_index > dp2$time_periods_count, - # Inf, - # time_periods[min_control_group_index]) - min_control_group <- ifelse((dp2$control_group == "notyettreated") & ((max(time, pret) + 1 + dp2$anticipation) <= length(dp2$reverse_mapping)), - dp2$reverse_mapping[max(time, pret) +1] + dp2$anticipation, + + min_control_group <- ifelse((dp2$control_group == "notyettreated"), + dp2$cohort_counts$cohort[which(dp2$cohort_counts$cohort > dp2$reverse_mapping[max(time, pret)] + dp2$anticipation)][1], Inf) - max_control_group <- Inf # always include the never treated units as the maximum. + max_control_group <- Inf # always include the never treated units as the maximum. We add a correction in case is needed afterwards. # select the DiD cohort ifelse(dp2$allow_unbalanced_panel, did_cohort_index <- rep(NA, dp2$time_invariant_data[, .N]), did_cohort_index <- rep(NA, dp2$id_count)) - #did_cohort_index <- rep(NA, dp2$id_count) - if(dp2$panel){ # adding some correction in control group to avoid weird behavior when the control group is not yet treated - #ifelse(!min_control_group %in% dp2$cohort_counts$cohort, min_control_group <- dp2$cohort_count[cohort == min_control_group_index, cohort], min_control_group <- min_control_group) - ifelse(!max_control_group %in% dp2$cohort_counts$cohort, max_control_group <- tail(dp2$cohort_count$cohort,1), max_control_group <- max_control_group) + if(!max_control_group %in% dp2$cohort_counts$cohort){ + max_control_group <- tail(dp2$cohort_count$cohort,1) + } # getting the index to get units who will participate in the estimation for the (g,t) cell. start_control <- dp2$cohort_counts[cohort < min_control_group, sum(cohort_size)]+1 end_control <- dp2$cohort_counts[cohort <= max_control_group, sum(cohort_size)] - #index <- which(dp2$cohort_counts[, cohort] == time_periods[group]) index <- which(dp2$cohort_counts[, cohort] == dp2$reverse_mapping[group]) start_treat <- ifelse(index == 1, 1, dp2$cohort_counts[1:(index-1), sum(cohort_size)]+1) end_treat <- dp2$cohort_counts[1:index, sum(cohort_size)] @@ -223,7 +218,6 @@ run_DRDID <- function(cohort_data, covariates, dp2){ # num obs. for computing ATT(g,t) n1 <- cohort_data[, .N] - # TODO; THIS HAS TO BE BETTER WRITTEN if(dp2$xformla != ~1){ covariates <- covariates[valid_obs,] } else { @@ -300,16 +294,15 @@ run_DRDID <- function(cohort_data, covariates, dp2){ #' #' @description `run_att_gt_estimation` does the main work for computing #' multiperiod group-time average treatment effects -#' @param gt A numeric vector of the group and time period coming from a list of (g,t) cells +#' @param g group of interest (treated group at time t) +#' @param t time period #' @param dp2 A DIDparams object v2.0 #' #' @return a list with the gt cell and the results after performing estimation #' #' @keywords internal -run_att_gt_estimation <- function(gt, dp2){ - # get the current g,t values - g <- gt[[1]] - t <- gt[[2]] +run_att_gt_estimation <- function(g, t, dp2){ + if(dp2$print_details){cat("\n", paste0("Evaluating (g,t) = (",g,",",t,")"))} pret <- get_pret(g, t, dp2$base_period, dp2$anticipation) @@ -397,7 +390,7 @@ compute.att_gt2 <- function(dp2) { t <- gt_cell$t # Run estimation - gt_result <- run_att_gt_estimation(c(g, t), dp2) + gt_result <- run_att_gt_estimation(g, t, dp2) # Compute post-treatment indicator post.treat <- as.integer(g <= t) diff --git a/man/run_att_gt_estimation.Rd b/man/run_att_gt_estimation.Rd index 1fd0ba1..a2e1e50 100644 --- a/man/run_att_gt_estimation.Rd +++ b/man/run_att_gt_estimation.Rd @@ -4,10 +4,12 @@ \alias{run_att_gt_estimation} \title{Run ATT estimation for a given group-time pair} \usage{ -run_att_gt_estimation(gt, dp2) +run_att_gt_estimation(g, t, dp2) } \arguments{ -\item{gt}{A numeric vector of the group and time period coming from a list of (g,t) cells} +\item{g}{group of interest (treated group at time t)} + +\item{t}{time period} \item{dp2}{A DIDparams object v2.0} } diff --git a/tests/testthat/test-att_gt.R b/tests/testthat/test-att_gt.R index a9c4ade..c31fd09 100644 --- a/tests/testthat/test-att_gt.R +++ b/tests/testthat/test-att_gt.R @@ -685,7 +685,7 @@ test_that("faster mode enabled for panel data", { data <- did::mpdta out <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", xformla = ~1, data = data, bstrap = FALSE, cband = FALSE, base_period = "universal", - control_group = "nevertreated", est_method = "dr") + control_group = "nevertreated", est_method = "dr", faster_mode = FALSE) out2 <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", xformla = ~1, data = data, bstrap = FALSE, cband = FALSE, base_period = "universal", control_group = "nevertreated", est_method = "dr", faster_mode = TRUE) @@ -696,7 +696,7 @@ test_that("faster mode enabled for panel data", { # -------------------------------------------------------------------------------------------------------- out <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", xformla = ~1, data = data, bstrap = FALSE, cband = FALSE, base_period = "varying", - control_group = "nevertreated", est_method = "dr") + control_group = "nevertreated", est_method = "dr", faster_mode = FALSE) out2 <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", xformla = ~1, data = data, bstrap = FALSE, cband = FALSE, base_period = "varying", control_group = "nevertreated", est_method = "dr", faster_mode = TRUE) @@ -708,7 +708,7 @@ test_that("faster mode enabled for panel data", { # -------------------------------------------------------------------------------------------------------- out <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", xformla = ~1, data = data, bstrap = FALSE, cband = FALSE, base_period = "varying", - control_group = "notyettreated", est_method = "dr") + control_group = "notyettreated", est_method = "dr", faster_mode = FALSE) out2 <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", xformla = ~1, data = data, bstrap = FALSE, cband = FALSE, base_period = "varying", control_group = "notyettreated", est_method = "dr", faster_mode = TRUE) @@ -720,7 +720,7 @@ test_that("faster mode enabled for panel data", { # -------------------------------------------------------------------------------------------------------- out <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", xformla = ~1, data = data, bstrap = FALSE, cband = FALSE, base_period = "universal", - control_group = "notyettreated", est_method = "dr") + control_group = "notyettreated", est_method = "dr", faster_mode = FALSE) out2 <- att_gt(yname = "lemp", gname = "first.treat", idname = "countyreal", tname = "year", xformla = ~1, data = data, bstrap = FALSE, cband = FALSE, base_period = "universal", control_group = "notyettreated", est_method = "dr", faster_mode = TRUE) @@ -739,7 +739,8 @@ test_that("faster model enabled for repeated cross sectional data", { # ---------------------------------------------------------------------------------------------------------------------------------- out_rcs <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, - bstrap = FALSE, cband = FALSE, base_period = "universal", control_group = "nevertreated", est_method = "dr") + bstrap = FALSE, cband = FALSE, base_period = "universal", control_group = "nevertreated", + est_method = "dr", faster_mode = FALSE) out_rcs2 <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, bstrap = FALSE, cband = FALSE, base_period = "universal", control_group = "nevertreated", @@ -751,7 +752,8 @@ test_that("faster model enabled for repeated cross sectional data", { # ---------------------------------------------------------------------------------------------------------------------------------- out_rcs <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, - bstrap = FALSE, cband = FALSE, base_period = "varying", control_group = "nevertreated", est_method = "dr") + bstrap = FALSE, cband = FALSE, base_period = "varying", control_group = "nevertreated", + est_method = "dr", faster_mode = FALSE) out_rcs2 <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, bstrap = FALSE, cband = FALSE, base_period = "varying", control_group = "nevertreated", @@ -763,7 +765,8 @@ test_that("faster model enabled for repeated cross sectional data", { # ---------------------------------------------------------------------------------------------------------------------------------- out_rcs <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, - bstrap = FALSE, cband = FALSE, base_period = "varying", control_group = "notyettreated", est_method = "dr") + bstrap = FALSE, cband = FALSE, base_period = "varying", control_group = "notyettreated", + est_method = "dr", faster_mode = FALSE) out_rcs2 <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, bstrap = FALSE, cband = FALSE, base_period = "varying", control_group = "notyettreated", @@ -775,7 +778,8 @@ test_that("faster model enabled for repeated cross sectional data", { # ---------------------------------------------------------------------------------------------------------------------------------- out_rcs <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, - bstrap = FALSE, cband = FALSE, base_period = "universal", control_group = "notyettreated", est_method = "dr") + bstrap = FALSE, cband = FALSE, base_period = "universal", control_group = "notyettreated", + est_method = "dr", faster_mode = FALSE) out_rcs2 <- att_gt(yname = "Y", gname = "G", tname = "period", xformla = ~1, data = data_rcs, panel = FALSE, bstrap = FALSE, cband = FALSE, base_period = "universal", control_group = "notyettreated", From 46e2b09ed3b3e35de8968fbdccac6299088bf353 Mon Sep 17 00:00:00 2001 From: pedrohcgs Date: Wed, 13 Nov 2024 10:03:58 -0500 Subject: [PATCH 49/50] version control --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index b4936d0..9dbc525 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: did Title: Treatment Effects with Multiple Periods and Groups -Version: 2.2.0.904 +Version: 2.2.0.909 Authors@R: c(person("Brantly", "Callaway", email = "brantly.callaway@uga.edu", role = c("aut", "cre")), person("Pedro H. C.", "Sant'Anna", email="pedro.h.santanna@vanderbilt.edu", role = c("aut"))) URL: https://bcallaway11.github.io/did/, https://github.com/bcallaway11/did/ Description: The standard Difference-in-Differences (DID) setup involves two periods and two groups -- a treated group and untreated group. Many applications of DID methods involve more than two periods and have individuals that are treated at different points in time. This package contains tools for computing average treatment effect parameters in Difference in Differences setups with more than two periods and with variation in treatment timing using the methods developed in Callaway and Sant'Anna (2021) . The main parameters are group-time average treatment effects which are the average treatment effect for a particular group at a a particular time. These can be aggregated into a fewer number of treatment effect parameters, and the package deals with the cases where there is selective treatment timing, dynamic treatment effects, calendar time effects, or combinations of these. There are also functions for testing the Difference in Differences assumption, and plotting group-time average treatment effects. From d59c15693f81371068d9d83ee9542bb47097e3c5 Mon Sep 17 00:00:00 2001 From: pedrohcgs Date: Wed, 13 Nov 2024 10:05:20 -0500 Subject: [PATCH 50/50] version control --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 9dbc525..b099e2e 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: did Title: Treatment Effects with Multiple Periods and Groups -Version: 2.2.0.909 +Version: 2.2.1.909 Authors@R: c(person("Brantly", "Callaway", email = "brantly.callaway@uga.edu", role = c("aut", "cre")), person("Pedro H. C.", "Sant'Anna", email="pedro.h.santanna@vanderbilt.edu", role = c("aut"))) URL: https://bcallaway11.github.io/did/, https://github.com/bcallaway11/did/ Description: The standard Difference-in-Differences (DID) setup involves two periods and two groups -- a treated group and untreated group. Many applications of DID methods involve more than two periods and have individuals that are treated at different points in time. This package contains tools for computing average treatment effect parameters in Difference in Differences setups with more than two periods and with variation in treatment timing using the methods developed in Callaway and Sant'Anna (2021) . The main parameters are group-time average treatment effects which are the average treatment effect for a particular group at a a particular time. These can be aggregated into a fewer number of treatment effect parameters, and the package deals with the cases where there is selective treatment timing, dynamic treatment effects, calendar time effects, or combinations of these. There are also functions for testing the Difference in Differences assumption, and plotting group-time average treatment effects.

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%0DI>8RwK!vm@W|H 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