Aargh! I am going nuts. Sorry. Ignore the discussion below on how to
improve Syntax 2. The new Syntax works fine! Best, John. >Date: Mon, 30 Oct 2006 11:16:41 +0100 >To: <[hidden email]> >From: John Antonakis <[hidden email]> >Subject: RE: Assigning subjects randomly to groups > >Ah ha! Now this syntax (Syntax 2) certainly does work: > >input program. >loop #I=1 to 20. >compute id=$casenum . >end case. >end loop. >end file. >end input program. >formats id (F8.0). >execute. > >compute x=uniform(1). >formats x (F8.3). >execute. > >sort cases by x. >compute sid=$casenum . >if (sid LE 10) groups=0. >if (sid GT 10) groups=1. >formats sid groups (F8.0). >execute. > >I think that the confusion may have stemmed from the fact that Syntax 2 >does not do the same thing as the Syntax 1 you gave me: > >input program. >loop #I=1 to 20. >compute x=uniform(1). >end case. >end loop. >end file. >end input program. >formats x (F8.2). >sort cases by x. >compute id=$casenum . >if (id LE 10) group=0. >if (id GT 10) group=1. >print table/ $casenum group. >execute. > >As I see it, the problem with Syntax 1 is that you assigned the casenum >AFTER the sort and not BEFORE the sort. That is, if we run Syntax 1 and >bring the compute id=$casenum to the third line, the program works just fine! > >input program. >loop #I=1 to 20. >compute id=$casenum . >compute x=uniform(1). >end case. >end loop. >end file. >end input program. >formats x (F8.2). >sort cases by x. >if (id LE 10) group=0. >if (id GT 10) group=1. >print table/ $casenum group. >execute. > >Running revised Program 1, gives the following example output: > ID X Group > 16.00 .01 1.00 > 3.00 .05 .00 > 12.00 .23 1.00 > 10.00 .26 .00 > 4.00 .28 .00 > 8.00 .34 .00 > 17.00 .35 1.00 > 13.00 .41 1.00 > 1.00 .45 .00 > 9.00 .51 .00 > 5.00 .53 .00 > 7.00 .54 .00 > 20.00 .61 1.00 > 14.00 .62 1.00 > 6.00 .71 .00 > 18.00 .71 1.00 > 19.00 .83 1.00 > 11.00 .90 1.00 > 2.00 .93 .00 > 15.00 .94 1.00 > >However, running old Program 1 gives the following example: > ID X Group > .01 1.00 .00 > .04 2.00 .00 > .09 3.00 .00 > .10 4.00 .00 > .13 5.00 .00 > .28 6.00 .00 > .40 7.00 .00 > .45 8.00 .00 > .48 9.00 .00 > .50 10.00 .00 > .62 11.00 1.00 > .72 12.00 1.00 > .75 13.00 1.00 > .83 14.00 1.00 > .84 15.00 1.00 > .84 16.00 1.00 > .85 17.00 1.00 > .96 18.00 1.00 > .97 19.00 1.00 > .98 20.00 1.00 > >Is my explanation off? I think am OK with everything now. Thank you very >much for taking the time to explain everything nicely. > >Best, >J. > >At 17:13 29.10.2006 -0800, Dominic Lusinchi wrote: >>John, >> >>The "misexplaining" could very well be on my end. >> >>Imagine an urn with 20 balls, 10 of which are "0" balls and the other 10 are >>"1" balls. If you have each of the 20 people pick a ball in turn (without >>replacement), there are 20!/10!10! or 184756 arrangements, each equally >>likely: 00000000001111111111 is one such arrangement. >> >>What "compute x=uniform(1)." does is assign a random number between 0 and 1 >>to each participant. Once this is done: there is the lowest ten numbers (say >>the 0s) and the highest ten (the 1s), but they are in a random order: what >>the "sort by" does is to arrange them in ascending order, so we can easily >>distinguish them. >> >>The fact that we want to obtain two equal-size groups does not affect the >>random assignment. >> >>Perhaps, one way to see that this is a random assignment is to do this in >>stages. Let's say you have given each of the participants a number from 1 to >>20. Let's do this using: >>input program. >>loop #I=1 to 20. >>compute id=$casenum . >>end case. >>end loop. >>end file. >>end input program. >>formats id (F8.0). >>execute. >> >>The result: >> >>Id >>1 >>2 >>3 >>4 >>5 >>6 >>7 >>8 >>9 >>10 >>11 >>12 >>13 >>14 >>15 >>16 >>17 >>18 >>19 >>20 >> >>Now we assign a random number to each individual: >>compute x=uniform(1). >>formats x (F8.3). >>execute. >> >>The data file looks like this now: >> >>id x >>1 .206 >>2 .773 >>3 .067 >>4 .527 >>5 .662 >>6 .936 >>7 .316 >>8 .523 >>9 .766 >>10 .127 >>11 .559 >>12 .983 >>13 .325 >>14 .536 >>15 .508 >>16 .282 >>17 .347 >>18 .921 >>19 .408 >>20 .096 >> >>Now let's manually assign a 0 to the lowest 10 numbers. In Variable View >>let's create a new variable called "group". Here is what we get: >> >>id x group >>1 .206 0 >>2 .773 . >>3 .067 0 >>4 .527 . >>5 .662 . >>6 .936 . >>7 .316 0 >>8 .523 . >>9 .766 . >>10 .127 0 >>11 .559 . >>12 .983 . >>13 .325 0 >>14 .536 . >>15 .508 0 >>16 .282 0 >>17 .347 0 >>18 .921 . >>19 .408 0 >>20 .096 0 >> >>Now, we can replace each period with a 1, and we have our two groups. The >>arrangement is: 01011101101101000100. >> >>The syntax does the same thing, except that we use "sort by" to create the >>groups syntactically instead of manually. >> >>So John try this to visualize the process: >> >>Stage 1: >>input program. >>loop #I=1 to 20. >>compute id=$casenum . >>end case. >>end loop. >>end file. >>end input program. >>formats id (F8.0). >>execute. >> >>Stage 2: >>compute x=uniform(1). >>formats x (F8.3). >>execute. >> >>Stage 3: In the data file created so far, create a group variable and in the >>Data View, and then manually enter 0s next to the lowest 10 numbers, and 1s >>next to the remaining numbers (the highest 10). >> >>Stage 4: >>sort cases by x. >>compute sid=$casenum . >>if (sid LE 10) groups=0. >>if (sid GT 10) groups=1. >>formats sid groups (F8.0). >>execute. >> >>The grouping in "group" (done manually) and "groups" (done syntactically) >>should correspond - if you did not make a mistake manually :-) >> >>Hope this clarifies things. >>Cheers, >>Dominic >> >>-----Original Message----- >>From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of >>John Antonakis >>Sent: Sunday, October 29, 2006 12:12 PM >>To: [hidden email] >>Subject: Re: Assigning subjects randomly to groups >> >>Dominic: >> >>Thank you for taking the time to explain this to me. >>Unfortunately, I still don't get it (I am certainly >>misunderstanding or misexplaining something)! I realize that >>what I have done is a "restricted random assignment" of >>sorts. If it were really random then I would probably have >>unbalanced groups with such a small sample (hence I am >>forcing equal sample sizes). >> >>I still don't see how your procedure is works. From the >>printout below, person 1 to 10 is assigned to group 0 and >>person 11 to 20 to group 1. Where is the random assignment? >> >> >> x id group >> .01 1.00 .00 >> .19 2.00 .00 >> .19 3.00 .00 >> .24 4.00 .00 >> .27 5.00 .00 >> .38 6.00 .00 >> .48 7.00 .00 >> .54 8.00 .00 >> .58 9.00 .00 >> .60 10.00 .00 >> .66 11.00 1.00 >> .67 12.00 1.00 >> .67 13.00 1.00 >> .71 14.00 1.00 >> .84 15.00 1.00 >> .87 16.00 1.00 >> .93 17.00 1.00 >> .95 18.00 1.00 >> .98 19.00 1.00 >> .99 20.00 1.00 >> >>If I use the following code, will it make any difference to >>you (I am telling SPSS to include the case number--I did not >>do that before, but assumed row number to be case >>number--perhaps there is where I was not explicit)? >> >>input program. >>loop #I=1 to 20. >>if (#I<=10) group=0. >>if (#I>10) group=1. >>compute x=normal(1). >>end case. >>end loop. >>end file. >>end input program. >>sort cases by x. >>compute id=$casenum. >>print table/ $casenum group. >>execute. >> >> >>Could you give it one more shot? >> >>Best, >>John. >> >>----- Original Message ----- >>Expéditeur: "Dominic Lusinchi" >><[hidden email]> >>à: "'John Antonakis'" <[hidden email]>, >><[hidden email]> >>Sujet: RE: Assigning subjects randomly to groups >>Date: Sun, 29 Oct 2006 08:57:57 -0800 >> >> > John, >> > >> > The goal, if I understand, is to assign 20 individuals to >> > either a control group (0) or a treatment group (1) with >> > 10 persons in each group. >> > >> > First, each individual is assigned a random number between >> > 0 and 1, based on the uniform distribution. Once these >> > numbers have been assigned, they are sorted here in >> > ascending order, and then the first ten numbers are >> > assigned to the control group while the last ten to the >> > treatment. >> > >> > You will agree, will you not, that each individual is as >> > likely to be in the control group as in the treatment by >> > virtue of the random number associated with that >> > individual? In other words, an individual is as likely to >> > be among the first ten as among the last ten. >> > >> > In you original code, if I'm correct, you assigned the >> > number 1 to 20 to the individuals, then you told the >> > program to put the first ten in the control group (0) and >> > the others in the treatment group (1). This is not a >> > random assignment. The fact that each individual is >> > assigned, after being placed in one of the two groups, a >> > random number does not make the group assignment random. >> > The random number should be assigned first, and then the >> > group assignment can be accomplished. >> > >> > Yes? >> > >> > Dominic >> > >> > -----Original Message----- >> > From: John Antonakis [mailto:[hidden email]] >> > Sent: Sunday, October 29, 2006 1:29 AM >> > To: [hidden email] >> > Cc: Dominic Lusinchi >> > Subject: RE: Assigning subjects randomly to groups >> > >> > Hi Dominic: >> > >> > Thanks for the comments and the new code. Why precisely, >> > does the old code not assign randomly? It seems to me >> > that it generates random numbers, sorts the numbers, and >> > then assigns individuals to groups based on the random >> > numbers. For example, I get: >> > >> > Group x >> > .00 -1.46 >> > 1.00 -1.40 >> > .00 -1.16 >> > 1.00 -.51 >> > .00 -.46 >> > 1.00 -.35 >> > .00 -.10 >> > .00 .14 >> > 1.00 .34 >> > 1.00 .56 >> > .00 .68 >> > .00 .73 >> > .00 .76 >> > .00 .95 >> > 1.00 .97 >> > .00 1.03 >> > 1.00 1.18 >> > 1.00 1.40 >> > 1.00 1.42 >> > 1.00 2.05 >> > >> > So based on the above, person 1 is assigned to group 0, >> > person 2 to group 1, person 3 to group zero, and so >> > forth. >> > >> > Also, I don't see how your new code works. When I run it, >> > I get for example: >> > >> > x id group >> > .01 1.00 .00 >> > .19 2.00 .00 >> > .19 3.00 .00 >> > .24 4.00 .00 >> > .27 5.00 .00 >> > .38 6.00 .00 >> > .48 7.00 .00 >> > .54 8.00 .00 >> > .58 9.00 .00 >> > .60 10.00 .00 >> > .66 11.00 1.00 >> > .67 12.00 1.00 >> > .67 13.00 1.00 >> > .71 14.00 1.00 >> > .84 15.00 1.00 >> > .87 16.00 1.00 >> > .93 17.00 1.00 >> > .95 18.00 1.00 >> > .98 19.00 1.00 >> > .99 20.00 1.00 >> > >> > How does the above constitute random assignment? >> > >> > Best regards, >> > John. >> > >> > At 14:45 28.10.2006 -0700, Dominic Lusinchi wrote: >> > >John, >> > > >> > >Greg is right but your original syntax should read: >> > > >> > >input program. >> > >loop #I=1 to 20. >> > >if (#I LE 10) group=0. >> > >if (#I GT 10) group=1. >> > >compute x=normal(1). >> > >end case. >> > >end loop. >> > >end file. >> > >end input program. >> > >sort cases by x. >> > >print table/ $casenum group. >> > >execute. >> > > >> > >Richard is also correct in saying there's nothing >> > particularly random about >the way your syntax makes the >> > assignment. I think what you are looking for >is the >> > following: > >> > >input program. >> > >loop #I=1 to 20. >> > >compute x=uniform(1). >> > >end case. >> > >end loop. >> > >end file. >> > >end input program. >> > >formats x (F8.2). >> > >sort cases by x. >> > >compute id=$casenum . >> > >if (id LE 10) group=0. >> > >if (id GT 10) group=1. >> > >print table/ $casenum group. >> > >execute. >> > > >> > >Hope it makes sense. >> > > >> > >Cheers, >> > >Dominic >> > > >> > >Dominic Lusinchi >> > >Statistician >> > >Far West Research >> > >Statistical Consulting >> > >San Francisco, California >> > >415-664-3032 >> > >www.farwestresearch.com >> > >-----Original Message----- >> > >From: SPSSX(r) Discussion >> > [mailto:[hidden email]] On Behalf Of >John >> > Antonakis >Sent: Saturday, October 28, 2006 9:18 AM >> > >To: [hidden email] >> > >Subject: Assigning subjects randomly to groups >> > > >> > >Hi: >> > > >> > >I am executing the below program (from Shadish, Cook & >> > >Campbell's book) to assign 20 subjects randomly to an >> > >experimental and control group >> > > >> > >input program. >> > >loop #I=1 to 20. >> > >if (#I<10) group=0. >> > >if (#I>10) group=1. >> > >compute x=normal(1). >> > >end case. >> > >end loop. >> > >end file. >> > >end input program. >> > >sort cases by x. >> > >print table/ $casenum group. >> > >execute. >> > > >> > >When I run the program (in SPSS ver 14.0), it gives me a >> > >missing value for some of the members of the group. Any >> > >thoughts? >> > > >> > >Thanks, >> > >J. >> > > >> > >___________________________________ >> > > >> > >Prof. John Antonakis >> > >School of Management and Economics >> > >University of Lausanne >> > >Internef #527 >> > >CH-1015 Lausanne-Dorigny >> > >Switzerland >> > > >> > >Tel: ++41 (0)21 692-3438 >> > >Fax: ++41 (0)21 692-3305 >> > > >> > >http://www.hec.unil.ch/jantonakis >> > >___________________________________ >> > >> > ___________________________________ >> > >> > Prof. John Antonakis >> > School of Management and Economics >> > University of Lausanne >> > Internef #527 >> > CH-1015 Lausanne-Dorigny >> > Switzerland >> > >> > Tel: ++41 (0)21 692-3438 >> > Fax: ++41 (0)21 692-3305 >> > >> > http://www.hec.unil.ch/jantonakis >> > ___________________________________ >> > >> > >> > >> >>___________________________________ >> >>Prof. John Antonakis >>School of Management and Economics >>University of Lausanne >>Internef #527 >>CH-1015 Lausanne-Dorigny >>Switzerland >> >>Tel: ++41 (0)21 692-3438 >>Fax: ++41 (0)21 692-3305 >> >>http://www.hec.unil.ch/jantonakis >>___________________________________ > >___________________________________ > >Prof. John Antonakis >School of Management and Economics >University of Lausanne >Internef #527 >CH-1015 Lausanne-Dorigny >Switzerland > >Tel: ++41 (0)21 692-3438 >Fax: ++41 (0)21 692-3305 > >http://www.hec.unil.ch/jantonakis >___________________________________ ___________________________________ Prof. John Antonakis School of Management and Economics University of Lausanne Internef #527 CH-1015 Lausanne-Dorigny Switzerland Tel: ++41 (0)21 692-3438 Fax: ++41 (0)21 692-3305 http://www.hec.unil.ch/jantonakis ___________________________________ |
Free forum by Nabble | Edit this page |