/* THIS MACRO WILL EMPIRICALLY GENERATE THE */. /* SAMPLING DISTRIBUTION OF THE SAMPLE MEAN */. /* WHEN TAKING A RANDOM SAMPLE OF SIZE = n */. /* FROM THE POPULATION STORED ON THE C DRIVE */. /* IN FILE NAME POP.SAV */. /* THIS FILE SHOULD CONTAIN A SINGLE COLUMN */. /* LABELED Y, WITH THE MEMBERS OF THE POPULATION */. /* RESIDING IN EACH ROW */. /* AFTER ACTIVATING THE MACRO */. /* THE SYNTAX IS MEANSAMP size = n samples = rep */. /* WHERE n IS THE SAMPLE SIZE AND rep IS THE NUMBER */. /* OF SAMPLES FROM THE POPULATION DESIRED */. /* EACH SAMPLE MEAN WILL BE DISPLAYED AS A ROW IN */. /* THE ACTIVE DATA WINDOW */. DEFINE MEANSAMP (size = !tokens(1)/samples = !cmdend). PRESERVE. SET MXLOOP = !samples. MATRIX. compute s = !size. compute sam = !samples. compute result = uniform(sam,1). get tv/file = 'c:\pop.sav'/variable = y/missing = omit/sysmis = omit. compute n = nrow(tv). compute popmean = csum(tv)/n. do if (s > n). print/title = "ERROR: SAMPLE SIZE IS LARGER THAN POPULATION". print/title = "DISREGARD OUTPUT THAT FOLLOWS". end. end if. loop rep = 1 to sam. loop cse = 1 to n. compute k = trunc(uniform(1,1)*(n-cse+1))+cse. compute temp=tv(cse,1). compute tv(cse,1) = tv(k,1). compute tv(k,1) = temp. end loop. compute sample = tv(1:s,1). compute result(rep,1) = csum(sample)/s. end loop. save result/outfile = */variables = smean. compute mat = {s;sam;popmean; n}. print mat/title = "Simulation Characteristics"/rlabels = "n" "Samples" "PopMean" "PopSize"/format = F10.4. END MATRIX. GRAPH /HISTOGRAM=smean . RESTORE. !END DEFINE.