[R] help on tapply using sample with differing sample-sizes
Jourdan Gold
jgold at uoguelph.ca
Wed Dec 3 01:14:19 CET 2008
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
}
More information about the R-help
mailing list