Dear Pr Harrel,
Thanks for your help at this occasion as well as for previous questions to the list.
I just looked at the example in your intro doc.
However I am dealing with proportions (ie % of patients responding to a given treatment).
In this case I am not sure I can use summarize and then the xYplot.
I am not aware of R graphing tools that can deal directly with proportions adding CI not to mention producing by factor/trellis plots.
This is why I why trying to do it "by hand" (using binconf) with ooplot,
without much success I am afraid.
Best regards,
JL Abitbol, MD
Jean-Louis,
Here is an example.
# Plot proportions and their Wilson confidence limits set.seed(3) d <- expand.grid(continent=c('USA','Europe'), year=1999:2001, reps=1:100) # Generate binary events from a population probability of 0.2 # of the event, same for all years and continents d$y <- ifelse(runif(6*100) <= .2, 1, 0) s <- with(d, summarize(y, llist(continent,year), function(y) { n <- sum(!is.na(y)) s <- sum(y, na.rm=T) binconf(s, n) }, type='matrix') )
Dotplot(year ~ Cbind(y) | continent, data=s, ylab='Year', xlab='Probability')
I did have to temporarily override a function in Hmisc to fix a problem. This will be corrected in an upcoming release of Hmisc:
mApply <- function(X, INDEX, FUN=NULL, ..., simplify=TRUE) {
## Matrix tapply
## X: matrix with n rows; INDEX: vector or list of vectors of length n
## FUN: function to operate on submatrices of x by INDEX
## ...: arguments to FUN; simplify: see sapply
## Modification of code by Tony Plate <[EMAIL PROTECTED]> 10Oct02
## If FUN returns more than one number, mApply returns a matrix with
## rows corresponding to unique values of INDEX
nr <- nrow(X)
if(!length(nr)) { ## X not a matrix
r <- tapply(X, INDEX, FUN, ..., simplify=simplify)
if(is.matrix(r)) r <- drop(t(r)) else
if(simplify && is.list(r))
r <- drop(matrix(unlist(r), nrow=length(r),
dimnames=list(names(r),names(r[[1]])), byrow=TRUE))
} else {
idx.list <- tapply(1:nr, INDEX, c)
r <- sapply(idx.list, function(idx,x,fun,...) fun(x[idx,,drop=FALSE],...),
x=X, fun=FUN, ..., simplify=simplify)
if(simplify) r <- drop(t(r))
}
dn <- dimnames(r)
if(length(dn) && !length(dn[[length(dn)]])) {
fx <- FUN(X,...)
dnl <- if(length(names(fx))) names(fx) else dimnames(fx)[[2]]
dn[[length(dn)]] <- dnl
dimnames(r) <- dn
}
if(simplify && is.list(r) && is.array(r)) {
ll <- sapply(r, length) maxl <- max(ll) empty <- (1:length(ll))[ll==0] for(i in empty) r[[i]] <- rep(NA, maxl) ## unlist not keep place for NULL entries for nonexistent categories first.not.empty <- ((1:length(ll))[ll > 0])[1] nam <- names(r[[first.not.empty]]) dr <- dim(r)
r <- aperm(array(unlist(r), dim=c(maxl,dr), dimnames=c(list(nam),dimnames(r))), c(1+seq(length(dr)), 1)) } r }
Frank
On Sun, 21 Nov 2004 07:48:58 -0500, "Frank E Harrell Jr" <[EMAIL PROTECTED]> said:
Jean-Louis Abitbol wrote:
Dear All
I am trying to graph a proportion and CI95% by a factor with ooplot (any other better solution ?)
It works well until I try to add the confidence interval.
this is the error message and and a description of the data:
> dat1
PointEst
TT1 1 3.6
TT2 2 5.0
TT3 3 5.8
TT4 4 11.5
TT5 5 7.5
TT5 6 8.7
TT7 7 17.4
dat2
Lower TT1 1 1.0 TT2 2 2.2 TT3 3 2.7 TT4 4 6.7 TT5 5 3.9 TT5 6 4.6 TT7 7 11.5
dat3
Upper TT1 1 12.3 TT2 2 11.2 TT3 3 12.1 TT4 4 19.1 TT5 5 14.2 TT5 6 15.6 TT7 7 25.6
ooplot(dat1,type="barplot",col=rich.colors(7,"temperature"),names.arg=c("X","Y","Z","A","B","C","D"),plot.ci=T,
+ ci.l=dat2,ci.u=dat3, xlab="Treatment", ylab="Percent Normalized
Patients")
Error in ooplot.default(dat1, type = "barplot", col = rich.colors(7,
"temperature"), : 'height' and 'ci.u' must have the same dimensions.
I have tried various ways of supplying ci.l and ci.u (including a vector)
Thanks for the help that anyone can bring,
Regards, JL
One way is to look at the examples for Dotplot in the Hmisc package. Those examples display bootstrap percentile confidence intervals for a
mean.
-- Frank E Harrell Jr Professor and Chair School of Medicine Department of Biostatistics Vanderbilt University
______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html