[R] Cumulative Points and Confidence Interval Manipulation in barplot2
Marc Schwartz
MSchwartz at MedAnalytics.com
Tue Apr 12 18:26:50 CEST 2005
On Tue, 2005-04-12 at 10:14 -0500, Bret Collier wrote:
> R-Users,
> I am working with gplots (in gregmisc bundle) plotting some posterior
> probabilities (using barplot2) of harvest bag limits for discrete data
> (x-axis from 0 to 12, data is counts) and I ran into a couple of
> questions whose solutions have evaded me.
>
> 1) When I create and include the confidence intervals, the lower bound
> of the confidence intervals for several of the posterior probabilities
> is below zero, and in those specific cases I only want to show the upper
> limit for those CI's so they do not extend below the x-axis (as harvest
> can not be <0). Also, comments on a better technique for CI
> construction when the data is bounded to be >=0 would be appreciated.
>
> 2) I would also like to show the cumulative probability (as say a
> point or line) across the range of the x-axis on the same figure at the
> top, but I have been unable to figure out how to overlay a set of
> cumulative points over the barplot across the same range as the x-axis.
>
> Below is some example code showing the test data I am working on
> (xzero):
>
> xzero <- table(factor(WWNEW[HUNTTYPE=="DOVEONLY"], levels=0:12))
> > xzero
>
> 0 1 2 3 4 5 6 7 8 9 10 11 12
> 179 20 9 2 2 0 1 0 0 0 0 0 0
>
> > n <- sum(xzero)
> > k <- sum(table(xzero))
> > meantheta1 <-((2*xzero + 1)/(2*n + k))
> > vartheta1
> <-((2*(((2*n)+k)-((2*xzero)+1)))*((2*xzero)+1))/((((2*n)+k)^2)*(((2*n)+k)+2))
> > stderr <- sqrt(vartheta1)
> > cl.l <- meantheta1-(stderr*2)#Fake CI: Test
> > cl.u <- meantheta1+(stderr*2)#Fake CI: Test
> > barplot2(meantheta1, xlab="WWD HARVEST DOVE ONLY 2001",
> ylab="Probability", ylim=c(0, 1),xpd=F, col="blue", border="black",
> axis.lty=1,plot.ci=TRUE, ci.u = cl.u, ci.l = cl.l)
> > title(main="WHITE WING DOVE HARVEST PROBABILITIES: DOVE HUNT ONLY")
>
>
> I would greatly appreciate any direction or assistance,
> Thanks,
> Bret
Bret,
If you replace the lower bound of your confidence intervals as follows,
you can get just the upper bound plotted:
cl.l.new <- ifelse(cl.l >= 0, cl.l, meantheta1)
This will set the lower bound to meantheta1 in those cases, thus
plotting the upper portion and you can remove the 'xpd=F' argument. Use
'ci.l = cl.l.new' here:
barplot2(meantheta1, xlab="WWD HARVEST DOVE ONLY 2001",
ylab="Probability", ylim=c(0, 1), col="blue",
border="black", axis.lty=1,plot.ci=TRUE,
ci.u = cl.u, ci.l = cl.l.new)
I would defer to others with more Bayesian experience on alternatives
for calculating bounded CI's for the PP's.
With respect to the cumulative probabilities, if I am picturing the same
thing you are, you can use the cumsum() function and then add points
and/or a line as follows:
points(cumsum(meantheta1), pch = 19)
lines(cumsum(meantheta1), lty = "solid")
See ?cumsum, ?points and ?lines for more information.
BTW, some strategically placed spaces would help make your code a bit
more readable for folks.
HTH,
Marc Schwartz
More information about the R-help
mailing list