AdjBCD {carat}R Documentation

Covariate-adjusted Biased Coin Design


Allocates patients to one of two treatments based on covariate-adjusted biased coin design as proposed by Baldi Antognini A, Zagoraiou M (2011) <doi:10.1093/biomet/asr021>.


AdjBCD(data, a = 3)



a data frame. A row of the dataframe corresponds to the covariate profile of a patient.


a design parameter governing the degree of randomness. The default is 3.


Consider I covaraites and m_i levels for the ith covariate, i=1,\ldots,I. T_j is the assignment of the jth patient and Z_j = (k_1,\dots,k_I) indicates the covariate profile of the jth patient, j=1,\ldots,n. For convenience, (k_1,\dots,k_I) and (i;k_i) denote stratum and margin, respectively. D_j(.) is the difference between numbers of patients assigned to treatment 1 and treatment 2 at the corresponding level after j patients have been assigned.

Let F^a be a decreasing and symmetric function of D_j(.), which depends on a design parameter a\ge 0. Then, the probability of allocating the (j+1)th patient to treatment 1 is F^a(D_j(.)), where

F^a(x)=\frac{1}{x^a + 1},

for x\ge 1,

F^a(x)=1 / 2,

for x = 0, and

F^a(x)=\frac{|x|^a}{|x|^a + 1},

for x\le -1. As a goes to \infty, the design becomes more deteministic.

Details of the procedure can be found in Baldi Antognini and M. Zagoraiou (2011).


It returns an object of class "carandom".

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


a bool indicating whether the data is a numeric data frame.


a character string giving the name(s) of the included covariates.


the number of strata.


the number of covariates.


a vector of level numbers for each covariate.


the number of patients.


a (cov_num + 1) * n matrix containing covariate profiles for all patients and the corresponding assignments. The ith column represents the ith patient. The first cov_num rows include patients' covariate profiles, and the last row contains the assignments.


the randomization sequence.

All strata

a matrix containing all strata involved.


a matrix with only one column. There are final differences at the overall, within-stratum, and within-covariate-margin levels.


a character string describing the randomization procedure to be used.

Data Type

a character string giving the data type, Real or Simulated.


the framework of the used randomization procedure: stratified randomization, or model-based method.


the data frame.


Baldi Antognini A, Zagoraiou M. The covariate-adaptive biased coin design for balancing clinical trials in the presence of prognostic factors[J]. Biometrika, 2011, 98(3): 519-535.

See Also

See AdjBCD.sim for allocating patients with covariate data generating mechanism; See AdjBCD.ui for the command-line user interface.


# a simple use
## Real Data
## create a dataframe
df <- data.frame("gender" = sample(c("female", "male"), 1000, TRUE, c(1 / 3, 2 / 3)), 
                 "age" = sample(c("0-30", "30-50", ">50"), 1000, TRUE), 
                 "jobs" = sample(c("stu.", "teac.", "others"), 1000, TRUE), 
                 stringsAsFactors = TRUE)
Res <- AdjBCD(df, a = 2)
## view the output

  ## view all patients' profile and assignments

## Simulated Data
n <- 1000
cov_num <- 3
level_num <- c(2, 3, 5) 
# Set pr to follow two tips:
#(1) length of pr should be sum(level_num);
#(2) sum of probabilities for each margin should be 1.
pr <- c(0.4, 0.6, 0.3, 0.4, 0.3, rep(0.2, times = 5))
# set the design parameter
a <- 1.8
# obtain result
Res.sim <- AdjBCD.sim(n, cov_num, level_num, pr, a)

  # view the assignments of patients
  Res.sim$Cov_Assig[cov_num + 1, ]
  # view the differences between treatment 1 and treatment 2 at all levels

[Package carat version 2.0.2 Index]