Search code examples
rsamplestatistics-bootstrap

get means across samples from bootstrap


I want to get the means and sds across 20 sampled data, but not sure how to do that. My current code can give me the means within each sample, not across samples.

## create data
data <- round(rnorm(100, 5, 3))
data[1:10]
## obtain 20 boostrap samples
## display the first of the boostrap samples

resamples <- lapply(1:20, function(i) sample(data, replace = T))

resamples[1]


## calculate the means for each bootstrap sample
r.mean <- sapply(resamples, mean)
r.median
## calculate the sd of the distribution of medians 
sqrt(var(r.median))

From the above code, I got 20 means from each of the sampled data, and sd of the distribution of the means. How can I get 100 means, each mean from the distribution of the 20 samples? and same for the standard deviation?

Many thanks!!


Solution

  • Make a matrix with your samples

    mat <- do.call(rbind, resamples)
    

    Then

    rowMeans(mat)
    

    will give you the "within sample" mean and

    colMeans(mat) 
    

    the "across sample" mean. For other quantities, e.g. standard deviation you can use apply, e.g. apply(mat, 1, sd) or functions from the matrixStats package, e.g. matrixStats::rowSds(mat).