*Meta analysis, D. Wilson (2005) George Mason University, Manassas, VA; %MACRO meanes(es,w,dsn=_last_,print=raw) ; proc iml; use &dsn ; read all var{&es} into es where(&es^=. & &w^=.) ; read all var{&w} into w where(&es^=. & &w^=.) ; k = nrow(es) ; df = k - 1 ; mes = sum(es#w)/sum(w); sem = sqrt(1/sum(w)); les = mes - 1.95996*sem; ues = mes + 1.95996*sem; z = mes/sem ; pz = (1 - (.5+erf(abs(z)/sqrt(2))/2))*2 ; maxes = max(es) ; mines = min(es) ; q = sum((es#es)#w) - sum(es#w)#sum(es#w)/sum(w); wsd = sqrt(q*w[+,]**-1) ; pq = 1-probchi(q,df) ; c = (q - df)/(w[+,]-sum(w#w)/w[+,]) ; if c<0 then ; do ; c = 0 ; end ; wre = 1/(1/w + c) ; mesre = sum(es#wre)/sum(wre) ; semre = sqrt(1/sum(wre)) ; lesre = mesre - 1.95996*semre ; uesre = mesre + 1.95996*semre ; zre = mesre/semre ; pzre = (1 - (.5+erf(abs(zre)/sqrt(2))/2))*2 ; %if %upcase(&print) = EXP %then %do; mes = exp(mes) ; les = exp(les) ; ues = exp(ues) ; sem = . ; mes_re = exp(mes_re) ; les_re = exp(les_re) ; ues_re = exp(ues_re) ; semre = . ; %end; print '-------------- Distribution Description --------------'; mattrib k label={"No. of obs."} maxes label={"Max Obs."} mines label={"Min Obs."} wsd label={"Weighted SD"}; print k mines maxes wsd [format=12.5]; print " "; print '-------------- Homogeneity Analysis --------------'; mattrib df label={"df"} pq label={"p"} ; print q [format=12.5] df pq [format=12.5]; print " "; print '-------------- Fixed & Random Effects Model --------------'; fixed = mes || sem || les || ues || z || pz ; random = mesre || semre || lesre || uesre || zre || pzre ; model = fixed // random ; mattrib model rowname=({'Fixed', 'Random'}) colname=({'Mean' 'SE' '-95%CI' '+95%CI' 'z' 'p'}) label={"Model"}; print model [format=10.5]; mattrib c label={" "}; print c [rowname="Random effects var. component = "]; %MEND meanes;