Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- set.seed(1)
- n=500
- p=1
- a=rnorm(n*p, mean = 10, sd = 1)
- x=matrix(a,n,p)
- beta=rnorm(p,1,1)
- beta=matrix(beta,p,1)
- y=x%*%beta-matrix(rnorm(n,0.1,1),n,1)
- tau=0.01 # example tau, here to get underapproximation
- library(microbenchmark)
- # quantreg solution
- library(quantreg)
- microbenchmark(rq(y~0+x, tau)) # quantreg, 1.0 ms, beta=-0.023
- # using Brent line search, using [0, least square estimate] search interval
- quantloss = function(beta, x, y, tau) { r=y-beta*x # quantile loss function
- sum(r*(r>0) - (1-tau)*r) }
- microbenchmark(optimize(quantloss,
- interval=c(0, mean(x*y)/mean(x*x)), # mean(x*y)/mean(x*x) = least square beta
- x=x, y=y, tau=tau)$minimum) # 227 ยตs, beta=0.84
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement