Jourdan Gold
2008-Dec-03 00:14 UTC
[R] help on tapply using sample with differing sample-sizes
Hello, My question likely got buried so I am reposting it in the hopes that someone has an answer. I have thought more about the question and modified my question. I hope tha my specific question is: I am attempting to create a bootstrap procedure for a finite sample using the theory of Rao and Wu, JASA (1988) that replicates within each strata (h) n_h - 1 times. To this end, I require a different sample size for each stratum. Unfortunately, it appears that the sample command which is used to obtain my resamples only allows a scalar for the sample size. i.e it does not currently work with a vector. Does any one have any suggestions as to how to get around this or if this is not possible, if there is another way to accomplish what I want to do. Perhaps, tapply is not the best way to go about getting what I want. if so what would all you strong programmers reccommend instead. I am thinking that perhaps loops may be the only way to go. raoboot <- function (datavar, statavar, weight, nboot, ciqntl, ciqntu) { i <- 1 sdatavar <- sort(datavar) sstratavar <- sort(statavar) sweight <- sort(weight) sdatavarwght <- sdatavar*sweight # stramn <- tapply(sdatavar, sstratavar, mean) meanvect <- rep(0, times = nboot) stratasize <- tapply(sdatavarwght, sstratavar, length) stratasizemone <- stratasize -1 while (i < nboot) { #vector of resampled observations vectobsrestemp <- tapply(sdatavarwght, sstratavar, sample, replace = T, size = stratasizemone) vectobsres <- unlist(vectobsrestemp) meanvect[i] <- mean(vectobsres) i <- i + 1 } repvectboot <- rep(mean(meanvect), times = i) vb <- sum((repvectboot - meanvect)^2)/(i -1) lwrbndmnp <- quantile(meanvect, ciqntl) uppbndmnp <- quantile(meanvect, ciqntu) vb }
Charles C. Berry
2008-Dec-03 02:02 UTC
[R] help on tapply using sample with differing sample-sizes
On Tue, 2 Dec 2008, Jourdan Gold wrote:> Hello, My question likely got buried so I am reposting it in the hopes > that someone has an answer. I have thought more about the question and > modified my question. I hope thaBut apparently, you have not "read the posting guide http://www.R-project.org/posting-guide.html and provide[d] commented, minimal, self-contained, reproducible code." Still see ?split ?mapply which likely will address you need. Study the examples, and if that doesn't help, then come back with _reproducible_ code, i.e. something we can run rather than merely stare at. HTH, Chuck> > > my specific question is: > > I am attempting to create a bootstrap procedure for a finite sample using the theory of Rao and Wu, JASA (1988) that replicates within each strata (h) n_h - 1 times. To this end, I require a different sample size for each stratum. Unfortunately, it appears that the sample command which is used to obtain my resamples only allows a scalar for the sample size. i.e it does not currently work with a vector. > > Does any one have any suggestions as to how to get around this or if this is not possible, if there is another way to accomplish what I want to do. Perhaps, tapply is not the best way to go about getting what I want. if so what would all you strong programmers reccommend instead. I am thinking that perhaps loops may be the only way to go. > > raoboot <- function (datavar, statavar, weight, nboot, ciqntl, ciqntu) > { > i <- 1 > sdatavar <- sort(datavar) > sstratavar <- sort(statavar) > sweight <- sort(weight) > sdatavarwght <- sdatavar*sweight > # stramn <- tapply(sdatavar, sstratavar, mean) > meanvect <- rep(0, times = nboot) > stratasize <- tapply(sdatavarwght, sstratavar, length) > stratasizemone <- stratasize -1 > while (i < nboot) > { #vector of resampled observations > vectobsrestemp <- tapply(sdatavarwght, sstratavar, sample, replace = T, size = stratasizemone) > vectobsres <- unlist(vectobsrestemp) > meanvect[i] <- mean(vectobsres) > i <- i + 1 > } > > repvectboot <- rep(mean(meanvect), times = i) > vb <- sum((repvectboot - meanvect)^2)/(i -1) > lwrbndmnp <- quantile(meanvect, ciqntl) > uppbndmnp <- quantile(meanvect, ciqntu) > > vb > } > > ______________________________________________ > R-help at r-project.org mailing list > 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. >Charles C. Berry (858) 534-2098 Dept of Family/Preventive Medicine E mailto:cberry at tajo.ucsd.edu UC San Diego http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego 92093-0901