
Generate randomisation lists
randolist.Rd
Randomisation lists are central to randomised trials. This function allows to generate randomisation lists simply, via (optionally) stratified block randomisation
Arguments
- n
total number of randomizations (per stratum)
- arms
arms to randomise
- strata
named list of stratification variables (see examples)
- blocksizes
numbers of each arm to include in blocks (see details)
- pascal
logical, whether to use pascal's triangle to determine block sizes
- ...
arguments passed on to other methods
Details
blocksizes
defines the number of allocations to each arm in a block.
For example, if there are two arms, and blocksizes
= 1, each block will
contain 2 randomisations. If blocksizes
= 1:2
, each block will
contain either one of each arm, or two of each arm. Total block sizes are
therefore blocksizes * length(arms)
.
By default, frequency of the different block sizes is determined using Pascal's triangle. This has the advantage that small and large block sizes are less common than intermediate sized blocks, which helps with making it more difficult to guess future allocations, and reduces the risk of finishing in the middle of a large block.
Unbalanced randomization is possible by specifying the same arm label multiple times.
To disable block randomisation, set blocksizes
to the same value as n
.
Examples
# example code
randolist(10)
#> seq_in_strata block_in_strata blocksize seq_in_block arm
#> 1 1 1 4 1 B
#> 2 2 1 4 2 A
#> 3 3 1 4 3 B
#> 4 4 1 4 4 A
#> 5 5 2 6 1 B
#> 6 6 2 6 2 A
#> 7 7 2 6 3 A
#> 8 8 2 6 4 A
#> 9 9 2 6 5 B
#> 10 10 2 6 6 B
# one stratifying variable
randolist(10, strata = list(sex = c("M", "F")))
#> stratum seq_in_strata block_in_strata blocksize seq_in_block arm sex
#> 1 1 1 1 2 1 B M
#> 2 1 2 1 2 2 A M
#> 3 1 3 2 6 1 A M
#> 4 1 4 2 6 2 B M
#> 5 1 5 2 6 3 B M
#> 6 1 6 2 6 4 A M
#> 7 1 7 2 6 5 A M
#> 8 1 8 2 6 6 B M
#> 9 1 9 3 4 1 A M
#> 10 1 10 3 4 2 B M
#> 11 1 11 3 4 3 A M
#> 12 1 12 3 4 4 B M
#> 13 2 1 1 4 1 B F
#> 14 2 2 1 4 2 A F
#> 15 2 3 1 4 3 B F
#> 16 2 4 1 4 4 A F
#> 17 2 5 2 6 1 A F
#> 18 2 6 2 6 2 B F
#> 19 2 7 2 6 3 A F
#> 20 2 8 2 6 4 B F
#> 21 2 9 2 6 5 A F
#> 22 2 10 2 6 6 B F
#> strata_txt
#> 1 M
#> 2 M
#> 3 M
#> 4 M
#> 5 M
#> 6 M
#> 7 M
#> 8 M
#> 9 M
#> 10 M
#> 11 M
#> 12 M
#> 13 F
#> 14 F
#> 15 F
#> 16 F
#> 17 F
#> 18 F
#> 19 F
#> 20 F
#> 21 F
#> 22 F
# two stratifying variables
randolist(10, strata = list(sex = c("M", "F"),
age = c("child", "adult")))
#> stratum seq_in_strata block_in_strata blocksize seq_in_block arm sex age
#> 1 1 1 1 4 1 B M child
#> 2 1 2 1 4 2 A M child
#> 3 1 3 1 4 3 A M child
#> 4 1 4 1 4 4 B M child
#> 5 1 5 2 4 1 B M child
#> 6 1 6 2 4 2 B M child
#> 7 1 7 2 4 3 A M child
#> 8 1 8 2 4 4 A M child
#> 9 1 9 3 2 1 A M child
#> 10 1 10 3 2 2 B M child
#> 11 2 1 1 2 1 B F child
#> 12 2 2 1 2 2 A F child
#> 13 2 3 2 4 1 B F child
#> 14 2 4 2 4 2 B F child
#> 15 2 5 2 4 3 A F child
#> 16 2 6 2 4 4 A F child
#> 17 2 7 3 4 1 A F child
#> 18 2 8 3 4 2 A F child
#> 19 2 9 3 4 3 B F child
#> 20 2 10 3 4 4 B F child
#> 21 3 1 1 4 1 A M adult
#> 22 3 2 1 4 2 A M adult
#> 23 3 3 1 4 3 B M adult
#> 24 3 4 1 4 4 B M adult
#> 25 3 5 2 4 1 B M adult
#> 26 3 6 2 4 2 B M adult
#> 27 3 7 2 4 3 A M adult
#> 28 3 8 2 4 4 A M adult
#> 29 3 9 3 4 1 A M adult
#> 30 3 10 3 4 2 A M adult
#> 31 3 11 3 4 3 B M adult
#> 32 3 12 3 4 4 B M adult
#> 33 4 1 1 4 1 A F adult
#> 34 4 2 1 4 2 A F adult
#> 35 4 3 1 4 3 B F adult
#> 36 4 4 1 4 4 B F adult
#> 37 4 5 2 2 1 B F adult
#> 38 4 6 2 2 2 A F adult
#> 39 4 7 3 6 1 A F adult
#> 40 4 8 3 6 2 B F adult
#> 41 4 9 3 6 3 B F adult
#> 42 4 10 3 6 4 A F adult
#> 43 4 11 3 6 5 B F adult
#> 44 4 12 3 6 6 A F adult
#> strata_txt
#> 1 M; child
#> 2 M; child
#> 3 M; child
#> 4 M; child
#> 5 M; child
#> 6 M; child
#> 7 M; child
#> 8 M; child
#> 9 M; child
#> 10 M; child
#> 11 F; child
#> 12 F; child
#> 13 F; child
#> 14 F; child
#> 15 F; child
#> 16 F; child
#> 17 F; child
#> 18 F; child
#> 19 F; child
#> 20 F; child
#> 21 M; adult
#> 22 M; adult
#> 23 M; adult
#> 24 M; adult
#> 25 M; adult
#> 26 M; adult
#> 27 M; adult
#> 28 M; adult
#> 29 M; adult
#> 30 M; adult
#> 31 M; adult
#> 32 M; adult
#> 33 F; adult
#> 34 F; adult
#> 35 F; adult
#> 36 F; adult
#> 37 F; adult
#> 38 F; adult
#> 39 F; adult
#> 40 F; adult
#> 41 F; adult
#> 42 F; adult
#> 43 F; adult
#> 44 F; adult
# different arm labels
randolist(10, arms = c("arm 1", "arm 2"))
#> seq_in_strata block_in_strata blocksize seq_in_block arm
#> 1 1 1 4 1 arm 1
#> 2 2 1 4 2 arm 2
#> 3 3 1 4 3 arm 2
#> 4 4 1 4 4 arm 1
#> 5 5 2 4 1 arm 1
#> 6 6 2 4 2 arm 1
#> 7 7 2 4 3 arm 2
#> 8 8 2 4 4 arm 2
#> 9 9 3 4 1 arm 2
#> 10 10 3 4 2 arm 1
#> 11 11 3 4 3 arm 1
#> 12 12 3 4 4 arm 2
# unbalanced (2:1) randomization
randolist(10, arms = c("arm 1", "arm 1", "arm 2"))
#> seq_in_strata block_in_strata blocksize seq_in_block arm
#> 1 1 1 6 1 arm 1
#> 2 2 1 6 2 arm 2
#> 3 3 1 6 3 arm 1
#> 4 4 1 6 4 arm 2
#> 5 5 1 6 5 arm 1
#> 6 6 1 6 6 arm 1
#> 7 7 2 9 1 arm 1
#> 8 8 2 9 2 arm 2
#> 9 9 2 9 3 arm 1
#> 10 10 2 9 4 arm 2
#> 11 11 2 9 5 arm 2
#> 12 12 2 9 6 arm 1
#> 13 13 2 9 7 arm 1
#> 14 14 2 9 8 arm 1
#> 15 15 2 9 9 arm 1