program psacalci, rclass version 12.0 syntax anything [,rmax(real 1.0) delta(real -99.2) beta(real 0)] tokenize `anything' local hat_beta=`1' local hat_r = `2' local tilde_beta=`3' local tilde_r=`4' local yvar=`5' * Define Scenarios in which this breaks if `rmax'>1 { di _n di as err "The maximum possible R-squared is 1" exit 5001 } else if `rmax'<`tilde_r' { di _n di as err "Maximum r-squared provided is less than controlled r-squared" exit 5001 } * Main Program Arc else { if `delta'~=-99.2 { local type = 1 } else { local type = 2 } gen yvar4533=`yvar' gen A4533=(`hat_beta'-`tilde_beta') gen B4533=(`tilde_r'-`hat_r')*yvar4533 gen C4533=(`rmax'-`tilde_r')*yvar4533 local boundx = ((`tilde_beta'-`beta')^2*B4533^2*A4533+(`tilde_beta'-`beta')*B4533*(B4533^2+A4533^2*B4533))/((`tilde_beta'-`beta')^2*B4533^2*A4533+C4533*A4533*(B4533^2+A^2*B4533)) local bound: display %11.5f `boundx' if `delta'>=.999 & `delta'<=1.001 { local betax=`tilde_beta'-(A4533*C4533)/B4533 local betat: display %11.5f `betax' } else { local betax=`tilde_beta'-(sqrt((B4533^2+A4533^2*B4533)*(B4533^2+A4533^2*B4533+4*`delta'*(1-`delta')*(C4533*A4533^2)))-(B4533^2+A4533^2*B4533))/(2*(1-`delta')*B4533*A4533) local betat: display %11.5f `betax' } drop A4533 B4533 C4533 yvar4533 if `type'==2 { di _n as txt /// _col(18) "{hline 4} Bound Estimate {hline 4}" _n /// _col(1) "{hline 13}{c +}{hline 64}" _n /// _col(1) "delta" _col(14) "{c |}" _col(18) as result %11.5f `bound' _n /// as txt _col(1) "{hline 13}{c +}{hline 64}" di _n as txt /// _col(18) "{hline 4} Inputs from Regressions {hline 4}" _n /// _col(14) "{c |}" _col(21) "Coeff." _col(49) "R-Squared" _n /// _col(1) "{hline 13}{c +}{hline 64}" _n /// _col(1) "Uncontrolled" _col(14) "{c |}" _col(18) as res %12.5f `hat_beta' _col(49) %5.3f `hat_r' _n /// _col(1) as txt "Controlled" _col(14) "{c |}" _col(18) as res %12.5f `tilde_beta' _col(49) %5.3f `tilde_r' _n /// _col(1) as txt "{hline 13}{c +}{hline 64}" di _n as txt /// _col(18) "{hline 4} Other Inputs {hline 4}" _n /// _col(1) "{hline 13}{c +}{hline 64}" _n /// _col(1) "R_max" _col(14) "{c |}" _col(18) %5.3f `rmax' _n /// _col(1) "Beta" _col(14) "{c |}" _col(18) %9.6f `beta' _n /// _col(1) "M Controls" _col(14) "{c |}" _col(18) "`mcontrol'" _n /// _col(1) "{hline 13}{c +}{hline 64}" di as txt _col(5) "Reported delta matches a treatment effect of " as result `beta' if `boundx'<0 { di as txt _col(5) "Warning: Negative delta implies controls move coefficient further from null" } return scalar output=`boundx' * Note Beta At end * Not enegative detal } else if `type'==1 { di _n as txt /// _col(18) "{hline 4} Treatment Effect Estimate {hline 4}" _n /// _col(1) "{hline 13}{c +}{hline 64}" _n /// _col(1) "beta" _col(14) "{c |}" _col(18) as result %11.5f `betax' _n /// as txt _col(1) "{hline 13}{c +}{hline 64}" di _n as txt /// _col(18) "{hline 4} Inputs from Regressions {hline 4}" _n /// _col(14) "{c |}" _col(21) "Coeff." _col(49) "R-Squared" _n /// _col(1) "{hline 13}{c +}{hline 64}" _n /// _col(1) "Uncontrolled" _col(14) "{c |}" _col(18) as res %12.5f `hat_beta' _col(49) %5.3f `hat_r' _n /// _col(1) as txt "Controlled" _col(14) "{c |}" _col(18) as res %12.5f `tilde_beta' _col(49) %5.3f `tilde_r' _n /// _col(1) as txt "{hline 13}{c +}{hline 64}" di _n as txt /// _col(18) "{hline 4} Other Inputs {hline 4}" _n /// _col(1) "{hline 13}{c +}{hline 64}" _n /// _col(1) "R_max" _col(14) "{c |}" _col(18) %5.3f `rmax' _n /// _col(1) "Delta" _col(14) "{c |}" _col(18) %5.3f `delta' _n /// _col(1) "M Controls" _col(14) "{c |}" _col(18) "`mcontrol'" _n /// _col(1) "{hline 13}{c +}{hline 64}" if `delta'<0 & `delta'~=-99.2 { di as txt _col(5) "Warning: Negative delta not a standard input" } return scalar output=`betax' } } end exit