preserve. set printback=on. * SIMPLE AND COMPLEX RANDOM ASSIGNMENT IN EXPERIMENTAL DESIGNS Valentim R. Alferes, University of Coimbra (Portugal), 2009. * StrataRand2.sps - Stratified Random Assignment (Forced equal sizes). set printback=off. set ovars labels onumbers values tvars labels tnumbers values. set errors=none. data list list/Stratum(f8.0) nstrata(f8.0). * Enter Stratum number and number of units per stratum. begin data 1 60 2 48 3 20 4 44 end data. * Enter number of treaments. compute ntreat = 4. loop cases=1 to nstrata. xsave outfile=outf1/keep=Stratum ntreat. end loop. get file=outf1. compute x=$casenum. rank variables=x(a) by Stratum/rank/print=no. set rng=mt mtindex=random. compute random=uniform(1). rank variables=random(a) by Stratum/rank/print=no. compute Treatment=mod((rrandom-1),ntreat)+1. formats all(f8.0). variable labels Rx"Unit". oms/select tables/if commands=["summarize"] subtypes=["case processing summary"]/destination viewer=no. oms/select tables/if commands=["crosstabs"] subtypes=["case processing summary"]/destination viewer=no. summarize/tables=Stratum rx treatment/format=validlist nocasenum nototal /title='Stratified Random Assignment \n Sorted by Stratum/Unit'/cells=none. sort cases by treatment(a) Stratum(a) rx(a). summarize/tables=Stratum rx treatment/format=validlist nocasenum nototal /title='Stratified Random Assignment \n Sorted by Treatment'/cells=none. crosstabs/tables=Stratum by Treatment/cells=count row. restore.