*! 1.1.0 Ariel Linden 24Jul2025
*! 1.0.0 Ariel Linden 11Jun2025
capture program drop power_cmd_multi_itsa
program define power_cmd_multi_itsa, rclass
version 11
syntax , n(integer) /// number of periods
CINTercept(real) /// starting level - controls
CPOSTtrend(real) /// post-intervention trend - controls
TINTercept(real) /// starting level - treated
TPOSTtrend(real) /// post-intervention trend - treated
[ TRPeriod(string) /// the treatment period when the intervention begins
CONTCnt(int 1) /// count of controls
CPREtrend(real 0) /// baseline trend - controls
CSTep(real 0) /// post-intervention change in level - controls
CSD(real 1) /// standard deviation for variability of time series - controls
CACorr(real 0) /// autocorrelation (rho) - controls
TPREtrend(real 0) /// baseline trend - treated
TSTep(real 0) /// post-intervention change in level - treated
TSD(real 1) /// standard deviation for variability of time series - treated
TACorr(real 0) /// autocorrelation (rho) - treated
Alpha(real 0.05) /// alpha level
LEVel /// specify level change and not trend change
NOIsily /// show the simulations dots
reps(integer 100) ] // number of repetitions
preserve
if "`noisily'" == "" {
local quietly quietly
}
if "`trperiod'" == "" {
local trperiod = ceil(`n' / 2)
}
`quietly' simulate reject=r(reject), reps(`reps'): power_sim_multi_itsa, ///
n(`n') contcnt(`contcnt') ///
tintercept(`tintercept') cintercept(`cintercept') ///
tpretrend(`tpretrend') cpretrend(`cpretrend') ///
tposttrend(`tposttrend') cposttrend(`cposttrend') ///
tstep(`tstep') cstep(`cstep') ///
tsd(`tsd') csd(`csd') ///
tacorr(`tacorr') cacorr(`cacorr') ///
trperiod(`trperiod') alpha(`alpha') `level'
summarize reject, meanonly
// return results
return scalar power = r(mean)
return scalar N = `n'
return scalar contcnt = `contcnt'
return scalar trperiod = `trperiod'
return scalar alpha = `alpha'
return scalar tintercept = `tintercept'
return scalar tpretrend = `tpretrend'
return scalar tstep = `tstep'
return scalar tposttrend = `tposttrend'
return scalar tsd = `tsd'
return scalar tacorr = `tacorr'
return scalar cintercept = `cintercept'
return scalar cpretrend = `cpretrend'
return scalar cstep = `cstep'
return scalar cposttrend = `cposttrend'
return scalar csd = `csd'
return scalar cacorr = `cacorr'
return scalar reps = `reps'
restore
end