
**************************************************************
*  MACRO NAME:         RMPOSTB.SPS                           *
*                                                            *
*  README FILE:        RMPOST.RM                             *
*                                                            *
*  SPSS REQUIREMENTS:  Release 6.0 or above                  *
*                      Advanced Statistics Module            *
*                                                            *
*  AUTHOR:             David Nichols (nichols@spss.com)      *
*                                                            *
*  LAST UPDATED:       09/13/96                              *
**************************************************************

preserve
set printback=off mprint=off
define rmpost (var=!charend('/') /alpha=!default(.05) !charend('/'))
preserve
set printback=off mprint=off results=off
save outfile=rm__tmp1.sav
count ms__ = !var (missing)
select if ms__ = 0
set results off
correlations !var /missing=listwise /matrix out(*) 
do if rowtype_='CORR'
recode !var (sysmis=0)
end if
execute
mconvert
matrix
get x /var=!var
compute k=ncol(x)
compute n=x(3,1)
compute ncomp=k*(k-1)/2
compute dfe=make(ncomp,1,n-1)
compute mean1=make(ncomp,1,0)
compute mean2=make(ncomp,1,0)
compute diff=make(ncomp,1,0)
compute sediff=make(ncomp,1,0)
compute pval=make(ncomp,1,1-(!alpha/ncomp))
compute h=0
loop #i=1 to k-1
+  loop #j=#i+1 to k
+   compute h=h+1
+   compute mean1(h)=#i
+   compute mean2(h)=#j
+   compute diff(h)=x(1,#i)-x(1,#j)
+   compute sediff(h)=sqrt((x(#i+3,#i)+x(#j+3,#j)-2*x(#i+3,#j))/n)
+ end loop
end loop
save {mean1,mean2,diff,sediff,dfe,pval}
 /outfile=rm__tmp2.sav
 /variables=mean1,mean2,diff,sediff,dfe,pval
end matrix
get file=rm__tmp2.sav
compute lower=diff-sediff*sqrt(idf.f(pval,1,dfe))
compute upper=diff+sediff*sqrt(idf.f(pval,1,dfe))
compute sig1=0
if lower gt 0 or upper lt 0 sig1=1
string vs (a3) sig (a2)
recode vs ('   '='vs.')
do if sig1=1
recode sig ('  '='**')
end if
formats mean1 mean2 (f2.0) diff sediff lower upper (f7.6)
variable labels mean1 'Mean' mean2 'Mean' vs '' sig 'Sig.'
variable labels diff 'Mean Difference' sediff 'Standard Error of Difference'
variable labels lower 'Lower Bound' upper 'Upper Bound'
set results on
report format=list automatic align(center)
 /variables=mean1 vs mean2 sig diff sediff lower upper
 /title='Bonferroni Pairwise Comparisons'
get file=rm__tmp1.sav
restore
!enddefine
restore

