program define ladder version 2.1 mac def _varlist "req ex max(1)" mac def _if "opt" mac def _in "opt" mac def _options "Generate(string)" parse "%_*" if "%_generat"!="" { confirm new var %_generat } mac def _v %_varlist #delimit ; di _n in gr "Transformation" _col(24) "formula" _col(44) "Chi-sq(2)" _col(58) "P(Chi-sq)" _n _dup(66) "-" ; #delimit cr quietly { if "%_in`%_if"!="" { gen _LDRWRK = %_v %_if %_in mac def _V _LDRWRK } else mac def _V %_v mac def S_3 . _ldrwrk %_V cube "%_v^3" "%_V^3" _ldrwrk %_V square "%_v^2" "%_V^2" _ldrwrk %_V raw "%_v" "%_V" _ldrwrk %_V "square-root" "sqrt(%_v)" "sqrt(%_V)" _ldrwrk %_V log "log(%_v)" "log(%_V)" _ldrwrk %_V "reciprocal root" "1/sqrt(%_v)" "1/sqrt(%_V)" _ldrwrk %_V reciprocal "1/%_v" "1/%_V" _ldrwrk %_V "reciprocal square" "1/(%_v^2)" "1/(%_V^2)" _ldrwrk %_V "reciprocal cube" "1/(%_v^3)" "1/(%_V^3)" capture drop _LDRWRK if "%_generat"!="" { rename _LDRBST %_generat mac def _lbl : var label %_generat di _n in gr "(%_generat = %_lbl %_if %_in generated)" } else drop _LDRBST } mac def S_1 mac def S_2 mac def S_3 end program define _ldrwrk version 2.1 gen _TRY = %_4 capture assert _TRY!=. if %_1!=. if _rc { #delimit ; di in gr "%_2" _col(24) "%_3" in ye _col(51) "." _col(64) "." ; #delimit cr } else { quietly _ldrtest _TRY, quiet #delimit ; di in gr "%_2" _col(24) "%_3" in ye _col(43) %9.2f %S_1 _col(60) %5.3f %S_2 ; #delimit cr if %S_1<%S_3 { mac def S_3 %S_1 capture drop _LDRBST rename _TRY _LDRBST label var _LDRBST "%_3" exit } } drop _TRY end exit /* Transformation formula Chi-sq(2) P(Chi-sq) --------------------------------------------------------------------- reciprocal square 1/(longlong^2) 123456789 12345 1234567890123456789012345678901234567890123456789012345678901234567890 1 2 3 4 5 6 */