How to Perform Bootstrapping in R

Spread the love

Bootstrapping is a statistical technique that relies on random sampling with replacement. It allows one to estimate the sampling distribution of almost any statistic using random sampling techniques. This article will walk you through the process of performing bootstrapping in R, from data preparation to executing the bootstrap analysis and interpreting the results.

Bootstrapping and its Importance

Bootstrapping is a resampling method that involves drawing repeated samples from the original data samples. The method is based on the idea that these random resamples can represent the actual underlying population. It is especially useful when the theoretical distribution of a statistic is complex or unknown.

Bootstrapping allows you to:

  1. Estimate the precision of sample estimates.
  2. Construct confidence intervals for population parameters.
  3. Conduct hypothesis tests about population parameters.

Installing Required Packages

Before we delve into bootstrapping in R, make sure you have installed the necessary packages. We need the boot package in R to perform bootstrapping. You can install it by running the following command:


After the package is installed, we can load it into our environment using:


Preparing Data for Bootstrapping

Let’s illustrate bootstrapping using the mtcars dataset available in R. This dataset contains specifications like mpg (Miles per Gallon), cyl (Number of cylinders), and hp (Horsepower) for 32 cars.

To view this data, use:


For this tutorial, we’ll work with the ‘mpg’ column, representing miles per gallon.

Defining the Statistic Function

The first step in bootstrapping is to define the statistic that you’re interested in. We’ll use the mean of the ‘mpg’ column in this example.

First, define a function that calculates the mean:

mean.mpg <- function(data, indices) {

In this function, data is the original dataset, and indices are the indices of the observations to be included in the resample. When we perform bootstrapping, we’ll be able to pass these indices to the function, allowing us to perform the analysis on the resample rather than on the whole dataset.

Performing Bootstrapping

Now we can perform the bootstrap analysis using the boot() function from the boot package. We’ll generate 1000 bootstrap samples:

set.seed(123)  # Setting a seed for reproducibility
bootstrapped <- boot(data=mtcars$mpg, statistic=mean.mpg, R=1000)

In the boot() function, data is the original dataset, statistic is the function that calculates the statistic of interest, and R is the number of bootstrap samples to generate.

Running this code will give us the bootstrap analysis results, including the original mean of ‘mpg’ and the bias and standard deviation of the bootstrap distribution.

Interpreting the Results

The results might look like this:


boot(data = mtcars$mpg, statistic = mean.mpg, R = 1000)

Bootstrap Statistics :
    original      bias    std. error
t1* 20.09062 0.01583333   0.9448814


  • ‘original’ is the actual mean of the ‘mpg’ column in the original dataset.
  • ‘bias’ is the difference between the mean of the bootstrap distribution and the original mean.
  • ‘std. error’ is the standard deviation of the bootstrap distribution.

The bias is very close to zero, suggesting that the bootstrap distribution is centered around the original mean. The standard deviation of the bootstrap distribution tells us how much variability there is in the bootstrapped estimates.

Creating Confidence Intervals

In addition to estimating the mean and standard deviation, we can use the bootstrap distribution to create confidence intervals. We can do this with the function in the boot package: <-, type="bca")

In the function, boot.out is the result from the boot() function, and type is the type of confidence interval to construct. Here we’re using a bias-corrected accelerated (BCa) interval, which adjusts for both bias and skewness in the bootstrap distribution.

Running this code will give us a 95% confidence interval for the mean ‘mpg’, which might look like this:

Based on 1000 bootstrap replicates

CALL : = bootstrapped, type = "bca")

Intervals : 
Level       BCa          
95%   (18.405, 21.832 )  
Calculations and Intervals on Original Scale

This confidence interval tells us that, based on our bootstrap analysis, we’re 95% confident that the actual mean ‘mpg’ lies between 18.405 and 21.832.

In summary, bootstrapping is a powerful technique for estimating the variability of a statistic when its theoretical distribution is unknown or complex. In this article, we walked through the process of performing bootstrapping in R, using the boot package. By following these steps, you should be able to perform bootstrapping on your own data, helping you to make robust statistical estimates.

Posted in RTagged

Leave a Reply