Eric Green - 3 years ago 159

R Question

I'd like to extract coefficients and upper and lower bounds from a quantile regression using the

`quantreg`

`data(engel)`

attach(engel)

taus <- c(.05,.1,.25,.75,.9,.95)

f <- rq((foodexp)~(income),tau=taus)

sf <- summary(f)

sf[1]

#[[1]]

#Call: rq(formula = (foodexp) ~ (income), tau = taus)

#tau: [1] 0.05

#Coefficients:

# coefficients lower bd upper bd

#(Intercept) 124.88004 98.30212 130.51695

#income 0.34336 0.34333 0.38975

I know I can use

`coefficients()`

`cf <- t(data.frame(coefficients(f))) # transpose for better arrangement`

cf

# (Intercept) income

#tau..0.05 124.88004 0.3433611

#tau..0.10 110.14157 0.4017658

#tau..0.25 95.48354 0.4741032

#tau..0.75 62.39659 0.6440141

#tau..0.90 67.35087 0.6862995

#tau..0.95 64.10396 0.7090685

But I can't figure out how to get the upper/lower bounds that appear in

`summary()`

`str(sf)`

Ultimately, I'd like to put taus, coefficients, and upper/lower bounds in a dataframe for further processing.

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

I'm assuming you just want the coefficients on the non-intercept term. How about this

```
sapply(sf, function(x) c(tau=x$tau, x$coefficients[-1, ]))
```

That will iterate over the different levels of `tau`

and extract the intervals for the coefficients

```
[,1] [,2] [,3] [,4] [,5] [,6]
tau 0.0500000 0.1000000 0.2500000 0.7500000 0.9000000 0.9500000
coefficients 0.3433611 0.4017658 0.4741032 0.6440141 0.6862995 0.7090685
lower bd 0.3433270 0.3420992 0.4203298 0.5801552 0.6493680 0.6739000
upper bd 0.3897500 0.4507941 0.4943288 0.6904127 0.7422294 0.7344405
```

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**