preserve. set printback=on. * SIMPLE AND COMPLEX RANDOM ASSIGNMENT IN EXPERIMENTAL DESIGNS Valentim R. Alferes, University of Coimbra (Portugal), 2009. * StrataRand4.sps - Stratified Random Assignment (Unequal probabilities). set printback=off. set ovars labels onumbers values tvars labels tnumbers values. set errors=none. oms/select tables/if commands=["summarize"] subtypes=["case processing summary"]/destination viewer=no. data list list/Treatment(f8.0) p(f8.3). * Enter Treatment number and desired assignment probability. begin data 1 .20 2 .35 3 .45 end data. summarize/tables=treatment p/format=validlist nocasenum nototal /title='Theoretical Probabilities \n of Assignment'/cells=none. compute k=rnd(p*10**6). execute. loop x=1 to k. xsave outfile=file1/keep=Treatment. end loop. execute. get file=file1. execute. set rng=mt mtindex=random. compute random=uniform(1). execute. sort cases by random (a). * Replace "?" by the number of units per study [in the example 520]. n of cases ?. execute. save outfile=file2. data list list/Stratum(f8.0) nunits(f8.3). * Enter Stratum number and number of units per stratum. begin data 1 100 2 120 3 140 4 160 end data. loop y=1 to nunits. xsave outfile=file3/keep=Stratum. end loop. execute. get file=file3. execute. match files/file=*/file=file2. execute. compute unitx=$casenum. execute. rank variables=unitx(a) by Stratum/print=no. variable labels runitx "Unit". formats all(f8.0). summarize/tables=Stratum runitx treatment/format=validlist nocasenum nototal /title='Stratified Random Assignment \n Sorted by Stratum/Unit'/cells=none. sort cases by treatment(a) Stratum(a) runitx(a). summarize/tables=Stratum runitx treatment/format=validlist nocasenum nototal /title='Stratified Random Assignment \n Sorted by Treatment'/cells=none. oms/select tables/if commands=["crosstabs"] subtypes=["case processing summary"]/destination viewer=no. crosstabs/tables=Stratum by Treatment/cells=count row. restore.