Replication script

randomizeR: An R Package for the Assessment and Implementation of

Randomization in Clinical Trials

if(!require(randomizeR)){install.packages("randomizeR")}
Loading required package: randomizeR
Loading required package: ggplot2
Loading required package: plotrix
(params <- crPar(N))

Object of class "crPar"

design = CR 
N = 10 
groups = A B 

set initial parameters for the randomization procedure

generate one random sequence for a clinical trial

(rs <- genSeq(params))

Object of class "rCrSeq"

design = CR 
seed = 808898100 
N = 10 
groups = A B 

The sequence M: 

1 B A A A B A B A A A

extract randomization sequence from randSeq object

getRandList(rs)
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] "B"  "A"  "A"  "A"  "B"  "A"  "B"  "A"  "A"  "A"  

save information from randomization sequence object to .csv file

Table 3: list of supported randomization procedures

hadaPar(N)

Object of class "hadaPar"

design = HADA 
N = 10 
groups = A B 

plot the sequence rs

calculate the complete set of sequences of the randomization procedure

(allSeqs <- getAllSeq(params))

Object of class "crSeq"

design = CR 
N = 10 
groups = A B 

The first 3 of 1024 sequences of M: 

1 A A A A A A A A A A
2 B A A A A A A A A A
3 A B A A A A A A A A
...

generate a simulated set of sequences in case of larger N

(randomSeqs <- genSeq(params, r = 10000))

Object of class "rCrSeq"

design = CR 
seed = 1034131350 
N = 50 
groups = A B 

The first 3 of 10000 sequences of M: 

1 B   A   A   A   B   A   A   A   A   B   ...
2 B   A   A   A   B   A   A   B   B   B   ...
3 B   B   B   B   A   B   A   A   B   B   ...
...

show sequences with probabilities

set endpoint

generate object representing chronological bias due to linear trend

(cb <- chronBias(type = "linT", theta = 1, method = "exact"))

 Object of class "chronBias"

     TYPE = linT 
     THETA = 1 
     METHOD = exact 
     ALPHA = 0.05 

exact assessment of a randomization procedure

set parameters of the randomization procedure

criteria for the assessment

assessment

(Assessment <-assess(bsdSeq, sb, cb, pw, endp = normalEndpoint))

Assessment of a randomization procedure 

design = BSD(2) 
N = 12 
K = 2 
groups = A B 


The first 3 rows of 972 rows of D: 

       Sequence Probability P(rej)(CS) P(rej)(linT) power(exact)
1 BBABABABA ...       0.004      0.045        0.072        0.789
2 BABBABABA ...       0.002      0.042        0.066        0.789
3 ABBBABABA ...       0.002      0.039        0.062        0.789
...

show summary of the assessment

summary(Assessment)
     P(rej)(CS) P(rej)(linT) power(exact)
mean      0.056        0.046        0.795
sd        0.013        0.006        0.006
max       0.109        0.072        0.800
min       0.034        0.042        0.789
x05       0.037        0.042        0.789
x25       0.048        0.042        0.789
x50       0.054        0.044        0.789
x75       0.062        0.048        0.800
x95       0.079        0.058        0.800

comparison of randomization procedures

set parameters of the randomization procedures

calculate the comparison of the procedures with respec to selection bias

(Comparison <- compare(sb, bsdSeq, mpSeq, pbrSeq, endp = normalEndpoint))

Comparison for P(rej)(CS)

     BSD.2. MP.2. PBR.4.
mean  0.056 0.072  0.082
sd    0.013 0.015  0.015
max   0.109 0.109  0.109
min   0.034 0.040  0.050
x05   0.037 0.050  0.061
x25   0.048 0.061  0.072
x50   0.054 0.072  0.079
x75   0.062 0.079  0.099
x95   0.079 0.100  0.103

plot comparison of randomization procedures

