DISCLAIMER ADJUSTP is provided "as is" without warranty of any kind. The entire risk as to the quality, performance, and fitness for intended purpose is with you. You assume responsibility for the selection of the program and for the use of results obtained from that program. DESCRIPTION There are 8 p-value adjustment algorithms available. They include one-step, step-down and step-up adjustment methods. 1. One-Step Bonferroni 2. One-Step Sidak [References 1 and 2] 3. Step-Down Holm [3] 4. Step-Down Sidak [1,2,4 and 5] 5. Step-Down Finner [4 and 5] 6. Step-Up Hommel [6 and 7] 7. Step-Up Hochberg [8] 8. Step-Up Simes [9] All the results have been tested with Multiplicity program (2.0) , by Barry W. Brown, The University of Texas M D Anderson Cancer Center. ALGORITHMS The following nomenclature will be used: n = number of p-values p(i) = ith smallest p-value p#(i) = adjusted value of p(i) In one-step adjustment methods p-values are compared to a predetermined value that is a function of alpha, the significance level, and n, the number of p-values. - One-step Bonferroni: p#(i) = n*p(i) - One-Step Sidak: p#(i) = 1-(1-p(i))^n In step-down methods p-values are examined in order, from smallest to largest. Once a p-value is found that is large according to a criterion based on alpha and the p-value's position in the list, that p-value and all larger p-values are accepted. - Step-down Holm: p#(i) = (n-i+1)*p(i) - Step-down Sidak: p#(i) = 1-(1-p(i))^(n-i+1) - Step-down Finner: p#(i) = 1-(1-p(i))^(n/i) In step-up methods p-values are examined in order, from largest to smallest. Once a p-value is found that is small according to a criterion based on alpha and the p-value's position in the list, that p-value and all smaller p-values are rejected. - Step-up Hommel: p#(i) = n*Cn*p(i)/i Cn = 1+1/2+ ... +1/n - Step-up Hochberg: p#(i) = (n-i+1)*p(i) - Step-up Simes: p#(i) = n*p(i)/i See [10] for a general reference on p-value adjustment algorithms. REFERENCES 1. Sidak Z (1967) "Rectangular Confidence Regions for the Means of Multivariate Normal Distributions" American Statistical Association, 62, 626-633. 2. Sidak Z (1971) "On probabilities of rectangles in multivariate Student distributions: their dependence on correlations" Ann Math Statist, 42, 169-175. 3. Holm S (1979) "A Simple Sequentially Rejective Multiple Test Procedure" Scandinavian Journal of Statistics, 6, 65-70. 4. Finner H (1990) "Some New Inequalities for the Rnad Distribution With Application to the determination of Optimum Significance Levels of Multiple Range Tests" Journal of the American Statistical Association, 85, 191-194. 5. Finner H (1993) "On A Monotonicity Problem in Step-Down Multiple Test Procedures" Journal of the American Statistical Association, 88, 920-923. 6. Hommel G (1988) "A stagewise rejective multiple test procedure based on a modified Bonferroni test" Biometrika, 75, 383-386. 7. Falk RW (1989) "Hommel's Bonferroni-type inequality for unequally spaced levels" Biometrika, 76, 190-191. 8. Hochberg Y and Benjamini Y (1990) "More powerful procedures for multiple significance testing" Statistics in Medicine, 9, 811-818. 9. Simes RJ (1986) "An improved Bonferroni procedure for multiple tests of significance" Biometrika, 73, 751-754. 10. Westfall PH and Young SS (1993), Resampling-Based Multiple Testing: examples and methods for p-value adjustment. New York: John Wiley and Sons. ********************************************************************** * BEGINNING OF SYNTAX * Create dataset with p-values. Replace by your own *. DATA LIST LIST / pvalue(F9.4). BEGIN DATA 0.0728 0.0023 0.3829 0.0041 0.0101 0.4557 END DATA. * SOME AUXILIARY VARIABLES *. COMPUTE id = $CASENUM. FORMAT id (F2.0). SORT CASES BY pvalue (A) . COMPUTE pos = $CASENUM. FORMAT pos (F2.0). * Calculate the number of p values *. PRESERVE. SET ERRORS=NONE RESULTS=NONE. RANK pvalue /n into N /PRINT = NO. RESTORE. * ADJUSTED P-VALUES *. * (1) ONE STEP METHODS *. COMPUTE bonferr = MIN(1,pvalue*n). COMPUTE sidak = 1-(1-pvalue)**n. * (2) STEP-DOWN METHODS *. COMPUTE holm = MIN(1,(n-pos+1)*pvalue). IF (holm LT LAG(holm)) holm = LAG(holm). COMPUTE downsidk = 1-(1-pvalue)**(n-pos+1). IF (downsidk LT LAG(downsidk)) downsidk = LAG(downsidk). COMPUTE finner = 1-(1-pvalue)**(n/pos). IF (finner LT LAG(finner)) finner = LAG(finner). * (3) STEP-UP METHODS *. COMPUTE cn = cn+1/pos . LEAVE cn. /* With thanks to Richard Ristow for showing me the use of LEAVE *. SORT CASES BY pos(D). IF cn LT LAG(cn) cn = LAG(cn). COMPUTE hommel = MIN(1,cn*n*pvalue/pos). IF (hommel GT LAG(hommel)) hommel = LAG(hommel). COMPUTE hochberg = (n-pos+1)*pvalue. IF (hochberg GT LAG(hochberg)) hochberg = LAG(hochberg). COMPUTE simes = n*pvalue/pos. IF (simes GT LAG(simes)) simes = LAG(simes). EXECUTE. DELETE VARIABLES pos,n,cn. * FINAL REPORT *. FORMAT bonferr to simes (f9.4). VARIABLE LABELS id 'Nr.' /pvalue 'Original p-value' /bonferr 'One-step Bonferroni' /sidak 'One-step Sidak' /holm 'Step-down Holm' /downsidk 'Step-down Sidak' /finner 'Step-down Finner' /hommel 'Step-up Hommel' /hochberg 'Step-up Hochberg' /simes 'Step-up Simes'. SORT CASES BY id (A). SUMMARIZE /TABLES = pvalue bonferr TO simes /FORMAT = LIST NOCASENUM TOTAL /TITLE = 'Original & Adjusted p-values' /MISSING = VARIABLE /CELLS = NONE. ******************************************************************************** * END OF SYNTAX.