Simple randomization is a process of random assignment of subjects based on a single sequence to groups. Block randomization works by randomizing participants within blocks such that an equal number is assigned to each treatment.
If suppose, we have a sample size of 24, simple randomization aims at ensuring equal allocation of subjects to treatment groups, such that at the end of randomization we have 12 assigned to one group and the other twelve to another. At any particular time during the process of randomization equal allocation cannot be ensured. This can, however, be handled by adopting block randomization, where random allocation is done within sub-groups of the sample size. So, if we have 24 subjects, we can divide them into 6 blocks of 4 subjects each, and then go ahead with equal allocation within each block. In this example, the randomization sequence can be chosen from the 6 possible assignment sequences.
Note that repeat blocks may occur when the total sample size is greater than the block size times the number of possible sequences. Furthermore, the block size must be divisible by the number of study groups.
A disadvantage of block randomization is that the allocation of participants may be predictable. In the above case, there are 6 possible allocation sequences and 6 blocks so a bias can occur in the case of open label studies.
Selection bias may be reduced by using random block sizes and keeping the investigator blinded to the size of each block.
Kreara has developed a SAS macro to generate a randomization list for this scenario. The main features of this macro are
- Generation of a master database of all possible block sizes combinations corresponding to sample size and number of blocks.
- Selecting only even block sizes and unique combinations.
- Maintaining minimum and maximum block sizes.
- Providing a seed of ones choice to ensure no repeat of randomization list is generated at subsequent execution of the macro.
- Generating the randomization list for two treatment groups for any particular combination of block sizes and sample size.
/*Macro for ‘Block Randomization with Randomly Selected Block Sizes’*/
options nomlogic nomprint nosymbolgen;
/*Create a data set having the observation of different selected block size and their sum results the required sample size*/
data simdata( drop=i j);
/*Screen out the even number of block size for equal distribution of treatment groups*/
if mod(blkno(i),2)=0 then blkno(i)=blkno(i);
/*Delete the duplicate combination of the block length*/
proc sort data=simdata out=simdataout nodupkey;
/*Permit the block size within the specified values*/
/*Placing the List of block Values into a Series of Macro Variables represents the Block Size*/
proc transpose data=Simdata1(keep=blkno1 -blkno&blkdim order where=(order=&odrsz)) out=simdat_trn(keep=col1 rename=(col1=blk_sz));
proc sql noprint;
/*Random allocation of treatments with respect to block sizes using ‘Proc Plan’*/
%do I =1 %to &blkdim.;
/*Combine all the randomized blocks together for a site */
%datagen(blkdim=4,obscnt=100000,seed=100, minval=4, maxval=10, splsize=24 ,odrsz=1 );