LS0tCnRpdGxlOiAicmFuZG9taXplUiIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKIyMgUmVwbGljYXRpb24gc2NyaXB0CiMjCiMjIHJhbmRvbWl6ZVI6IEFuIFIgUGFja2FnZSBmb3IgdGhlIEFzc2Vzc21lbnQgYW5kIEltcGxlbWVudGF0aW9uIG9mCiMjIFJhbmRvbWl6YXRpb24gaW4gQ2xpbmljYWwgVHJpYWxzCgpgYGB7cn0KaWYoIXJlcXVpcmUocmFuZG9taXplUikpe2luc3RhbGwucGFja2FnZXMoInJhbmRvbWl6ZVIiKX0KYGBgCgpgYGB7cn0KTiA8LSAxMCAKKHBhcmFtcyA8LSBjclBhcihOKSkKYGBgCgojIyBzZXQgaW5pdGlhbCBwYXJhbWV0ZXJzIGZvciB0aGUgcmFuZG9taXphdGlvbiBwcm9jZWR1cmUKCgojIyBnZW5lcmF0ZSBvbmUgcmFuZG9tIHNlcXVlbmNlIGZvciBhIGNsaW5pY2FsIHRyaWFsCmBgYHtyfQpzZXQuc2VlZCgxMTIpCnBhcmFtcyA8LSBjclBhcihOKQoocnMgPC0gZ2VuU2VxKHBhcmFtcykpCmBgYAoKCgojIyBleHRyYWN0IHJhbmRvbWl6YXRpb24gc2VxdWVuY2UgZnJvbSByYW5kU2VxIG9iamVjdApgYGB7cn0KZ2V0UmFuZExpc3QocnMpCmBgYAoKCgojIyBzYXZlIGluZm9ybWF0aW9uIGZyb20gcmFuZG9taXphdGlvbiBzZXF1ZW5jZSBvYmplY3QgdG8gLmNzdiBmaWxlCmBgYHtyfQpzYXZlUmFuZChycywgZmlsZSA9ICJteVJhbmRMaXN0LmNzdiIpCmBgYAoKCiMjIFRhYmxlIDM6IGxpc3Qgb2Ygc3VwcG9ydGVkIHJhbmRvbWl6YXRpb24gcHJvY2VkdXJlcwpgYGB7cn0KCnJiIDwtIGMoMiwgNCkKYmMgPC0gcmVwKDIsIDUpCm10aSA8LSAyCnAgPC0gMC42NjcKcmhvIDwtIDIKYSA8LSA0CmluaSA8LSAwCmFkZCA8LSAxCgpgYGAKCmBgYHtyfQpjclBhcihOKQpyYXJQYXIoTikKcGJyUGFyKGJjKQpycGJyUGFyKE4sIHJiKQp0YmRQYXIoYmMpIApydGJkUGFyKE4sIHJiKQptcFBhcihOLCBtdGkpCmJzZFBhcihOLCBtdGkpCmViY1BhcihOLCBwKQpjaGVuUGFyKE4sIG10aSwgcCkKZ2JjZFBhcihOLCByaG8pCmFiY2RQYXIoTiwgYSkKYmJjZFBhcihOLCBhKQp1ZFBhcihOLCBpbmksIGFkZCkKaGFkYVBhcihOKQpgYGAKCgoKIyMgcGxvdCB0aGUgc2VxdWVuY2UgcnMKYGBge3J9CnBsb3RTZXEocnMsIHBsb3RBbGxTZXEgPSBUUlVFKQoKYGBgCgoKIyMgY2FsY3VsYXRlIHRoZSBjb21wbGV0ZSBzZXQgb2Ygc2VxdWVuY2VzIG9mIHRoZSByYW5kb21pemF0aW9uIHByb2NlZHVyZQpgYGB7cn0KKGFsbFNlcXMgPC0gZ2V0QWxsU2VxKHBhcmFtcykpCmBgYAoKCiMjIGdlbmVyYXRlIGEgc2ltdWxhdGVkIHNldCBvZiBzZXF1ZW5jZXMgaW4gY2FzZSBvZiBsYXJnZXIgTgpgYGB7cn0Kc2V0LnNlZWQoMTk4NikKTiA8LSA1MApwYXJhbXMgPC0gY3JQYXIoTikKKHJhbmRvbVNlcXMgPC0gZ2VuU2VxKHBhcmFtcywgciA9IDEwMDAwKSkKYGBgCgoKIyMgc2hvdyBzZXF1ZW5jZXMgd2l0aCBwcm9iYWJpbGl0aWVzIApgYGB7cn0KbXlQYXN0ZSA8LSBmdW5jdGlvbihycykgewogIGFwcGx5KHJzLCAxLCBmdW5jdGlvbih4KSBwYXN0ZSh4LCBjb2xsYXBzZSA9ICIiKSkKfQpwIDwtIGdldFByb2IoYWxsU2VxcykKaGVhZChkYXRhLmZyYW1lKFNlcXVlbmNlcyA9IG15UGFzdGUoZ2V0UmFuZExpc3QoYWxsU2VxcykpLCBQcm9iYWJpbGl0eSA9IHJvdW5kKHAsIDYpKSkKCmBgYAoKIyMgc2V0IGVuZHBvaW50IApgYGB7cn0KbXVBIDwtIG11QiA8LSAwCnNpZ21hQSA8LSBzaWdtYUIgPC0gMQpub3JtYWxFbmRwb2ludCA8LSBub3JtRW5kcChtdSA9IGMobXVBLCBtdUIpLCBzaWdtYSA9IGMoc2lnbWFBLCBzaWdtYUIpKQpgYGAKCgojIyBnZW5lcmF0ZSBvYmplY3QgcmVwcmVzZW50aW5nIGNocm9ub2xvZ2ljYWwgYmlhcyBkdWUgdG8gbGluZWFyIHRyZW5kCmBgYHtyfQooY2IgPC0gY2hyb25CaWFzKHR5cGUgPSAibGluVCIsIHRoZXRhID0gMSwgbWV0aG9kID0gImV4YWN0IikpCgpgYGAKCiMjIGV4YWN0IGFzc2Vzc21lbnQgb2YgYSByYW5kb21pemF0aW9uIHByb2NlZHVyZQojIyBzZXQgcGFyYW1ldGVycyBvZiB0aGUgcmFuZG9taXphdGlvbiBwcm9jZWR1cmUKYGBge3J9Ck4gPC0gMTIKbXRpIDwtIDIKYnNkU2VxIDwtIGdldEFsbFNlcShic2RQYXIoTiwgbXRpKSkKCmBgYAoKIyMgY3JpdGVyaWEgZm9yIHRoZSBhc3Nlc3NtZW50CmBgYHtyfQpkIDwtIDEuNzk2IApzYiA8LSBzZWxCaWFzKCJDUyIsIGV0YSA9IGQvNCwgbWV0aG9kID0gImV4YWN0IikKY2IgPC0gY2hyb25CaWFzKCJsaW5UIiwgdGhldGEgPSAxL04sIG1ldGhvZCA9ICJleGFjdCIpIApwdyA8LSBzZXRQb3dlcihkLCBtZXRob2QgPSAiZXhhY3QiKSAKCmBgYAoKIyMgYXNzZXNzbWVudApgYGB7cn0KKEFzc2Vzc21lbnQgPC1hc3Nlc3MoYnNkU2VxLCBzYiwgY2IsIHB3LCBlbmRwID0gbm9ybWFsRW5kcG9pbnQpKQoKYGBgCgojIyBzaG93IHN1bW1hcnkgb2YgdGhlIGFzc2Vzc21lbnQKYGBge3J9CnN1bW1hcnkoQXNzZXNzbWVudCkKCmBgYAoKIyMgY29tcGFyaXNvbiBvZiByYW5kb21pemF0aW9uIHByb2NlZHVyZXMKIyMgc2V0IHBhcmFtZXRlcnMgb2YgdGhlIHJhbmRvbWl6YXRpb24gcHJvY2VkdXJlcwpgYGB7cn0KbXBTZXEgPC0gZ2V0QWxsU2VxKG1wUGFyKE4sIG10aSkpCmJjIDwtIHJlcCg0LCBOLzQpIApwYnJTZXEgPC0gZ2V0QWxsU2VxKHBiclBhcihiYykpCmBgYAoKCiMjIGNhbGN1bGF0ZSB0aGUgY29tcGFyaXNvbiBvZiB0aGUgcHJvY2VkdXJlcyB3aXRoIHJlc3BlYyB0byBzZWxlY3Rpb24gYmlhcwpgYGB7cn0KKENvbXBhcmlzb24gPC0gY29tcGFyZShzYiwgYnNkU2VxLCBtcFNlcSwgcGJyU2VxLCBlbmRwID0gbm9ybWFsRW5kcG9pbnQpKQoKYGBgCgojIyBwbG90IGNvbXBhcmlzb24gb2YgcmFuZG9taXphdGlvbiBwcm9jZWR1cmVzCmBgYHtyfQpwbG90KENvbXBhcmlzb24pCmBgYAoKCgoK