program define cdfquantreg01_p version 15.0 /* I have to include xb and stdp because _pred_se does only equation(1) */ local myopts "Xb Stdp Qtile Pctle(real -1)" _pred_se "`myopts'" `0' if `s(done)' exit local vtyp `s(typ)' local varn `s(varn)' local 0 `"`s(rest)'"' syntax [if] [in] [, `myopts'] marksample touse, novarlist /* concatenate switch options together */ local type "`xb'`stdp'`qtile'`pctle(real -1)'" /* Estimate quantiles if qtile is requested */ quietly { _predict xb if `touse', equation(#1) _predict xd if `touse', equation(#2) if `"`e(k_eq)'"'=="3" { _predict xw if `touse', equation(#3) } if "`qtile'" != "" { tempvar qtile w reptile gen `qtile' = 0.5 if `pctle'==-1 { cumul `e(depvar)', gen(`reptile') replace `qtile' = (`reptile'*(_N-1))*((0.999999 - 1e-06)/(_N-1)) + 1e-06 if `touse' } else { replace `qtile' = `pctle' if `touse' if `pctle' < 0|`pctle' > 1 { display as error `"Argument out of [0,1] range"' exit 198 } } } } quietly { if `"`e(user)'"'=="asinhcauchyinnerw2" { gen fitted = 1/2 - atan(sinh((xb) - asinh(((1 - 2*`qtile')*(exp(xd)))/(2*(-1 + `qtile')*`qtile'))))/_pi } if `"`e(user)'"'=="asinhcauchyouterw2" { gen fitted = 1/2 - atan((exp(xd))*sinh((xb) - asinh((1 - 2*`qtile')/(2*(-1 + `qtile')*`qtile'))))/_pi } if `"`e(user)'"'=="asinhcauchyinnerv2" { gen fitted = (_pi - 2*atan(((exp(xd)) - 2*`qtile'*(exp(xd)))/(2*`qtile' - 2*`qtile'^2)))/((1 + exp(xb))*_pi + 2*(-1 + exp(xb))*atan(((exp(xd)) - 2*`qtile'*(exp(xd)))/(2*`qtile' - 2*`qtile'^2))) } if `"`e(user)'"'=="asinhcauchyouterv2" { gen fitted = 1/2 + atan(((exp(2*(xb))*(-1 + `qtile')^2 - `qtile'^2)*(exp(xd)))/(exp(xb)*(2*(-1 + `qtile')*`qtile')))/_pi } if `"`e(user)'"'=="cauchitasinhinnerw2" { gen fitted = 1/(1 + exp(asinh(sinh((xb) - asinh((exp(xd))*tan((1/2)*(-_pi + 2*_pi*`qtile'))))))) } if `"`e(user)'"'=="cauchitasinhouterw2" { gen fitted = 1/(1 + exp(asinh((exp(xd))*sinh((xb) - asinh(tan((1/2)*(-_pi + 2*_pi*`qtile'))))))) } if `"`e(user)'"'=="cauchitasinhinnerv2" { gen fitted = 1/((1 + exp(-asinh((exp(xd))*tan((1/2)*(-_pi + 2*_pi*`qtile')))))* (exp(xb) + 1/(1 + exp(-asinh((exp(xd))*tan((1/2)*(-_pi + 2*_pi*`qtile'))))) - exp(xb)/(1 + exp(-asinh((exp(xd))*tan((1/2)*(-_pi + 2*_pi*`qtile'))))))) } if `"`e(user)'"'=="cauchitasinhouterv2" { gen fitted = 1/(1 + exp(-asinh((exp(xd))*tan((1/2)*(-_pi + (2*_pi*`qtile')/(exp(xb) + `qtile' - exp(xb)*`qtile')))))) } if `"`e(user)'"'=="cauchitcauchyinnerw2" { gen fitted = 1/2 - atan(sinh((xb) - asinh((exp(xd))*tan((1/2)*(-_pi + 2*_pi*`qtile')))))/_pi } if `"`e(user)'"'=="cauchitcauchyouterw2" { gen fitted = 1/2 - atan((exp(xd))*sinh((xb) - asinh(tan((1/2)*(-_pi + 2*_pi*`qtile')))))/_pi } if `"`e(user)'"'=="cauchitcauchyinnerv2" { gen fitted = (1/2 + atan((exp(xd))*tan((1/2)*(-_pi + 2*_pi*`qtile')))/_pi)/(1/2 + exp(xb) + atan((exp(xd))*tan((1/2)*(-_pi + 2*_pi*`qtile')))/_pi - exp(xb)*(1/2 + atan((exp(xd))*tan((1/2)*(-_pi + 2*_pi*`qtile')))/_pi)) } if `"`e(user)'"'=="cauchitcauchyouterv2" { gen fitted = 1/2 + atan((exp(xd))*tan((1/2)*(-_pi + (2*_pi*`qtile')/(exp(xb) + `qtile' - exp(xb)*`qtile'))))/_pi } if `"`e(user)'"'=="t2t2innerw2" { gen fitted = 1/2 - sinh((xb) - asinh((exp(xd))*( sign(2*`qtile'-1)*(sqrt((1 - 2*`qtile')^2)/(sqrt(2)*sqrt((1 - `qtile')*`qtile'))))))/(2*sqrt(2 + sinh((xb) - asinh((exp(xd))*( sign(2*`qtile'-1)*(sqrt((1 - 2*`qtile')^2)/(sqrt(2)*sqrt((1 - `qtile')*`qtile'))))))^2)) } if `"`e(user)'"'=="t2t2outerw2" { gen fitted = 1/2 - ((exp(xd))*sinh((xb) - asinh(sign(2*`qtile'-1)*(sqrt((1 - 2*`qtile')^2)/(sqrt(2)*sqrt((1 - `qtile')*`qtile'))))))/(2*sqrt(2 + (exp(xd))^2*sinh((xb) - asinh(sign(2*`qtile'-1)*(sqrt((1 - 2*`qtile')^2)/(sqrt(2)*sqrt((1 - `qtile')*`qtile')))))^2)) } if `"`e(user)'"'=="t2t2innerv2" { gen fitted = (1/2 + ((exp(xd))*( sign(2*`qtile'-1)*(sqrt((1 - 2*`qtile')^2)/(sqrt(2)*sqrt((1 - `qtile')*`qtile')))))/(2*sqrt(2 + (exp(xd))^2*(sign(2*`qtile'-1)*(sqrt((1 - 2*`qtile')^2)/(sqrt(2)*sqrt((1 - `qtile')*`qtile'))))^2)))/(1/2 + exp(xb) + ((exp(xd))*(sign(2*`qtile'-1)*(sqrt((1 - 2*`qtile')^2)/(sqrt(2)*sqrt((1 - `qtile')*`qtile')))))/(2*sqrt(2 + (exp(xd))^2*(sign(2*`qtile'-1)*(sqrt((1 - 2*`qtile')^2)/(sqrt(2)*sqrt((1 - `qtile')*`qtile'))))^2)) - exp(xb)*(1/2 + ((exp(xd))*(sign(2*`qtile'-1)*(sqrt((1 - 2*`qtile')^2)/(sqrt(2)*sqrt((1 - `qtile')*`qtile')))))/(2*sqrt(2 + (exp(xd))^2*(sign(2*`qtile'-1)*(sqrt((1 - 2*`qtile')^2)/(sqrt(2)*sqrt((1 - `qtile')*`qtile'))))^2)))) } if `"`e(user)'"'=="t2t2outerv2" { gen fitted = 1/2 + ((exp(xd))*(sign(2*`qtile'/(exp(xb) + `qtile' - exp(xb)*`qtile') - 1)*(sqrt((1 - (2*`qtile')/(exp(xb) + `qtile' - exp(xb)*`qtile'))^2)/(sqrt(2)*sqrt((`qtile'*(1 - `qtile'/(exp(xb) + `qtile' - exp(xb)*`qtile')))/(exp(xb) + `qtile' - exp(xb)*`qtile'))))))/(2*sqrt(2 + (exp(xd))^2*(sign(2*`qtile'/(exp(xb) + `qtile' - exp(xb)*`qtile') - 1)*(sqrt((1 - (2*`qtile')/(exp(xb) + `qtile' - exp(xb)*`qtile'))^2)/(sqrt(2)*sqrt((`qtile'*(1 - `qtile'/(exp(xb) + `qtile' - exp(xb)*`qtile')))/(exp(xb) + `qtile' - exp(xb)*`qtile')))))^2)) } if `"`e(user)'"'=="asinhasinhinnerw2" { gen fitted = 1/(1 + exp(asinh(sinh((xb) - asinh(((1 - 2*`qtile')*(exp(xd)))/(2*(-1 + `qtile')*`qtile')))))) } if `"`e(user)'"'=="asinhasinhouterw2" { gen fitted = 1/(1 + exp(asinh((exp(xd))*sinh((xb) - asinh((1 - 2*`qtile')/(2*(-1 + `qtile')*`qtile')))))) } if `"`e(user)'"'=="asinhasinhinnerv2" { gen fitted = 1/(1 + exp((xb) + asinh(((exp(xd)) - 2*`qtile'*(exp(xd)))/(2*`qtile' - 2*`qtile'^2)))) } if `"`e(user)'"'=="asinhasinhouterv2" { gen fitted = 1/(1 + exp(-asinh(((exp(xb) + `qtile' - exp(xb)*`qtile')*(1 - (2*`qtile')/(exp(xb) + `qtile' - exp(xb)*`qtile'))*(exp(xd)))/(2*`qtile'*(-1 + `qtile'/(exp(xb) + `qtile' - exp(xb)*`qtile')))))) } if `"`e(user)'"'=="asinhcauchyinnerw3" { gen fitted = 1/2 - atan(sinh((xd) - asinh((xb) + ((1 - 2*`qtile')*(exp(xw)))/(2*(-1 + `qtile')*`qtile'))))/_pi } if `"`e(user)'"'=="asinhcauchyouterw3" { gen fitted = 1/2 + atan((xb) - (exp(xw))*sinh((xd) - asinh((1 - 2*`qtile')/(2*(-1 + `qtile')*`qtile'))))/_pi } if `"`e(user)'"'=="asinhcauchyinnerv3" { gen fitted = (_pi + 2*atan((xb) + ((exp(xw)) - 2*`qtile'*(exp(xw)))/(2*(-1 + `qtile')*`qtile')))/((1 + exp(xd))*_pi - 2*(-1 + exp(xd))*atan((xb) + ((exp(xw)) - 2*`qtile'*(exp(xw)))/(2*(-1 + `qtile')*`qtile'))) } if `"`e(user)'"'=="asinhcauchyouterv3" { gen fitted = 1/2 + atan((xb) + (exp(xd)*(-1 + `qtile')*(exp(xw)))/(2*`qtile') + (`qtile'*(exp(xw)))/(exp(xd)*(2 - 2*`qtile')))/_pi } if `"`e(user)'"'=="cauchitcauchyinnerw3" { gen fitted = 1/2 - atan(sinh((xd) - asinh((xb) + (exp(xw))*tan((1/2)*(-_pi + 2*_pi*`qtile')))))/_pi } if `"`e(user)'"'=="cauchitcauchyouterw3" { gen fitted = 1/2 + atan((xb) - (exp(xw))*sinh((xd) - asinh(tan((1/2)*(-_pi + 2*_pi*`qtile')))))/_pi } if `"`e(user)'"'=="cauchitcauchyinnerv3" { gen fitted = (1/2 + atan((xb) + (exp(xw))*tan((1/2)*(-_pi + 2*_pi*`qtile')))/_pi)/(1/2 + exp(xd) + atan((xb) + (exp(xw))*tan((1/2)*(-_pi + 2*_pi*`qtile')))/_pi - exp(xd)*(1/2 + atan((xb) + (exp(xw))*tan((1/2)*(-_pi + 2*_pi*`qtile')))/_pi)) } if `"`e(user)'"'=="cauchitcauchyouterv3" { gen fitted = 1/2 + atan((xb) + (exp(xw))*tan((1/2)*(-_pi + (2*_pi*`qtile')/(exp(xd) + `qtile' - exp(xd)*`qtile'))))/_pi } if `"`e(user)'"'=="cauchitasinhinnerw3" { gen fitted = 1/(1 + exp(asinh(sinh((xd) - asinh((xb) + (exp(xw))*tan((1/2)*(-_pi + 2*_pi*`qtile'))))))) } if `"`e(user)'"'=="cauchitasinhouterw3" { gen fitted = 1/(1 + exp(-asinh((xb) - (exp(xw))*sinh((xd) - asinh(tan((1/2)*(-_pi + 2*_pi*`qtile'))))))) } if `"`e(user)'"'=="cauchitasinhinnerv3" { gen fitted = 1/((1 + exp(-asinh((xb) + (exp(xw))*tan((1/2)*(-_pi + 2*_pi*`qtile')))))*(exp(xd) + 1/(1 + exp(-asinh((xb) + (exp(xw))*tan((1/2)*(-_pi + 2*_pi*`qtile'))))) - exp(xd)/(1 + exp(-asinh((xb) + (exp(xw))*tan((1/2)*(-_pi + 2*_pi*`qtile'))))))) } if `"`e(user)'"'=="cauchitasinhouterv3" { gen fitted = 1/(1 + exp(-asinh((xb) + (exp(xw))*tan((1/2)*(-_pi + (2*_pi*`qtile')/(exp(xd) + `qtile' - exp(xd)*`qtile')))))) } if `"`e(user)'"'=="asinhasinhinnerw3" { gen fitted = 1/(1 + exp(asinh(sinh((xd) - asinh((xb) + ((1 - 2*`qtile')*(exp(xw)))/(2*(-1 + `qtile')*`qtile')))))) } if `"`e(user)'"'=="asinhasinhouterw3" { gen fitted = 1/(1 + exp(-asinh((xb) - (exp(xw))*sinh((xd) - asinh((1 - 2*`qtile')/(2*(-1 + `qtile')*`qtile')))))) } if `"`e(user)'"'=="asinhasinhinnerv3" { gen fitted = 1/((1 + exp(-asinh((xb) + ((1 - 2*`qtile')*(exp(xw)))/(2*(-1 + `qtile')*`qtile'))))*(exp(xd) + 1/(1 + exp(-asinh((xb) + ((1 - 2*`qtile')*(exp(xw)))/(2*(-1 + `qtile')*`qtile')))) - exp(xd)/(1 + exp(-asinh((xb) + ((1 - 2*`qtile')*(exp(xw)))/(2*(-1 + `qtile')*`qtile')))))) } if `"`e(user)'"'=="asinhasinhouterv3" { gen fitted = 1/(1 + exp(-asinh((xb) + ((exp(xd) + `qtile' - exp(xd)*`qtile')*(1 - (2*`qtile')/(exp(xd) + `qtile' - exp(xd)*`qtile'))*(exp(xw)))/(2*`qtile'*(-1 + `qtile'/(exp(xd) + `qtile' - exp(xd)*`qtile')))))) } if `"`e(user)'"'=="t2t2innerw3" { gen fitted = 1/2 - sinh((xd) - asinh((xb) + (exp(xw))*sign(2*`qtile'-1)*(sqrt((1 - 2*`qtile')^2)/(sqrt(2)*sqrt((1 - `qtile')*`qtile')))))/(2*sqrt(2 + sinh((xd) - asinh((xb) + (exp(xw))*sign(2*`qtile'-1)* (sqrt((1 - 2*`qtile')^2)/(sqrt(2)*sqrt((1 - `qtile')*`qtile'))))))^2) } if `"`e(user)'"'=="t2t2outerw3" { gen fitted = 1/2 + ((xb) - (exp(xw))*sinh((xd) - asinh(sign(2*`qtile'-1)*(sqrt((1 - 2*`qtile')^2)/(sqrt(2)*sqrt((1 - `qtile')*`qtile'))))))/(2*sqrt(2 + ((xb) - (exp(xw))*sinh((xd) - asinh(sign(2*`qtile'-1)*(sqrt((1 - 2*`qtile')^2)/(sqrt(2)*sqrt((1 - `qtile')*`qtile'))))))^2)) } if `"`e(user)'"'=="t2t2innerv3" { gen fitted = (1/2 + ((xb) + (exp(xw))*sign(2*`qtile'-1)*(sqrt((1 - 2*`qtile')^2)/(sqrt(2)*sqrt((1 - `qtile')*`qtile')))))/(2*sqrt(2 + ((xb) + (exp(xw))*sign(2*`qtile'-1)*(sqrt((1 - 2*`qtile')^2)/(sqrt(2)*sqrt((1 - `qtile')*`qtile'))))^2))/(1/2 + exp(xd) + ((xb) + (exp(xw))*sign(2*`qtile'-1)*(sqrt((1 - 2*`qtile')^2)/(sqrt(2)*sqrt((1 - `qtile')*`qtile')))))/(2*sqrt(2 + ((xb) + (exp(xw))*sign(2*`qtile'-1)*(sqrt((1 - 2*`qtile')^2)/(sqrt(2)*sqrt((1 - `qtile')*`qtile'))))))/(2*sqrt(2 + ((xb) + (exp(xw))*sign(2*`qtile'-1)*(sqrt((1 - 2*`qtile')^2)/(sqrt(2)*sqrt((1 - `qtile')*`qtile'))))^2)) } if `"`e(user)'"'=="t2t2outerv3" { if `qtile'/(exp(xd) + `qtile' - exp(xd)*`qtile') < 0.5 { gen fitted = 1/2 + ((xb) + (exp(xw))*(-1)*(sqrt((1 - (2*`qtile')/(exp(xd) + `qtile' - exp(xd)*`qtile'))^2)/(sqrt(2)*sqrt((`qtile'*(1 - `qtile'/(exp(xd) + `qtile' - exp(xd)*`qtile')))/(exp(xd) + `qtile' - exp(xd)*`qtile')))))/(2*sqrt(2 + ((xb) + (exp(xw))*(-1)*(sqrt((1 - (2*`qtile')/(exp(xd) + `qtile' - exp(xd)*`qtile'))^2)/(sqrt(2)*sqrt((`qtile'*(1 - `qtile'/(exp(xd) + `qtile' - exp(xd)*`qtile')))/(exp(xd) + `qtile' - exp(xd)*`qtile')))))^2)) } if `qtile'/(exp(xd) + `qtile' - exp(xd)*`qtile') >= 0.5 { gen fitted = 1/2 + ((xb) + (exp(xw))*(1)*(sqrt((1 - (2*`qtile')/(exp(xd) + `qtile' - exp(xd)*`qtile'))^2)/(sqrt(2)*sqrt((`qtile'*(1 - `qtile'/(exp(xd) + `qtile' - exp(xd)*`qtile')))/(exp(xd) + `qtile' - exp(xd)*`qtile')))))/(2*sqrt(2 + ((xb) + (exp(xw))*(1)*(sqrt((1 - (2*`qtile')/(exp(xd) + `qtile' - exp(xd)*`qtile'))^2)/(sqrt(2)*sqrt((`qtile'*(1 - `qtile'/(exp(xd) + `qtile' - exp(xd)*`qtile')))/(exp(xd) + `qtile' - exp(xd)*`qtile')))))^2)) } } } /* Generate residuals only if estimating casewise quantiles */ quietly { if `pctle'==-1 { gen residuals = fitted - `e(depvar)' if `touse' } } /* Get rid of the fitted and residuals if not requested */ if "`qtile'" == "" { drop fitted drop residuals } /* Get the standard errors of predictions if stdp requested */ if "`stdp'" != "" { _predict seb if `touse', stdp equation(#1) _predict sed if `touse', stdp equation(#2) if `"`e(k_eq)'"'=="3" { _predict sew if `touse', stdp equation(#3) } } end