* Поправки для собственных уровней значимости при множественных сравнениях. * Рей, * посылаю улучшенную версию синтаксиса с реализацией алгоритмов * расчета скорректированных уровней значимости (p, p-values). * Я добавила несколько "восходящих" (step-up) методов и описание к каждому * алгоритму. * Marta Garcia-Granero. 14.04.2002. ************************** Заявление о снятии ответственности Данный синтаксис предоставляется "как есть" без каких-либо гарантий. Риск, связанный с качеством, производительностью и пригодностью его для ваших целей вы полностью принимаете на себя. Пользуясь данной программой, вы также принимаете на себя всю ответственность, связанную с выбором конкретного алгоритма и последующим использованием результатов, полученных с помощью данной программы. ОПИСАНИЕ Реализовано 8 алгоритмов корректировки уровня значимости. Они разделяются на "одношаговые" (one-step), "нисходящие" (step-down) и "восходящие" (step-up) алгоритмы. 1. "Одношаговый" алгоритм Бонферрони (Bonferroni) 2. "Одношаговый" алгоритм Сидака (Sidak, см. ссылки 1 и 2] 3. "Нисходящий" алгоритм Холма (Holm, см. 3) 4. "Нисходящий" алгоритм Сидака (Sidak, см. 1,2,4 и 5) 5. "Нисходящий" алгоритм Финнера (Finner, 4 и 5] 6. "Восходящий" алгоритм Хоммеля (Hommel, см. 6 и 7) 7. "Восходящий" алгоритм Хокберга (Hochberg, 8) 8. "Восходящий" алгоритм Саймса (Simes, 9) Корректность реализации проверена утилитой Multiplicity (2.0) (автор - Barry W. Brown. Университет Техаса, Раковый центр Андерсона (M D Anderson Cancer Center)). АЛГОРИТМЫ Используем следующие обозначение: n = число уровней значимости (p-values) p(i) = i-й уровень значимости по порядку, начиная с наименьшего, i=1..n p#(i) = скорректированный (исправленный) вариант уровня значимости p(i) В одношаговых алгоритмах собственные уровни значимости (p-values) сравниваются с предопределенным значением, которое является функцией от альфа (заданного уровня значимости) и n - числа уровней значимости. (Здесь и далее автор дает классическое словесное описание алгоритмов, когда предполагается корректировка наперед заданного уровня значимости "альфа" для сравнения с собственными уровнями значимости проверок (обычно это предполагает уменьшение "альфа"). На самом же деле синтаксис проводит корректировку собственных уровней значимости, чтобы упростить процедуру сравнения с наперед заданным значением альфа (например, 0.05, 0.01, 0.001 и т.д.) (обычно это предполагает увеличение p(i) - примеч. перев.) - "Одношаговый" алгоритм Бонферрони: p#(i)=n*p(i) - "Одношаговый" алгоритм Сидака: p#(i)=1-(1-p(i))^n В нисходящих методах значения p-values обрабатываются в порядке от меньшего к большему. Как только обнаруживается p-value, достаточно большое (с точки зрения критерия на основе альфа и позиции значения p-value в упорядоченном списке), данное p-value и ВСЕ последующие (большие, чем данное), не позволяют отвергнуть соответствующие нулевые гипотезы. - "Нисходящий" алгоритм Холма: p#(i)=(n-i+1)*p(i) - "Нисходящий" алгоритм Сидака: p#(i)=1-(1-p(i))^(n-i+1) - "Нисходящий" алгоритм Финнера: p#(i)=1-(1-p(i))^(n/i) В восходящих алгоритмах значения p-values исследуются в порядке от большего к меньшему. Как только обнаруживается значение p-value, достаточно малое (с точки зрения критерия, основанного на альфа и позиции p-value в упорядоченном списке), данное p-value и ВСЕ последующие (меньшие, чем данное) ведут к отвержению соответствующих нулевых гипотез. - "Восходящий" алгоритм Хоммеля: p#(i)=n*Cn*p(i)/i Cn=1+1/2+ ... +1/n - "Восходящий" алгоритм Хокберга: p#(i)=(n-i+1)*p(i) - "Восходящий" алгоритм Саймса: p#(i)=n*p(i)/i См. в [10] общий справочный материал по алгоритмам коррекции собственных уровней значимости. ЛИТЕРАТУРА 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. ********************************************************************************. * НАЧАЛО СИНТАКСИСА * Создадим набор данных с собственными уровнями значимости. Замените их на те, что есть у вас *. DATA LIST list / pvalue(f9.4). BEGIN DATA 0.0728 0.0023 0.3829 0.0041 0.0101 0.4557 END DATA. * НЕКОТОРЫЕ ДОПОЛНИТЕЛЬНЫЕ ПЕРЕМЕННЫЕ *. COMPUTE id=$CASENUM. FORMAT id (F2.0). SORT CASES BY pvalue (A) . COMPUTE pos=$CASENUM. FORMAT pos (F2.0). *>>>>> Этот раздел добавлен Реем Левеком <<<<<<<. * Найдем число значений p-value. RANK pvalue /n into N /PRINT=NO. * Переменная N содержит икомую величину (фактически - число наблюдений в файле). *>>>>>> Конец раздела, добавленного Реем <<<<<<<. * РАСЧЕТ ИСПРАВЛЕННЫХ ЗНАЧЕНИЙ P-VALUES *. * (1) Одношаговые методы *. COMPUTE bonferr=pvalue*n. IF bonferr>1 bonferr=1. COMPUTE sidak=1-(1-pvalue)**n. * (2) Нисходящие методы *. COMPUTE holm=(n-pos+1)*pvalue. IF holm>1 holm=1. IF (holm1. COMPUTE cn=cn+lag(cn,1). END IF. SORT CASES BY pos(D). IF cn1 hommel=1. IF (hommel>LAG(hommel,1)) hommel=LAG(hommel,1). COMPUTE hochberg=(n-pos+1)*pvalue. IF (hochberg>LAG(hochberg,1)) hochberg=LAG(hochberg,1). COMPUTE simes=n*pvalue/pos. IF (simes>LAG(simes,1)) simes=LAG(simes,1). * ВЫВОД РЕЗУЛЬТАТОВ *. FORMAT bonferr to simes (f9.4). VARIABLE LABELS id '№№' /pvalue 'p исходн.' /pos 'Ранг' /bonferr 'Одношаговый Бонферрони' /sidak 'Одношаговый Сидака' /holm 'Нисходящий Холма' /downsidk 'Нисходящий Сидака' /finner 'Нисходящий Финнера' /hommel 'Восходящий Хоммеля' /hochberg 'Восходящий Хокберга' /simes 'Восходящий Саймса'. SORT CASES BY pos (A). REPORT FORMAT=LIST AUTOMATIC ALIGN(CENTER) /VARIABLES=pos id pvalue bonferr sidak /TITLE "Исходные и скорректированные величины p (одношаговые алгоритмы)". REPORT FORMAT=LIST AUTOMATIC ALIGN(CENTER) /VARIABLES=pos id pvalue holm downsidk finner /TITLE "Исходные и исправленные величины p (нисходящие алгоритмы)". REPORT FORMAT=LIST AUTOMATIC ALIGN(CENTER) /VARIABLES=pos id pvalue hommel hochberg simes /TITLE "Исходные и исправленные величины p (восходящие алгоритмы)". ********************************************************************************. * КОНЕЦ СИНТАКСИСА.