******************************************************************** * * * Validity studies correlating student ratings of the instructor * * with student achievement * * * * Data: n = sample size * * r = correlation coefficient * * * * Combining effect sizes using PROC MIXED * * * ********************************************************************; OPTIONS NODATE NONUMBER; DATA validity; INPUT study n r @@; /* !!! Very important !!! SAS variable name for variance MUST be "est" for easy use in PROC MIXED */ est = (1 - r**2)**2 / (n-1); DATALINES; 1 10 0.68 2 20 0.56 3 13 0.23 4 22 0.64 5 28 0.49 6 12 -0.04 7 12 0.49 8 36 0.33 9 19 0.58 10 12 0.18 11 36 -0.11 12 75 0.27 13 33 0.26 14 121 0.40 15 37 0.49 16 14 0.51 17 40 0.40 18 16 0.34 19 14 0.42 20 20 0.16 ; ODS SELECT SolutionF; PROC MIXED DATA=validity METHOD=ml; CLASS study; MODEL r = / S CL; * each study has its own variance; REPEATED / GROUP = study; * parmsdata option read the variable est from data set WORK.validity and the within-trial variances are kept constant; PARMS / PARMSDATA = validity EQCONS = 1 to 20; TITLE "Generic Method for Combining Effects Sizes Using SAS PROC MIXED"; TITLE2 "Note: percentiles of t-distribution are used for calculating confidence intervals"; RUN; /* To mimick large sample intervals you could use the following programming code: */ DATA validity_ls; SET validity; * add a constant one; int=1; RUN; ODS SELECT SolutionF; PROC MIXED DATA=validity_ls METHOD=ml; CLASS study; * use constant one as explanatory variable, remove the "standard" intercept, and change the denominator degrees of freedom ; MODEL r = int / NOINT S CL DDF=10000; * each study has its own variance; REPEATED / GROUP = study; * parmsdata option read the variable est from data set WORK.validity and the within-trial variances are kept constant; PARMS / PARMSDATA = validity_ls EQCONS = 1 to 20; TITLE "Generic Method for Combining Effects Sizes Using SAS PROC MIXED"; TITLE2 "Large sample confidence intervals"; RUN;