-
Notifications
You must be signed in to change notification settings - Fork 57
Quantile Regression #908
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Quantile Regression #908
Conversation
I'm confused about why this PR contains re-renders of the entire doc website; is that expected? |
Ah no that is just a mess I produced because I did not check out the new branch properly. Noticed this a few days ago but then was busy developing locally. I'll clean this up, thanks! |
3ec25bc
to
971feb8
Compare
prototyped a couple of other solvers [based on reading the QR chapter of Pouliot's book - although his recommended solution of Barrodale-Roberts was finicky in my experiments so i got rid of it, it is unlikely to beat interior-point methods anyway]. Don't want to touch your branch since there's a lot going on, but new solvers can likely go in https://gist.github.com/apoorvalal/3e18eea79c6e9e8e8ee380e0fc0bab1f Upshot is FN is very fast, and google's glop is next in speed. These simulations can go into the vignette |
Oh that's very cool to see! I initially started out with scipy's solver (that's when I still thought adding qr support would be a one-weekend task) but soon realized it was orders of magnitude slower than the R implementation. Then I started looking at the Interior Point solver and there we go ... Would it be a lot of work to add benchmarks against statsmodels? They implement a IWLS solver, and in my experience, it's quite fast for small problems. Re this branch - I'll have to do one last round of reviewing (hopefully will get there tomorrow) and then I'll merge it. Then we can open a new PR with alternative solvers? By the design of the Quantreg class, it should be fairly easy. |
Btw, if |
turns out SM's IRLS is slower than LP for small problems but scales better with problem size. gist is updated. Agree that this can be a separate followup PR; lmk when you merge [I implicitly ended up testing your interior point solver against existing solvers anyway - assume you'll test against and yea scikit uses linprog and basically implements the textbook solution almost exactly ; assume the small speedup relative to my numpy implementation is due to the use of sparse matrices. Maybe worth contributing but i feel like scikit is meant to have reference implementations rather than fast production-ready ones anyway so idk how receptive they'll be. |
Yep, wherever possible =)
The FN implementation in pyfixest can easily be translated to accommodate sparse matrices - would also be a follow up PR (the reference paper in fact has "sparse" in its title).
You might be right, but worth asking nevertheless I think! Btw will merge after the current CI run passes. |
Quantile Regression
What this PR does:
quantreg
function via the Frisch-Newton Interior Point solver as described in Koenker and Ng or Portnoy & Koenker.Example:
R instead: