A couple of weeks back Roger Koenker reminded me about my post comparing quantreg vs. Rmosek. In Angrist’s application, Rmosek was faster than the traditional Barrondale and Roberts. However, Roger was curious about how it would compare to the interior point algorithms implemented using FORTRAN in quantreg. Here are his results (reproduced from RK’s blog with his permission) run on his mac mini:
Unit: milliseconds expr min lq mean median qr.mosek.dual.rep(X, y, tau = tau) 346.9841 357.2982 365.9998 364.2814 rq.fit.fnb(X, y, tau = tau) 193.7651 194.5455 202.1676 195.2470 rq.fit.sfn(Xs, y, tau = tau) 330.3882 341.1280 365.0841 349.7058 rq.fit.br(X, y, tau = tau) 7266.7237 7270.0682 7289.8437 7274.8538 uq max neval 370.6428 462.1361 100 206.7692 288.0764 100 369.8432 451.3124 100 7285.0870 7522.6136 100
qr.mosek.dual.rep is my Rmosek implementation.
rq.fit.fnb implements the basic Frisch-Newton interior point algorithm and
rq.fit.sfn it’s sparse version.
rq.fit.br uses the simplex approach of Barrondale and Roberts.
A couple of things to note
rq.fit.br (Barrondale and Roberts) is much slower, absolutely and relatively, on his implementation. Interior points perform quite well, better than Rmosek. Sparsity doesn’t help (Angrist problem is not very sparse).
Finally, and probably the most important thing of this post, go an read Roger’s blog and work. RK’s blog: ‘’Da Void of Meaning’’ is fantastic. He doesn’t post very often but it is absolutely worthwhile.
Comments and suggestions are always welcomed. You can send them to