2016-02-02 32 views
5

Chciałbym dodać medianę splajnu i odpowiednie pasma przedziałów ufności do wykresu rozproszonego ggplot2. Używam funkcji 'quantreg'-package, a dokładniej funkcji rqss (Adaptacyjna regresja liniowa kwantyzacji).Przedziały przedziału ufności w ggplot2 podczas używania stat_quantile?

W ggplot2 jestem w stanie dodać medianę spline, ale nie przedział ufności zespoły:

fig = ggplot(dd, aes(y = MeanEst, x = N, colour = factor(polarization))) 
fig + stat_quantile(quantiles=0.5, formula = y ~ qss(x), method = "rqss") + 
    geom_point() 

ggplot2 median spline

quantreg -package pochodzi z własnej funkcji działce; plot.rqss. Gdzie jestem w stanie dodać pasma ufności (bands=TRUE):

plot(1, type="n", xlab="", ylab="", xlim=c(2, 12), ylim=c(-3, 0)) # empty plot 
plotfigs = function(df) { 
    rqss_model = rqss(df$MeanEst ~ qss(df$N)) 
    plot(rqss_model, bands=TRUE, add=TRUE, rug=FALSE, jit=FALSE) 
    return(NULL) 
} 
figures = lapply(split(dd, as.factor(dd$polarization)), plotfigs) 

enter image description here

Jednak funkcja działki, które pochodzi z quantreg -package nie jest bardzo elastyczny/dobrze nadaje się do moich potrzeb. Czy można uzyskać pasma ufności na wykresie ggplot2? Być może przez naśladowanie metody użytej w pakiecie quantreg lub po prostu skopiowanie ich z fabuły?

Data: pastebin.

Odpowiedz

3

Prawie go masz. Podczas wywoływania funkcji bardzo użytecznie zwraca naniesione dane. Wszystko, co robimy, to chwycić ramkę danych. Po pierwsze drobne Tweak do swojej funkcji, zwracają dane w sensowny sposób

plotfigs = function(df) { 
    rqss_model = rqss(df$MeanEst ~ qss(df$N)) 
    band = plot(rqss_model, bands=TRUE, add=TRUE, rug=FALSE, jit=FALSE) 
    data.frame(x=band[[1]]$x, low=band[[1]]$blo, high=band[[1]]$bhi, 
      pol=unique(df$polarization)) 
} 

Następny wywołać funkcję i skraplać

figures = lapply(split(dd, as.factor(dd$polarization)), plotfigs) 
bands = Reduce("rbind", figures) 

Następnie użyj geom_ribbon wykreślić

## We inherit y and color, so have to set them to NULL 
fig + geom_ribbon(data=bands, 
        aes(x=x, ymin=low, ymax=high, 
        y=NULL, color=NULL, group=factor(pol)), 
        alpha=0.3) 
+0

Dzięki. Aby pominąć rysunek plot.rqss, owinąłem go w '' pdf (file = NULL) '' i '' dev.off() ''. http://stackoverflow.com/a/24762900/1053612 – bonna