Hello Everyone,

 

I'm currently learning about quantile regressions. I've been using an
optimizer to compare with the rq() command for quantile regression. 

When I run the code, the results show that my coefficients are consistent
with rq(), but the intercept term can vary by a lot.

I don't think my optimizer code is wrong and suspects it has something to do
with the starting values.

The results seems very sensitive to different starting values and I don't
know how to make sense of it.

 

Advice from the community would be greatly appreciated.

 

Sincerely,


Kevin Chang

 

###################### CODE Below ###########################

 

library(quantreg)

data(engel)

y<-cbind(engel[,2])

x<-cbind(rep(1,length(engel[,1])),engel[,1])

x1<-cbind(engel[,1])

nn<-nrow(engel)

nn

 

bhat.ls<-solve(t(x)%*%x)%*%t(x)%*%y

#bhat.ls

 

# QUANTILES

quant=.25

 

fr.1=function(bhat.opt)

{

  uu=y-x%*%bhat.opt

  sample.cond.quantile=quantile(uu,quant)

  w.less=rep(0,nn)

  for(ii in 1:nn){if(uu[ii]<sample.cond.quantile) w.less[ii]=1}

  

  sum((quant-1)*sum((y-x%*%bhat.opt)*w.less) #negative residuals

      +quant*sum((y-x%*%bhat.opt)*(1-w.less))) #positive residuals

}

start<-c(0,0)

result=optim(start,fr.1)

bhat.cond=result$par

 

#Quantile Command Results

fit.temp=rq(y~x1,tau=quant)

fit.temp

 

#OPTIMIZER Results

bhat.cond

 

#OLS Command Results

mean=lm(y~x1)

mean


	[[alternative HTML version deleted]]

