2013-03-23 2 views
2

Я хочу построить несколько квантилей линии регрессии (quantreg пакет), как это:Участок несколько квантильные линии регрессии с решеткой и quantreg

library(quantreg) 
data(engel) 
attach(engel) 
plot(income, foodexp, cex = 0.25, type = "n", 
     xlab = "Household Income", ylab = "Food Expenditure") 
points(income, foodexp, cex = 0.5, col = "blue") 
abline(rq(foodexp ~ income, tau = 0.5), col = "blue") 
abline(lm(foodexp ~ income), lty = 2, col = "red") 
taus <- c(0.05, 0.1, 0.25, 0.75, 0.9, 0.95) 
for (i in 1:length(taus)) { 
    abline(rq(foodexp ~ income, tau = taus[i]), 
      col = "gray") 
} 
detach(engel) 

, но с использованием lattice, я попробовал только с одной регрессию, но не работает:

require(lattice) 
xyplot(foodexp~income , data =engel, 
    type = c("g"), 
    auto.key=list(x=.8,y=.35,cex=.8,cex.title=.8, title="", points=TRUE), 
    scales=list(tck=-1),ylab=list("Food Expenditure",font=3), 
    xlab=list("Household Income",font=3), 
    panel=function(x,y){ 
    panel.xyplot(x,y) 
    panel.grid() 
    panel.abline(rq(foodexp ~ income, tau = 0.5))} 
) 

ответ

4

Использование lattice вы должны просто использовать y и x в функции панели.

enter image description here

xyplot(foodexp~income , data =engel, 
     type = c("g"), 
     auto.key=list(x=.8,y=.35,cex=.8,cex.title=.8, title="", points=TRUE), 
     scales=list(tck=-1),ylab=list("Food Expenditure",font=3), 
     xlab=list("Household Income",font=3), 
     panel=function(x,y,...){ 
     panel.xyplot(x,y) 
     panel.grid() 
     panel.abline(rq(y ~ x, tau = 0.5)) 
     panel.points(x, y, cex = 0.5, col = "blue") 
     panel.abline(rq(y ~ x, tau = 0.5), col = "blue") 
     panel.abline(lm(y ~ x), lty = 2, col = "red") 
     taus <- c(0.05, 0.1, 0.25, 0.75, 0.9, 0.95) 
     for (i in 1:length(taus)) { 
      panel.abline(rq(y ~ x, tau = taus[i]), 
        col = "gray") 
     } 

     } 
) 
Смежные вопросы