{smcl} {* 15sep2021}{...} {cmd:help mata mm_aqreg()} {hline} {title:Title} {p 4 17 2} {bf:mm_aqreg() -- Quantile regression with absorbing factor (Machado and Santos Silva 2019)} {title:Syntax} {pstd} Simple syntax {p 8 24 2} {it:b} = {cmd:mm_aqregfit(}{it:y}{cmd:,} {it:id} [{cmd:,} {it:X}{cmd:,} {it:w}{cmd:,} {it:tau}{cmd:,} {it:sort}{cmd:,} {it:quad}]{cmd:)} {p 7 20 2}{bind: }{it:y}: {it:real colvector} containing dependent variable{p_end} {p 7 20 2}{bind: }{it:id}: {it:real colvector} containing categorical factor to be absorbed{p_end} {p 7 20 2}{bind: }{it:X}: {it:real matrix} containing predictors{p_end} {p 7 20 2}{bind: }{it:w}: {it:real colvector} containing weights; specify {cmd:1} for unweighted results{p_end} {p 7 20 2}{bind: }{it:tau}: {it:real vector} containing evaluation probabilities; default is {cmd:0.5} (median regression){p_end} {p 7 20 2}{bind: }{it:sort}: whether to sort the data; specify {cmd:0} if the data is already sorted{p_end} {p 7 20 2}{bind: }{it:quad}: whether to use quad precision when computing cross products; specify {cmd:0} to use double precision{p_end} {pstd} Advanced syntax {pmore} Setup {p 12 24 2} {it:S} = {cmd:mm_aqreg(}{it:y}{cmd:,} {it:id} [{cmd:,} {it:X}{cmd:,} {it:w}{cmd:,} {it:tau}{cmd:,} {it:sort}{cmd:,} {it:quad}]{cmd:)} {pmore} Retrieve results {p2colset 9 42 44 2}{...} {p2col:{bind: }{it:b} = {cmd:mm_aqreg_b(}{it:S}{cmd:)}}coefficients, including global constant (column vector){p_end} {p2col:{bind: }{it:xb} = {cmd:mm_aqreg_xb(}{it:S} [{cmd:,} {it:X}]{cmd:)}}a + xb, fitted values{p_end} {p2col:{bind: }{it:ue} = {cmd:mm_aqreg_ue(}{it:S}{cmd:)}}u_i + e_it, the combined residual{p_end} {p2col:{bind: }{it:xbu} = {cmd:mm_aqreg_xbu(}{it:S}{cmd:)}}a + xb + u_i, prediction including fixed effect{p_end} {p2col:{bind: }{it:u} = {cmd:mm_aqreg_u(}{it:S}{cmd:)}}u_i, the fixed effect{p_end} {p2col:{bind: }{it:e} = {cmd:mm_aqreg_e(}{it:S}{cmd:)}}e_it, the idiosyncratic error{p_end} {p2col:{bind: }{it:ymean} = {cmd:mm_aqreg_ymean(}{it:S}{cmd:)}}mean of y{p_end} {p2col:{bind: }{it:means} = {cmd:mm_aqreg_means(}{it:S}{cmd:)}}means of X (row vector){p_end} {p2col:{bind: }{it:omit} = {cmd:mm_aqreg_omit(}{it:S}{cmd:)}}column vector flagging omitted terms{p_end} {p2col:{bind: }{it:k_omit} = {cmd:mm_aqreg_k_omit(}{it:S}{cmd:)}}number of omitted terms{p_end} {p2col:{bind: }{it:N} = {cmd:mm_aqreg_N(}{it:S}{cmd:)}}number of observations (sum of weights){p_end} {p2col:{bind: }{it:levels} = {cmd:mm_aqreg_levels(}{it:S}{cmd:)}}levels (values of groups) in {it:id} {p_end} {p2col:{bind:}{it:k_levels} = {cmd:mm_aqreg_k_levels(}{it:S}{cmd:)}}number of levels (groups) in {it:id}{p_end} {p2col:{bind: }{it:n} = {cmd:mm_aqreg_n(}{it:S}{cmd:)}}number of observations per group (unweighted){p_end} {p2col:{bind: }{it:tau} = {cmd:mm_aqreg_tau(}{it:S}{cmd:)}}evaluation probabilities (row vector){p_end} {p2col:{bind: }{it:q} = {cmd:mm_aqreg_q(}{it:S}{cmd:)}}quantiles of the scaled errors (row vector){p_end} {p2col:{bind: }{it:beta} = {cmd:mm_aqreg_beta(}{it:S}{cmd:)}}coefficients from location model, including global constant{p_end} {p2col:{bind: }{it:alpha} = {cmd:mm_aqreg_alpha(}{it:S}{cmd:)}}fixed effects from location model{p_end} {p2col:{bind: }{it:gamma} = {cmd:mm_aqreg_gamma(}{it:S}{cmd:)}}coefficients from scale model, including global constant{p_end} {p2col:{bind: }{it:delta} = {cmd:mm_aqreg_delta(}{it:S}{cmd:)}}fixed effects from scale model{p_end} {pmore} If multiple evaluation probabilities are specified in {it:tau}, then {it:b}, {it:xb}, {it:ue}, {it:xbu}, {it:u}, and {it:e} will contain multiple columns, one for each evaluation probability. {pmore} {it:S} is a structure holding results and settings; declare {it:S} as {it:transmorphic}. {title:Description} {pstd} {cmd:mm_aqreg()} fits quantile regressions with an absorbing factor (i.e. fixed effects) using the method proposed by Machado and Santos Silva (2019), which is based on a location-scale model assumption. {pstd} Note that the estimator implemented in {cmd:mm_aqreg()} is different from the results one would get from {helpb qreg}, {helpb robreg:robreg q}, or {helpb mm_qr()} with dummy variables for factor levels. It is also different from the pairwise-differences estimator available in {helpb xtrobreg:xtrobreg q}. See Machado and Santos Silva (2019) for a discussion of the assumptions and properties of the estimator implemented in {cmd:mm_aqreg()}. {pstd} {cmd:mm_aqreg()} uses quad precision when computing X'X and X'y. Specifying {it:quad}=0 will make {cmd:mm_aqreg()} faster, but less precise. Use {it:quad}=0 only if your data is well-behaved (reasonable means, not much collinearity). {pstd} A Stata implementation of the estimator by Machado and Santos Silva (2019) is available as {helpb xtqreg} (Machado and Santos Silva 2018). {title:Examples} {pstd} If you are only interested in the coefficients, you can use {cmd:mm_aqregfit()} (simple syntax) to obtain a fit without much typing: . {stata sysuse auto, clear} . {stata "mata:"} : {stata y = st_data(., "price")} : {stata X = st_data(., "weight length")} : {stata id = st_data(., "headroom")} : {stata mm_aqregfit(y, id, X)} : {stata end} {pstd} For more sophisticated applications, use the advanced syntax. Function {cmd:mm_aqreg()} defines the problem and performs the main calculations. You can then use functions such as {cmd:mm_aqreg_b()}, {cmd:mm_aqreg_xb()}, etc. to obtain results. . {stata "mata:"} : {stata S = mm_aqreg(y, id, X)} : {stata mm_aqreg_b(S)} (coefficients) : {stata mm_aqreg_levels(S)} (levels of id variable) : {stata end} {pstd} For efficient computation of multiple models across different probabilities, specify argument {it:tau} as a vector instead of applying {cmd:mm_aqreg()} for each probability individually: . {stata "mata:"} : {stata mm_aqregfit(y, id, X, 1, (.25, .5, .75))} : {stata end} {title:References} {phang} Machado, J.A.F., J.M.C Santos Silva. 2019. Quantiles via moments. Journal of Econometrics 213:145-173. {browse "http://doi.org/10.1016/j.jeconom.2019.04.009"} {p_end} {phang} Machado, J.A.F., J.M.C Santos Silva. 2018. XTQREG: Stata module to compute quantile regression with fixed effects. Statistical Software Components S458523, Boston College Department of Economics. {browse "http://ideas.repec.org/c/boc/bocode/s458523.html"} {p_end} {title:Diagnostics} {pstd} {cmd:mm_aqreg()} returns invalid results (or may break) if {it:y}, {it:X}, or {it:w} contain missing values. {pstd} Coefficients corresponding to omitted (collinear) terms will be set to zero. {title:Source code} {pstd} {help moremata_source##mm_aqreg:mm_aqreg.mata} {title:Author} {pstd} Ben Jann, University of Bern, ben.jann@unibe.ch {title:Also see} {p 4 13 2} Online: help for {helpb moremata}, {helpb mf_mm_qr:mm_qr()}, {helpb mf_mm_areg:mm_areg()}, {helpb qreg} {p 4 13 2} From the SSC Archive: {helpb xtqreg}, {helpb xtrobreg}, {helpb robreg}