*BEGINNING OF BROWN-FORSYTHE F* MACRO. * begin bf.sps. preserve. set printback=off mprint=off. define bf (groups=!charend('/') /dep=!charend('/')). save outfile='bf__tmp1.sav'. count ms__ = !groups !dep (missing). select if ms__ = 0. aggregate outfile=* /break=!groups /n__=n /mean__=mean(!dep) /sd__=sd(!dep). select if sd__ gt 0. matrix. get n /var=n__. get mean /var=mean__. get sd /var=sd__. compute g=nrow(n). compute gm=(t(n)*mean)/msum(n). compute num=t(n)*((mean-make(g,1,gm))&**2). compute cnum=(make(g,1,1)-n&/make(g,1,msum(n)))&*(sd&**2). compute den=msum(cnum). compute c=cnum/den. compute recip=msum(c&**2&/(n-1)). compute f=num/den. compute ndf=g-1. compute ddf=1/recip. compute sig=1-fcdf(f,ndf,ddf). save {f,ndf,ddf,sig} /outfile='bf__tmp2.sav' /variables=f,ndf,ddf,sig. end matrix. get file='bf__tmp2.sav'. formats f (f7.3) ndf (f7.0) ddf (f7.2) sig (f7.5). variable labels f 'Brown-Forsythe F-Stat' /ndf 'DFH' /ddf 'DFE' /sig 'P-Value'. report format=list automatic align(center) /variables=f ndf ddf sig /title "Brown and Forsythe's Robust Test for Equality of Means". get file='bf__tmp1.sav'. erase file='bf__tmp2.sav'. !enddefine. restore. *end bf.sps. *END OF BROWN-FORSYTHE F* MACRO. *BEGINNING OF WELCH W MACRO *begin welch.sps. preserve. set printback=off mprint=off. define welch (groups=!charend('/') /dep=!charend('/')). save outfile='wf__tmp1.sav'. count ms__ = !groups !dep (missing). select if ms__ = 0. aggregate outfile=* /break=!groups /n__=n /mean__=mean(!dep) /sd__=sd(!dep). select if sd__ gt 0. matrix. get n /var=n__. get mean /var=mean__. get sd /var=sd__. compute g=nrow(n). compute wi=n&/(sd&**2). compute u=msum(wi). compute xtilda=t(wi)*mean/u. compute num=t(wi)*(((mean-make(g,1,xtilda))&**2)/(g-1)). compute den=1+(2*(g-2)/(g**2-1))*msum(((make(g,1,1)-wi/u)&**2)&/(n-1)). compute f=num/den. compute ndf=g-1. compute ddf=(g**2-1)/(3*msum(((make(g,1,1)-wi/u)&**2)&/(n-1))). compute sig=1-fcdf(f,ndf,ddf). save {f,ndf,ddf,sig} /outfile='wf__tmp2.sav' /variables=f,ndf,ddf,sig. end matrix. get file='wf__tmp2.sav'. formats f (f7.3) ndf (f7.0) ddf (f7.2) sig (f7.5). variable labels f 'Welch F-Stat' /ndf 'DFH' /ddf 'DFE' /sig 'P-Value'. report format=list automatic align(center) /variables=f ndf ddf sig /title "Welch's Robust Test for Equality of Means". get file='wf__tmp1.sav'. erase file='wf__tmp2.sav'. !enddefine. restore. *end welch.sps. *END OF WELCH W MACRO