Plotting Confidence Intervals into a density plot
Hi, sadly it does not work either, because my index (x axis) is an atomic vector. Error Message: $ operator is invalid for atomic vectors I think I have to stick to displaying the confidence intervals with straight lines (ablines) , instead of a shaded area (polygon) Thank you so much for your help!
On Fri, Dec 2, 2016 at 11:45 AM, Jim Lemon <drjimlemon at gmail.com> wrote:
Hang on, maybe you mean something like this: erupt_dens<-density(faithful$eruptions) plot(erupt_dens,ylim=c(0,0.65)) dispersion(erupt_dens$x,erupt_dens$y,ulim=erupt_dens$y/5, type="l",fill="lightgray",interval=TRUE) lines(erupt_dens) Jim On Fri, Dec 2, 2016 at 9:36 PM, Jim Lemon <drjimlemon at gmail.com> wrote:
In order to display a polygon, you need x/y pairs for each point. If you just want a rectangle, you only need four x/y pairs, e.g.: plot(0,xlim=x(2.44,2.57),ylim=c(0,1),type="n") polygon(c(2.44,2.57,2.57,2.44),c(0,0,1,1),col="lightgray") Now if you have a series of x values and want to display a band of constant width around it: y_values<-runif(14) plot(seq(2.44,2.57,by=0.01),y_values,ylim=c(-2,3)) dispersion(seq(2.44,2.57,by=0.01),y_values,ulim=rep(0.5,14), type="l",interval=TRUE,col="lightgray") lines(seq(2.44,2.57,by=0.01),y_values) Jim On Fri, Dec 2, 2016 at 8:59 PM, Elysa Mitova <elysa.mitova at gmail.com>
wrote:
Thank you, this seems to work, but it is not exactly what I need (it indeed looks great, but a bit beyond my understanding) I just need a shaded area between 2.44 to 2.57 along the x-axis - a
polygon
inserted into my density plot (and not a confidence line along a scatter plot like your suggested solution) My x-axis is an index (a data frame), my y-axis is the automatically constructed density On Fri, Dec 2, 2016 at 10:01 AM, Jim Lemon <drjimlemon at gmail.com>
wrote:
Hi Elysa,
I think you are going a bit off course in your example. Try this and
see if it is close to what you want:
data<-rnorm(100)+runif(100,0,15)
smu_data<-supsmu(1:100,data)
rollfun<-function(x,window=10,FUN=sd) {
xlen<-length(x)
xout<-NA
forward<-window%/%2
backward<-window-forward
for(i in 1:xlen) {
xstart<-i-backward
if(xstart < 1) xstart<-1
xend<-i+forward-1
if(xend > xlen) xend<-xlen
xout[i]<-do.call(FUN,list(x[xstart:xend],na.rm=TRUE))
}
return(xout)
}
mad_data<-rollfun(data,10,mad)
plot(data,ylim=c(0,17))
library(plotrix)
dispersion(smu_data$x,smu_data$y,mad_data,type="l",interval=TRUE,
fill="lightgray")
lines(smu_data,lwd=2)
points(1:100,data)
Jim
On Fri, Dec 2, 2016 at 7:18 PM, Elysa Mitova <elysa.mitova at gmail.com>
wrote:
Hi, thank you! I've constructed the upper and lower bounds with a <- 2.505766 s <- 0.7789832 n <- 607 error <- qnorm(0.975)*s/sqrt(n) left <- a-error right <- a+error left right Now, I have the numbers I need, but I have no idea how to plot them.
I
was thinking of using a polygon, but somehow it doesn't work out,
because my
y-axis shows only density and is in itself not a variable?
xx <- data
fit1 <- density(data,na.rm=TRUE)
fit2 <- replicate(10000, { x <- sample(xx, replace=TRUE);
density(x, na.rm=TRUE, from=min(fit1$x), to=max(fit1$x))$y }
)
fit3 <- apply(fit2, 1, quantile, c(0.025,0.975) ) - Probably herein lies the problem? plot(fit1, ylim=range(fit3)) polygon( c(fit1$x, rev(fit1$x)), c(fit3[1,], rev(fit3[2,])), col='grey', border=F) lines(fit1) I tried working with this solution I found on the internet, but somehow now the lines the shaded areas sporadically everywhere around my density plot? I just want a polygon spreading from 2.44 to 2.57 along the x-axis. Any tipps? On Fri, Dec 2, 2016 at 1:24 AM, David Winsemius <
dwinsemius at comcast.net>
wrote:
On Dec 1, 2016, at 12:10 PM, Elysa Mitova <elysa.mitova at gmail.com
wrote:
Hi, I am desperately looking for a way to plot confidence intervals
into
a density plot of only one variable (not a scatter plot etc.) Have you any advice how to do this? I've only found manual ways to do with "abline", but this is a
rather
bothersome method and only works with ggplot (and not ggplot2).
This makes it appear that you expect this to be done in ggplot2 automagically. I suspect you must instead first find the right
approach
to construction of those upper and lower bounds before plotting. It's
not
clear what methods you expect to be needed. Your desperation is not
a
guide. Perhaps trying a bit of searching?
install.packages("sos")
library(sos)
findFn("confidence intervals density estimates")
Delivers quite a few results. Then searching on the text within that
webpage you find
208 2 27 54 nprobust kdrobust
2016-11-14
16:41:50 27 Kernel Density Estimation with Robust
Confidence
Intervals 209 2 27 54 nprobust lprobust 2016-11-14 16:41:50 27 Local-Polynomial Estimation with Robust
Confidence
Intervals Is that what you seek?
Thank you!
[[alternative HTML version deleted]]
I know you just subscribed, so now is the time to read the Posing Guide. == David Winsemius Alameda, CA, USA
[[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.