capture program drop adjtest program define adjtest local lhs $lhs local rhs $rhs local group $group local adjust $adjust local filename $filename local group $group local incgrp $incgrp local group1 $group1 local method $method local reps $reps local reduced $reduced *local constraint $constraint local grponlysel $grponlysel forval i = 1/99 { local q = `i'/100 /* quantile to be estimated */ if `"`grponlysel'"'!="" { if `"`adjust'"'!=""&`"`2'"'=="f" { capture drop `lhs'_adj if `"`2'"'=="p"{ quietly: qreg `lhs' `rhs' `adjust' `adjust'2, quantile(`q') nolog } if `"`2'"'=="i"{ quietly: qreg `lhs' `rhs' `adjust' `adjust'2 `group', quantile(`q') nolog } if `"`2'"'=="g"{ quietly: qreg `lhs' `rhs' `adjust' `adjust'2 if `group'==1, quantile(`q') nolog } if `"`2'"'=="f"{ quietly: qreg `lhs' `rhs' `adjust' `adjust'2 if `group'==0, quantile(`q') nolog } if `"`2'"'=="m"{ quietly: qreg `lhs' `rhs' `adjust' `adjust'2 if `group'==1, quantile(`q') nolog } matrix E=e(b) scalar cons=_b[_cons] scalar beta1=_b[`adjust'] scalar ps1=abs(_b[`adjust']/_se[`adjust']) scalar beta2=_b[`adjust'2] scalar ps2=abs(_b[`adjust'2]/_se[`adjust'2]) cext `1' `2' 2 if `method'==2&ps1>1.96&ps2>1.96{ ge `lhs'_adj=`lhs'-((cons-beta0)+beta1*`adjust'+beta2*`adjust'2) if `"`2'"'=="p"{ quietly: qreg `lhs'_adj `rhs', quantile(`q') nolog } if `"`2'"'=="i"{ quietly: qreg `lhs'_adj `rhs' `group', quantile(`q') nolog } if `"`2'"'=="g"{ quietly: qreg `lhs'_adj `rhs' if `group'==1, quantile(`q') nolog } if `"`2'"'=="f"{ quietly: qreg `lhs'_adj `rhs' if `group'==0, quantile(`q') nolog } if `"`2'"'=="m"{ quietly: qreg `lhs'_adj `rhs' if `group'==1, quantile(`q') nolog } } if ps1<1.96|ps2<1.96 { capture drop `lhs'_adj if `"`2'"'=="p"{ quietly: qreg `lhs' `rhs', quantile(`q') nolog } if `"`2'"'=="i"{ quietly: qreg `lhs' `rhs' `group', quantile(`q') nolog } if `"`2'"'=="g"{ quietly: qreg `lhs' `rhs' if `group'==1, quantile(`q') nolog } if `"`2'"'=="f"{ quietly: qreg `lhs' `rhs' if `group'==0, quantile(`q') nolog } if `"`2'"'=="m"{ quietly: qreg `lhs' `rhs' if `group'==1, quantile(`q') nolog } if `method'==2{ if `"`1'"'=="m"{ predict x`1'b`2' if `group'==1 } else{ predict x`1'b`2' if `group'==0 } } scalar sel=0 } else { if `method'==2&ps1>1.96&ps2>1.96{ if `"`1'"'=="m"{ predict x`1'b`2' if `group'==1 } else{ predict x`1'b`2' if `group'==0 } } scalar sel=1 } if `method'==1{ matrix E=e(b) quietly { ge x`1'b`2'=0 scalar betas = colsof(E)-sel-1 matrix EB = E[1,1..betas] foreach var of local rhs { preserve drop * svmat EB, names(col) su `var' scalar beta`var' = r(mean) restore if `"`1'"'=="m"{ ge b`var' = beta`var'*`var' if `group'==1 replace x`1'b`2'=b`var'+x`1'b`2' if `group'==1 } else{ ge b`var' = beta`var'*`var' if `group'==0 replace x`1'b`2'=b`var'+x`1'b`2' if `group'==0 } } qreg `lhs' `reduced' if $constraint, quantile(`q') nolog scalar beta0=_b[_cons] if `"`1'"'=="m" { replace x`1'b`2'=beta0+x`1'b`2' if `group'==1 } else { replace x`1'b`2'=beta0+x`1'b`2' if `group'==0 } } } else { if `"`2'"'=="p"{ quietly: qreg `lhs' `rhs', quantile(`q') nolog if `"`1'"'=="m"{ predict x`1'b`2' if `group'==1 } else{ predict x`1'b`2' if `group'==0 } } if `"`2'"'=="i"{ quietly: qreg `lhs' `rhs' `group', quantile(`q') nolog if `"`1'"'=="m"{ predict x`1'b`2' if `group'==1 } else{ predict x`1'b`2' if `group'==0 } } if `"`2'"'=="g"{ quietly: qreg `lhs' `rhs' if `group'==1, quantile(`q') nolog if `"`1'"'=="m"{ predict x`1'b`2' if `group'==1 } else{ predict x`1'b`2' if `group'==0 } } if `"`2'"'=="f"{ quietly: qreg `lhs' `rhs' if `group'==0, quantile(`q') nolog if `"`1'"'=="m"{ predict x`1'b`2' if `group'==1 } else{ predict x`1'b`2' if `group'==0 } } if `"`2'"'=="m"{ quietly: qreg `lhs' `rhs' if `group'==1, quantile(`q') nolog if `"`1'"'=="m"{ predict x`1'b`2' if `group'==1 } else{ predict x`1'b`2' if `group'==0 } } } } } else { if `"`adjust'"'!="" { capture drop `lhs'_adj if `"`2'"'=="p" { quietly: qreg `lhs' `rhs' `adjust' `adjust'2, quantile(`q') nolog } if `"`2'"'=="i" { quietly: qreg `lhs' `rhs' `adjust' `adjust'2 `group', quantile(`q') nolog } if `"`2'"'=="g" { quietly: qreg `lhs' `rhs' `adjust' `adjust'2 if `group'==1, quantile(`q') nolog } if `"`2'"'=="f" { quietly: qreg `lhs' `rhs' `adjust' `adjust'2 if `group'==0, quantile(`q') nolog } if `"`2'"'=="m" { quietly: qreg `lhs' `rhs' `adjust' `adjust'2 if `group'==1, quantile(`q') nolog } matrix E=e(b) scalar cons=_b[_cons] scalar beta1=_b[`adjust'] scalar ps1=abs(_b[`adjust']/_se[`adjust']) scalar beta2=_b[`adjust'2] scalar ps2=abs(_b[`adjust'2]/_se[`adjust'2]) cext `1' `2' 2 if `method'==2&ps1>1.96&ps2>1.96{ ge `lhs'_adj=`lhs'-((cons-beta0)+beta1*`adjust'+beta2*`adjust'2) if `"`2'"'=="p"{ quietly: qreg `lhs'_adj `rhs', quantile(`q') nolog } if `"`2'"'=="i"{ quietly: qreg `lhs'_adj `rhs' `group', quantile(`q') nolog } if `"`2'"'=="g"{ quietly: qreg `lhs'_adj `rhs' if `group'==1, quantile(`q') nolog } if `"`2'"'=="f"{ quietly: qreg `lhs'_adj `rhs' if `group'==0, quantile(`q') nolog } if `"`2'"'=="m"{ quietly: qreg `lhs'_adj `rhs' if `group'==1, quantile(`q') nolog } } if ps1<1.96|ps2<1.96 { capture drop `lhs'_adj if `"`2'"'=="p" { quietly: qreg `lhs' `rhs', quantile(`q') nolog } if `"`2'"'=="i" { quietly: qreg `lhs' `rhs' `group', quantile(`q') nolog } if `"`2'"'=="g" { quietly: qreg `lhs' `rhs' if `group'==1, quantile(`q') nolog } if `"`2'"'=="f" { quietly: qreg `lhs' `rhs' if `group'==0, quantile(`q') nolog } if `"`2'"'=="m" { quietly: qreg `lhs' `rhs' if `group'==1, quantile(`q') nolog } if `method'==2{ if `"`1'"'=="m"{ quietly: predict x`1'b`2' if `group'==1 } else{ quietly: predict x`1'b`2' if `group'==0 } } scalar sel=0 } else { if `method'==2&ps1>1.96&ps2>1.96{ if `"`1'"'=="m"{ quietly: predict x`1'b`2' if `group'==1 } else{ quietly: predict x`1'b`2' if `group'==0 } } scalar sel=2 } if `method'==1{ matrix E=e(b) quietly { ge x`1'b`2'=0 scalar betas = colsof(E)-sel-1 matrix EB = E[1,1..betas] foreach var of local rhs { preserve drop * svmat EB, names(col) su `var' scalar beta`var' = r(mean) restore if `"`1'"'=="m"{ ge b`var' = beta`var'*`var' if `group'==1 replace x`1'b`2'=b`var'+x`1'b`2' if `group'==1 } else{ ge b`var' = beta`var'*`var' if `group'==0 replace x`1'b`2'=b`var'+x`1'b`2' if `group'==0 } } qreg `lhs' `reduced' if $constraint, quantile(`q') nolog scalar beta0=_b[_cons] if `"`1'"'=="m" { replace x`1'b`2'=beta0+x`1'b`2' if `group'==1 } else { replace x`1'b`2'=beta0+x`1'b`2' if `group'==0 } } } } else { if `"`2'"'=="p"{ quietly: qreg `lhs' `rhs', quantile(`q') nolog if `"`1'"'=="m"{ quietly: predict x`1'b`2' if `group'==1 } else{ quietly: predict x`1'b`2' if `group'==0 } } if `"`2'"'=="i"{ quietly: qreg `lhs' `rhs' `group', quantile(`q') nolog if `"`1'"'=="m"{ quietly: predict x`1'b`2' if `group'==1 } else{ quietly: predict x`1'b`2' if `group'==0 } } if `"`2'"'=="g"{ quietly: qreg `lhs' `rhs' if `group'==1, quantile(`q') nolog if `"`1'"'=="m"{ quietly: predict x`1'b`2' if `group'==1 } else{ quietly: predict x`1'b`2' if `group'==0 } } if `"`2'"'=="f"{ quietly: qreg `lhs' `rhs' if `group'==0, quantile(`q') nolog if `"`1'"'=="m"{ quietly: predict x`1'b`2' if `group'==1 } else{ quietly: predict x`1'b`2' if `group'==0 } } if `"`2'"'=="m"{ quietly: qreg `lhs' `rhs' if `group'==1, quantile(`q') nolog if `"`1'"'=="m"{ quietly: predict x`1'b`2' if `group'==1 } else{ quietly: predict x`1'b`2' if `group'==0 } } } } preserve quietly { keep if x`1'b`2'~=. /* keep valid predictions */ keep pid x`1'b`2' /* throw away other vars */ save tmp/x`1'b`2'`i', replace } di "`i'% of x`1'b`2' created" restore if `"`adjust'"'!="" { if `method'==2{ drop x`1'b`2'/* b* */ } if `method'==1{ drop x`1'b`2' b* } } else { drop x`1'b`2' } } end