KER {covadap} | R Documentation |
Covariate-Adaptive randomization by Ma and Hu
Description
Implements the Covariate-Adaptive randomization by Ma and Hu (2013) for assigning patients to two treatments A and B in order to minimize the distance between the covariate distribution in the two treatment groups. The procedure works with qualitative and quantitative covariates.
Usage
KER(data, all.cat, p = 0.8, print.results = TRUE)
Arguments
data |
a data frame or a matrix. It can be a matrix only when |
all.cat |
logical. If all the covariates in |
p |
biasing probability for the Efron's allocation function ( |
print.results |
logical. If TRUE a summary of the results is printed. |
Details
The function assigns patients to treatments A or B with the Covariate-Adaptive randomization based on kernel density estimation as described in Ma and Hu (2013).
This randomization procedure can be used when data
contains only qualitative covariate, in this case set all.cat = TRUE
, when data
contains only quantitative covariates or when covariates of mixed nature are present, in these two latter cases set all.cat = FALSE
. The function's output is slighly different according to these three scenarios as described in Value.
The assignment probability to A of each patient is based on the Efron's allocation function (Efron, 1971) with biasing probability equal to p
.
At the end of the study the imbalance measures reported are the loss of estimation precision as described in Atkinson (1982), the Mahalanobis distance and the overall imbalance, defined as the difference in the total number of patients assigned to treatment A and B.
Only when all.cat = TRUE
, the function returns the strata imbalances measures, that report, for each stratum, the total number of patients assigned (N.strata
), the number of patients assigned to A (A.strata
) and the within-stratum imbalance (D.strata
), calculated as 2*A.strata-N.strata
.
If at least one qualitative covariate is present, the function returns the within-covariate imbalances reporting, for each level of each qualitative covariate, the difference in the number of patients assigned to A and B.
If at least one quantitative covariate is present, the function returns the difference in means. For each quantitative covariate, is reported the difference in the mean in group A and B.
See Value for more details.
Value
It returns an object of class
"covadap"
, which is a list containing the following elements:
summary.info |
|
Assignments |
a vector with the treatment assignments. |
Imbalances.summary |
summary of overall imbalance measures at the end
of the study ( |
Strata.measures |
(only if |
Imbalances |
a list containing all the imbalance measures.
|
data |
the data provided in input. |
diff_mean |
(only if |
observed.strata |
(only if |
References
Ma Z and Hu F. Balancing continuous covariates based on Kernel densities. Contemporary Clinical Trials, 2013, 34(2): 262-269.
Atkinson A. C. Optimum biased coin designs for sequential clinical trials with prognostic factors. Biometrika, 1982, 69(1): 61-67.
Efron B, Forcing a sequential experiment to be balanced. Biometrika, 1971, 58(3): 403-418.
See Also
See Also as KER.sim
for allocating patients by simulating their covariate profiles.
Examples
require(covadap)
### Implement with qualitative covariates (set all.cat = TRUE)
# Create a sample dataset with qualitative covariates
df1 <- data.frame("gender" = sample(c("female", "male"), 100, TRUE, c(1 / 3, 2 / 3)),
"age" = sample(c("18-35", "36-50", ">50"), 100, TRUE),
"bloodpressure" = sample(c("normal", "high", "hyper"), 100, TRUE),
stringsAsFactors = TRUE)
# To just view a summary of the metrics of the design
KER(data = df1, all.cat = TRUE, p = 0.8, print.results = TRUE)
# To view a summary
# and create a list containing all the metrics of the design
res1 <- KER(data = df1, all.cat = TRUE, p = 0.8, print.results = TRUE)
res1
### Implement with quantitative or mixed covariates
# Create a sample dataset with covariates of mixed nature
ff1 <- data.frame("gender" = sample(c("female", "male"), 100, TRUE, c(1 / 3, 2 / 3)),
"age" = sample(c("0-30", "30-50", ">50"), 100, TRUE),
"bloodpressure" = sample(c("normal", "high", "hypertension"), 10,
TRUE),
"smoke" = sample(c("yes", "no"), 100, TRUE, c(2 / 3, 1 / 3)),
"cholesterol" = round(rnorm(100, 200, 8),1),
"height" = rpois(100,160),
stringsAsFactors = TRUE)
### With quantitative covariates only (set all.cat = FALSE)
# select only column 5 and 6 of the sample dataset
# To just view a summary of the metrics of the design
KER(data = ff1[,5:6], all.cat = FALSE, p = 0.8, print.results = TRUE)
# To view a summary
# and create a list containing all the metrics of the design
res2 <- KER(data = ff1[,5:6], p = 0.8, all.cat = FALSE, print.results = TRUE)
res2
### With mixed covariates
# In this case the user must set all.cat = FALSE
# To just view a summary of the metrics of the design
KER(data = ff1, all.cat = FALSE, p = 0.8, print.results = TRUE)
# To view a summary
# and create a list containing all the metrics of the design
res3 <- KER(data = ff1, all.cat = FALSE, p = 0.8, print.results = TRUE)
res3