Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

From |
Nick Cox <n.j.cox@durham.ac.uk> |

To |
"'statalist@hsphsun2.harvard.edu'" <statalist@hsphsun2.harvard.edu> |

Subject |
st: RE: moptimize routine that works with quantile regression? |

Date |
Mon, 17 Jan 2011 18:11:55 +0000 |

I don't have an answer to your main question, but I have three marginal observations. 1. It's debatable if not dangerous style to refer to Stata local macros deep within Mata code. Far, far better to pass their value to Mata as an argument of your function. 2. Assuming 1., for (i=1; i<=rows(y); i++) { if (y[i,1]-p[i,1] > 0) { mult[i,1] = `quart' } else { mult[i,1] = 1-`quart' } } looks as if it could be rewritten without a loop and repeated testing: mult[,1] = ((y[,1] - p[,1]) :> 0) :* quart + ((y[,1] - p[,1]) :<= 0) :* (1 - quart) The pedestrian idea here is that you mimic an elementwise conditional operator by (1 if true, 0 if false) :* (what you want if true) + (1 if false, 0 if true) :* (what you want if false) Whether mult, y, p should be separate column vectors I can't say. 3. Didn't Newton come first? Nick n.j.cox@durham.ac.uk Tatyana Deryugina I'm trying to program a quantile regression algorithm in mata, using the moptimize() routine. However, I'm having trouble finding an evaluator + technique that leads to convergence. I've read that the Frisch-Newton optimization method is fast and appropriate for quantile regression - are there any Mata routines (within moptimize or otherwise) that implement this? Here's the way I'm constructing the objective function (or the vector that moptimize will sum): for (i=1; i<=rows(y); i++) { if (y[i,1]-p[i,1] > 0) { mult[i,1] = `quart' } else { mult[i,1] = 1-`quart' } } lnf = mult:*abs(y:-p) } y is the dependent variable, p is Xb, lnf is the "likelihood" vector, and `quart' is the quartile. I tell moptimize to minimize this "likelihood". I've tried the "lf" and "gf0" evaluators and pretty much all the optimization techniques. In some cases (when there are few independent variables), I get the right answer, but for 4 dependent variables, the routine doesn't work. The reason I'm not using Stata's built-in command is because I ultimately want to bootstrap the standard errors as well as use weights. I've also found qreg and bsqreg to be very slow in my case (lots of observations and dependent variables). * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

**References**:**st: moptimize routine that works with quantile regression?***From:*Tatyana Deryugina <tatyanad@mit.edu>

- Prev by Date:
**st: moptimize routine that works with quantile regression?** - Next by Date:
**Re: st: Weighted Averages** - Previous by thread:
**st: moptimize routine that works with quantile regression?** - Next by thread:
**Re: st: moptimize routine that works with quantile regression?** - Index(es):