2016-02-02 24 views
5

メジアンスプラインと対応する信頼区間バンドをggplot2散布図に追加したいと思います。私は'quantreg'-package、より具体的にはrqss関数(Additive Quantile Regression Smoothing)を使用しています。 ggplot2stat_quantileを使用している場合のggplot2の信頼区間バンド?

私は中央値スプラインを追加することですが、ない信頼区間バンド:

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は独自のプロット機能が付属しています。 plot.rqss。私は信頼帯(bands=TRUE)を追加することができています。ここでquantreg -packageが付属しています

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

しかしプロット機能は、私のニーズに適し/非常に柔軟ではありません。 ggplot2プロットの信頼バンドを得ることは可能ですか?おそらく、quantregパッケージで使用されている方法を模倣するか、単にプロットからコピーするか?

データ:pastebin

答えて

3

あなたはほとんどそれを持っています。あなたが電話をするとき

plot(rqss_model, bands=TRUE, add=TRUE, rug=FALSE, jit=FALSE) 

この関数は非常に役に立ち、プロットされたデータを返します。データフレームを取得するだけです。あなたの関数への最初のマイナーな微調整、

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)) 
} 

賢明な方法でデータを返す次の関数を呼び出して

## 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

感謝をプロットするためにgeom_ribbonを使用すると

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

を凝縮。 plot.rqssの図を抑制するために、私は '' pdf(file = NULL) ''と '' dev.off() ''に書きました。 http://stackoverflow.com/a/24762900/1053612 – bonna

関連する問題