{smcl} {* *! version 2.1 2/23/2023 }{...} {title:{cmd:csdid postestimation}: Post-estimation utilities for CSDID} {it:{bf:Aggregations and Pretrend testing}} {p}There are two commands that can be used as post estimation tools. These are {cmd:csdid_estat} and {cmd:csdid_stats}. Both can be used to obtain similar statistics. The first one, {cmd:csdid_estat}, works when using {cmd: estat}, after the model estimation via {help csdid}. {p_end} {p}The second one {cmd:csdid_stats} works similarly but when using the "saved" RIF file. It can be used to produce wild Bootstrap SE.{p_end} Below the syntax for both commands is discussed. {marker syntax}{...} {title:Syntax} {cmd:estat} [subcommand], [options] {cmd:csdid_stats} [subcommand], [options] {marker subcommands}{...} {title:Subcommands} {synoptset 20 tabbed}{...} {synopthdr:Subcommands} {synoptline} {synopt :{opt pretrend}}Estimates the chi2 statistic of the null hypothesis that ALL pretreatment ATTGT's are statistically equal to zero.{p_end} {synopt :{opt pretrend, window(#1 #2)}}Estimates the chi2 statistic of the null hypothesis that ALL pretreatment ATTGT's within window are statistically equal to zero.{p_end} Aggregation subcommands. {synopt:{opt simple}}Estimates the ATT for all groups across all periods. {p_end} {synopt:{opt group}}Estimates the ATT for each group or cohort, over all periods {p_end} {synopt:{opt calendar}}Estimates the ATT for each period, across all groups or cohorts {p_end} {synopt:{opt event}}Estimates the dynamic ATT's. ATT's are estimated using all periods relative to the period of the first treatment, across all cohorts.{p_end} {synopt:{opt event, window(#1 #2)}}Same as above, but request only events between #1 and #2 to be estimated. {p_end} {synopt:{opt cevent, window(#1 #2)}}Estimates Censored Event averages. It estimates the average across all ATTGT's that correspond to periods between T#1 and T#2, inclusive. For example estat cevent , window(0 0) simply reproduces the effect at T+0.{p_end} {synopt:{opt all}}Produces all aggregations. Not available with csdid_stats. And cannot be combined with estore() nor esave() {p_end} {synopt:{opt attgt}}Produces the ATTGT's. {p_end} {synopthdr:options} {synoptline} {synopt:{opt estore(name)}}When using any of the 4 types of aggregations, request storing the outcome in memory as {it:name}{p_end} {synopt:{opt esave(name)}}When using any of the 4 types of aggregations, request saving the outcome in disk. {p_end} {synopt:{opt replace}}Request to replace {it:ster} file, if the a file already exists.{p_end} {synoptline} {synopt:{opt post}}Request posting the results in e().{p_end} {synopt:{opt save}}Request saving the RIF associated with the requested aggregation as a variable in the file. They can be used to produce other aggregations based on the RIFs See example.{p_end} {synoptline} {syntab:{bf: Standard Error Options}} {phang}By default, {cmd:csdid_estat} and {cmd:csdid_stats} produce asymptotic standard errors. {p_end} {phang}Using {cmd:csdid_estat} or {cmd: estat} {it:subcommand} always produces asymptotic standard errors, even if {help csdid} was estimated requesting Wbootstrap standard errors. {p_end} {phang}To produce Wbootstrap Standard errors, for other aggregations, you need to use the saved RIF-file, and {cmd:csdid_stats} {p_end} {phang}{cmd:csdid_stats} can produce Wbootstrap standard if requested, using the following options: {synopthdr:SE options} {synoptline} {synopt:wboot}Request Estimation of Standard errors using a multiplicative WildBootstrap procedure. The default uses 999 repetitions using mammen approach. {p_end} {synopt:wboot(reps(#))}Specifies the number of repetitions to be used for the Estimation of the WBoot SE. Default is 999 {p_end} {synopt:wboot(wtype(type))}Specifies the type of Wildbootstrap procedure. The default is "mammen", but "rademacher" is also avilable.{p_end} {synopt:rseed(#)}Specifies the seed for the WB procedure. Use for replication purposes.{p_end} {synoptline} {title:{cmd:csdid_plot}: Plots after csdid, csdid_estat and csdid_stats} {cmd:csdid} also comes with its own command to produce simple plots for all aggregations. It automatically recognizes last estimated results left by {cmd: csdid}, {cmd: csdid_estat} and {cmd: csdid_stats}, to produce the corresponding plots. {marker syntax}{...} {title:Syntax} {phang}{cmd:csdid_plot}, [options] {synopthdr:Plot options} {synoptline} {synopt:style(styleoption)} Allows you to change the style of the plot. The options are rspike (default), rarea, rcap and rbar.{p_end} {synopt:title(str)}Sets title for the constructed graph{p_end} {synopt:xtitle(str)}Sets title for horizontal axis{p_end} {synopt:ytitle(str)}Sets title for vertical axis axis{p_end} {synopt:name(str)}Request storing a graph in memory under {it:name}{p_end} {synopt:group(#)}When using {cmd:csdid_plot} after {cmd:csdid} or after {cmd:csdid_stats attgt}, one can produce dynamic type plots for each group/cohort. In that case, one needs to indicate which {it:group(#)} to plot. {synopt:pstyle[1|2](stype)} This can be used to choose an overall style for the figure colors. Default is p1 for pstyle1 and p2 for pstyle2. pstyle2 is only used for event style plots. {synopt:color[1|2](colorstyle)} This can be used to choose a color for areas of the figures. It superseeds pstyle if a color is defined, but complements it if using transparency or intencity. Default depends on the type of graph style, but is set at %40 for rspike. {synopt:lwidth[1|2](options)} This can be used to select width of line in figure. It affects the tickness of the countours of Area type plots. Default depends on the type of graph style. {pstd}Other {cmd:twoway graph} options are allowed. {marker remarks}{...} {title:Remarks} {pstd} The command {cmd:csdid_plot} is an easy-to-use command to plot different ATT aggregations, either across groups, across time, or dynamic effects, (event plot). It has, however, limited flexibility{p_end} {pstd} If you want to further modify this figure, I suggest using the community contributed command {help addplot} by Benn Jan. If you do, please cite his software. See references section. {title:{cmd:csdid_rif}: Module to create table results based on the var} {pstd}{cmd:csdid_rif} is a command that can be used to create further tables based on RIF-variables in your dataset. For example, using {cmd:csdid_stats event}, one can save the event related RIF variables, as well as the simple Average ATT RIF. One can then use {cmd:csdid_rif} to create a table based on all these information.{p_end} {marker syntax}{...} {title:Syntax} {phang}{cmd:csdid_rif} [varlist] [if in], [options] {synopthdr:Options} {synoptline} {synopt:cluster(varname)}Request estimating Clustered Standard errors. Default is Robust Standard errors{it:name}{p_end} {synopt:level(#)}Indicates the CI level to be used. Default 95{p_end} {synopt:wboot}Request the estimation of Wildbootstrap SE with Uniform Confidence Intervals. Can be combined with Cluster option{p_end} {synopt:reps(#)}Requests # replications used for the Bootstrap. Default 999.{p_end} {synopt:seed(#)}Provides a Seed for replication purposes{p_end} {marker remarks}{...} {title:Remarks} {pstd}This command can also be used with any other output that provides the RIF functions. After the command is run, it will leave behind information in e(){p_end} {marker examples}{...} {title:Examples} {phang} {stata "ssc install frause"} {stata "frause mpdta.dta, clear"} {pstd}Estimation of all ATTGT's using Doubly Robust IPW (DRIPW) estimation method. Saving RIF in disk {p_end} {phang} {stata csdid lemp lpop , ivar(countyreal) time(year) gvar(first_treat) method(dripw) saverif(_rif_) replace} {pstd}Estimation of all ATT aggregations{p_end} {phang} {stata estat all} {pstd}Estimation of all events between periods -2 to +2 {p_end} {phang} {stata estat event, window(-2 2)} {pstd}Producing a simple Plot for last results. Two different styles{p_end} {phang} {stata csdid_plot} {phang} {stata estat event, window(-2 2)} {phang} {stata csdid_plot, style(rarea)} {pstd}Dynamic effects for group treated in 2006{p_end} {phang} {stata csdid lemp lpop , ivar(countyreal) time(year) gvar(first_treat) method(dripw) } {phang} {stata csdid_plot, group(2006)} {pstd}Estimation of aggregations using RIF file. Using Asymptotic Standard errors and WBootstrap Standard errors{p_end} {phang}{stata use _rif_, clear} {pstd}Dynamic Effects with Asymptotic Standard errors{p_end} {phang} {stata csdid_stats event} {pstd}Dynamic Effects with Wbootstrap Std Err{p_end} {phang} {stata csdid_stats event, wboot} {pstd}Saving RIFs for all aggregations{p_end} {phang} {stata csdid_stats event, save} {phang} {stata csdid_stats calendar, save} {phang} {stata csdid_stats group, save} {pstd}Producing Tables Avg ATTs, using asymptotic Std Err{p_end} {phang} {stata csdid_rif Pre_avg Post_avg CAverage GAverage} {pstd}Producing Tables Avg ATTs, using Wboot Std Err and uniform Confidence Intervals{p_end} {phang} {stata csdid_rif Pre_avg Post_avg CAverage GAverage, wboot} {p_end} {marker authors}{...} {title:Authors} {pstd} Fernando Rios-Avila{break} Levy Economics Institute of Bard College{break} Annandale-on-Hudson, NY{break} friosavi@levy.org {pstd}Pedro H. C. Sant'Anna {break} Vanderbilt University{p_end} {pstd}Brantly Callaway {break} University of Georgia{p_end} {marker references}{...} {title:References} {phang2}Abadie, Alberto. 2005. "Semiparametric Difference-in-Differences Estimators." {it:The Review of Economic Studies} 72 (1): 1–19.{p_end} {phang2}Callaway, Brantly and Sant'Anna, Pedro H. C. 2021. "Difference-in-Differences with multiple time periods." , 225(2):200-230. {it:Journal of Econometrics}.{p_end} {phang2}Sant’Anna, Pedro H. C., and Jun Zhao. 2020. "Doubly Robust Difference-in-Differences Estimators." {it:Journal of Econometrics} 219 (1): 101–22.{p_end} {phang2}Rios-Avila, Fernando, Pedro H. C. Sant'Anna, and Brantly Callaway, 2021. “CSDID: Difference-in-Differences with Multiple periods.” {p_end} {phang2} Jann, B. (2014). addplot: Stata module to add twoway plot objects to an existing twoway graph. Available from http://ideas.repec.org/c/boc/bocode/s457917.html. {p_end} {marker aknowledgement}{...} {title:Aknowledgement} {pstd}This command was built using the DID command from R as benchmark, originally written by Pedro Sant'Anna and Brantly Callaway. {p_end} {pstd} Some of the additional tools and options are my attempt to provide things R version doesnt have yet. {p_end} {pstd}Many thanks to Pedro for helping me understand the inner workings of the estimator.{p_end} {pstd}Thanks also to Enrique, who helped with the display set up, plus other questions that pop up while working on this{p_end} {title:Also see} {p 7 14 2} Help: {help drdid}, {help csdid}, {help csdid postestimation}, {help xtdidregress} {p_end}