boot.test {carat}R Documentation

Bootstrap t-test


Performs bootstrap t-test on treatment effects. This test is proposed by Shao et al. (2010) <doi:10.1093/biomet/asq014>.


  boot.test(data, B = 200, method = c("HuHuCAR", "PocSimMIN", "StrBCD", 
                                  "StrPBR", "DoptBCD", "AdjBCD"), 
          conf = 0.95, ...)



a data frame. It consists of patients' profiles, treatment assignments and outputs. See getData.


an integer. It is the number of bootstrap samples. The default is 200.


the randomization procedure to be used for testing. This package provides tests for "HuHuCAR", "PocSimMIN", "StrBCD", "StrPBR", "AdjBCD", and "DoptBCD".


confidence level of the interval. The default is 0.95.


arguments to be passed to method. These arguments depend on the randomization method used and the following arguments are accepted:


a vector of weights at the overall, within-stratum, and within-covariate-margin levels. It is required that at least one element is larger than 0. Note that omega is only needed when HuHuCAR is to be used.


a vector of weights for within-covariate-margin imbalances. It is required that at least one element is larger than 0. Note that weight is only needed when PocSimMIN is to be used.


the biased coin probability. p should be larger than 1/2 and less than 1. Note that p is only needed when "HuHuCAR", "PocSimMIN" and "StrBCD" are to be used.


a design parameter governing the degree of randomness. Note that a is only needed when "AdjBCD" is to be used.


the block size for stratified randomization. It is required to be a multiple of 2. Note that bsize is only needed when "StrPBR" is to be used.


The bootstrap t-test is described as follows:

1) Generate bootstrap data (Y_1^*,Z_1^*), \dots, (Y_n^*,Z_n^*) as a simple random sample with replacement from the original data (Y_1,Z_1), \dots,(Y_n,Z_n), where Y_i denotes the outcome and Z_i denotes the profile of the ith patient.

2) Perform covariate-adaptive procedures on the patients' profiles to obtain new treatment assignments T_1^*,\dots,T_n^*, and define

\hat{\theta}^* = -\frac{1}{n_1^*}\sum\limits_{i=1}^n (T_i^*-2) \times Y_i^* - \frac{1}{n_0^*}\sum\limits_{i=1}^n (T_i^*-1) \times Y_i

where n_1^* is the number of patients assigned to treatment 1 and n_0^* is the number of patients assigned to treatment 2.

3) Repeat step 2 B times to generate B independent boostrap samples to obtain \hat{\theta}^*_b, b = 1,\dots,B. The variance of \bar{Y}_1 - \bar{Y}_0 can then be approximated by the sample variance of \hat{\theta}^*_b.


It returns an object of class "htest".

An object of class "htest" is a list containing the following components:


the value of the t-statistic.


the p-value of the test,the null hypothesis is rejected if p-value is less than the pre-determined significance level.

a confidence interval under the chosen level conf for the difference in treatment effect between treatment 1 and treatment 2.


the estimated treatment effect difference between treatment 1 and treatment 2.


the standard error of the mean (difference), used as denominator in the t-statistic formula.


a character string indicating what type of test was performed.

a character string giving the name(s) of the data.


Shao J, Yu X, Zhong B. A theory for testing hypotheses under covariate-adaptive randomization[J]. Biometrika, 2010, 97(2): 347-360.


#Suppose the data used is patients' profile from real world, 
#  while it is generated here. Data needs to be preprocessed 
#  and then get assignments following certain randomization.
df<- data.frame("gender" = sample(c("female", "male"), 100, TRUE, c(1 / 3, 2 / 3)),
                "age" = sample(c("0-30", "30-50", ">50"), 100, TRUE),
                "jobs" = sample(c("stu.", "teac.", "other"), 100, TRUE, c(0.4, 0.2, 0.4)), 
                stringsAsFactors = TRUE)
##data preprocessing
data.pd <- StrPBR(data = df, bsize = 4)$Cov_Assig

#Then we need to combine patients' profiles and outcomes after randomization and treatments.
outcome = runif(100)
data.combined = data.frame(rbind(data.pd,outcome), stringsAsFactors = TRUE)

#run the bootstrap t-test
B = 200
Strbt = boot.test(data.combined, B, "StrPBR", bsize = 4)

[Package carat version 2.0.2 Index]