[R] Randomization for block random clinical trials

Marc Schwartz marc_schwartz at me.com
Tue Apr 27 15:09:08 CEST 2010


On Apr 27, 2010, at 4:40 AM, Wei Lun Norphos wrote:

> Hi,
> 
> 
> 
> I‚m new to R (just installed today) and I‚m trying to figure out how to do
> stratified randomisation using it. My google search expedition has lead me
> to believe that blockrand package will most probably be the answer to it.
> 
> 
> 
> I‚ve played around with blockrand for awhile and tried the sample code:
> 
> 
> 
> library(blockrand)
> 
> 
> 
> ##stratified by sex
> 
> male <- blockrand(n=100, id.prefix='M', block.prefix='M',stratum='Male')
> 
> female <- blockrand(n=100, id.prefix='F', block.prefix='F',stratum='Female')
> 
> 
> 
> my.study <- rbind(male,female)
> 
> my.mystudy
> 
> 
> 
> this generates a beautiful list of randomised list perfect stratified by
> sex. However, i cannot figure out how i can add in additional stratification
> besides sex. It would be great if someone can point me to the right
> direction J
> 
> 
> 
> Thanks!


As per the Details section of ?blockrand (which it appears that you have read):

"For stratified studies the blockrand function should run once each for each stratum using the stratum argument to specify the current stratum (and using id.prefix and block.prefix to keep the id's unique). The separate data frames can then be combined using rbind if desired."


So if you have 2 stratifying variables [Gender (Male/Female) and Diabetes (Yes/No)], run blockrand() once for each of the four possible combinations:


  Male.DiabYes <- blockrand(n = 100, id.prefix = 'M.DY', 
                            block.prefix = 'M.DY', stratum = 'Male-DiabYes')

  Male.DiabNo <- blockrand(n = 100, id.prefix = 'M.DN', 
                           block.prefix = 'M.DN', stratum = 'Male-DiabNo')

  Female.DiabYes <- blockrand(n = 100, id.prefix = 'F.DY', 
                              block.prefix = 'F.DY', stratum = 'Female-DiabYes')

  Female.DiabNo <- blockrand(n = 100, id.prefix = 'F.DN', 
                             block.prefix = 'F.DN', stratum = 'Female-DiabNo')



Since there is a practical limit on the number of strata when randomizing using this approach, this should not get overly complicated.

Lastly, blockrand() uses the sample() function internally to generate the blocks. Be sure to use ?set.seed to define the RNG seed to enable you to reproduce the block sequencing in the future and/or to be sure to differentiate testing blocks versus production blocks by using differing seeds for each run.

HTH,

Marc Schwartz



More information about the R-help mailing list