DEFINE BOOTDIFF (var = !charend('/')/grp = !tokens(1)). SET MXLOOP = 100000. preserve. set length = none. set seed = random. MATRIX. get xy/variables = !grp !var/missing = omit. compute y = xy(:,2). compute x = xy(:,1). compute v=design(x). compute my = csum(y)/nrow(y). compute ni = csum(v). compute v = 2-v. compute y1=make(ni(1,1),1,0). compute y2=make(ni(1,2),1,0). compute y1c=1. compute y2c= 1. loop cse = 1 to nrow(x). do if (v(cse,1))=1. compute y1(y1c,1)=y(cse,1). compute y1c=y1c+1. else if (v(cse,1))=2. compute y2(y2c,1)=y(cse,1). compute y2c=y2c+1. end if. end loop. compute y1d = y1. compute y2d = y2. compute m1s=csum(y1)/ni(1,1). compute m2s = csum(y2)/ni(1,2). compute y1t=y1-m1s+my. compute y2t =y2-m2s+my. compute res=make(1001,1,0). compute res3=res. loop bootn = 1 to 1001. do if (bootn > 1). compute u=trunc(uniform(ni(1,1),1)*ni(1,1))+1. compute y1=y1t(u,1). compute y1e = y1d(u,1). compute u=trunc(uniform(ni(1,2),1)*ni(1,2))+1. compute y2b=y2t(u,1). compute y2e=y2d(u,1). compute m1=csum(y1e)/ni(1,1). compute m2 = csum(y2e)/ni(1,2). compute res3(bootn,1)=(m1-m2). end if. do if (bootn = 1). compute v1 = (ni(1,1)*cssq(y1)-(csum(y1)&**2))/(ni(1,1)*(ni(1,1)-1)). compute v2 = (ni(1,2)*cssq(y2)-(csum(y2)&**2))/(ni(1,2)*(ni(1,2)-1)). compute v1s = sqrt(v1). compute v2s = sqrt(v2). compute m1s=csum(y1)/ni(1,1). compute m2s = csum(y2)/ni(1,2). end if. compute m1=csum(y1)/ni(1,1). compute m2 = csum(y2)/ni(1,2). compute res(bootn,1)=(m1-m2). end loop. compute res2=res(2:1001,1). compute rest = (abs(res2) >= abs(res(1,1))). compute ptwo=csum(rest)/(1000). compute rest = (res2 >= abs(res(1,1))). compute pright = csum(rest)/(1000). compute rest = (res2 <= -abs(res(1,1))). compute pleft = csum(rest)/(1000). compute pval = {ptwo; pright; pleft}. compute res3=res3(2:1001,1). compute mnb = {-999;res3}. loop #i = 2 to 1001. compute ix = mnb(#i,1). loop #k= #i to 2 by -1. compute k = #k. do if (mnb(#k-1,1) > ix). compute mnb(#k,1)=mnb(#k-1,1). else if (mnb(#k-1,1) <= ix). BREAK. end if. end loop. compute mnb(k,1)=ix. end loop. compute res3 = mnb. print/title = "***** BOOTSTRAP TWO GROUP MEAN DIFFERENCE *****". compute res2={m1s, v1s, ni(1,1); m2s,v2s, ni(1,2)}. print res2/title = "Obtained Results"/rlabels = "group 1" "group 2"/clabels = "Mean" "SD" "n"/format F8.4. compute tob=res(1,1). compute bootn = 1000. print tob/title = "Obtained Mean Difference (Mean 1 - Mean 2)"/format F8.4. compute loci = res3(25,1). compute hici = res3(976,1). compute bw={loci, hici}. print/title = "BOOTSTRAP 95% CONFIDENCE INTERVAL FOR DIFFERENCE". print bw/title = " "/clabels = "Lo95%CI " "Hi95%CI"/format f9.4. print pval/title = "Bootstrap p-values"/rlabels "2-tail p" "Right-p" "Left-p"/format F8.4. print bootn/title = "Number of bootstrap samples"/format F8.0. compute res2=res(2:1001,1). compute res3=res3(2:1001,1). save res3/outfile = 'c:\bootn.sav' . END MATRIX. RESTORE. !END DEFINE.