* Проверка взаимодействия в факторном плане с ненормальной зависимой переменной. *(Вопрос) Как можно проверить эффект взаимодействия в факторных планах с ненормально *распределенной зависимой переменной? *(Непараметрический 2-факторный дисперсионный анализ - Non parametric 2-way ANOVA) *(Ответ) Существует несколько способов: *Литература: *1) Shirley EAC. "Applications of Ranking Methods to Multiple Comparison Procedures and Factorial Experiments". Appl Statist. - 1987;36(2):205-213. *2) Conover WJ and Iman RL. "Rank Transformations as a Bridge between Parametric and Nonparametric Statistics". The American Statistician. - 1981;35:124-129. * Код составила Marta Garcia-Granero. Отправлен Рею Левек по электронной почте 05.02.2002. ******************** ПРИМЕР ****************************. DATA LIST LIST /altit(f2.0) splenec(f2.0) fibrinog(f4.0). BEGIN DATA 1 1 528 1 1 444 1 1 338 1 1 342 1 1 338 1 2 434 1 2 331 1 2 312 1 2 575 1 2 472 2 1 294 2 1 254 2 1 352 2 1 241 2 1 291 2 2 272 2 2 275 2 2 350 2 2 350 2 2 466 END DATA. VARIABLE LABELS altit "Высота". VALUE LABELS altit 1 "на уровне моря" 2 "15.000 футов" . VARIABLE LABELS splenec "Спленэктомия". VALUE LABELS splenec 1 "Нет" 2 "Да" . * РЕШЕНИЕ #1: ТОЛЬКО ДЛЯ СБАЛАНСИРОВАННЫХ И КВАДРАТНЫХ ПЛАНОВ * (КАК ПРИВЕДЕННЫЙ ВЫШЕ: число наблюдений на ячейку плана n=5; план 2x2) * (в данном случае значения хи-квадрат будут аддитивны) *********************************************************. COMPUTE group = splenec+2*(altit=2) . * (для планов 3x3 это выражение было бы таким: COMPUTE group = splenec+3*(altit=2)+6*(altit=3) * и так далее...). EXECUTE . VARIABLE LABELS group "Сводная группировка". VALUE LABELS group 1 "на уровне моря/Нет" 2 "на уровне моря/Да" 3 "15.000 футов/Нет" 4 "15.000 футов/Да" . NPAR TESTS /K-W=fibrinog BY group(1 4) /K-W=fibrinog BY altit(1 2) /K-W=fibrinog BY splenec(1 2). * Теперь найдём 3 значения хи-квадрат и соответствующие им числа степеней свободы и подсчитаем * хи-квадрат и числа степеней свободы для взаимодействий по схеме: group - altit - splenec * Числа из таблиц следует скопировать в 2 следующих выражения COMPUTE * (я ещё не нашла, как сделать это автоматически). DO IF $casenum=1. COMPUTE chi=5.774-4.487-0.824. COMPUTE df=3-1-1. COMPUTE sig = 1-CDF.CHISQ(chi,df) . END IF. EXECUTE. FORMAT chi (F8.3) df (F2.0) sig (F8.4). REPORT FORMAT=LIST AUTOMATIC ALIGN(CENTER) /VARIABLES=chi df sig /MISSING=LIST /TITLE "Проверка Краскала-Уоллиса (Kruskal-Wallis) на взаимодействие". * Но! Для несбалансированных и/или неквадратных планов (2x3, 3x4...) решение, приведенное выше, * не работает (можно получить отрицательные значения хи-квадрат!). * РЕШЕНИЕ #2 (УНИВЕРСАЛЬНОЕ): 2-факторый дисперсионный анализ (2-way ANOVA) с суммой квадратов типа III с рангами *****************************************************************************. DATA LIST LIST /altit(f2.0) splenec(f2.0) fibrinog(f4.0). BEGIN DATA 1 1 528 1 1 444 1 1 338 1 1 342 1 1 338 1 2 434 1 2 331 1 2 312 1 2 575 1 2 472 2 1 294 2 1 254 2 1 352 2 1 241 2 1 291 2 2 272 2 2 275 2 2 350 2 2 350 2 2 466 END DATA. VARIABLE LABELS altit "Высота". VALUE LABELS altit 1 "на уровне моря" 2 "15.000 футов" . VARIABLE LABELS splenec "Спленэктомия". VALUE LABELS splenec 1 "Нет" 2 "Да" . * Во-первых, проранжируем зависимую переменную (как это сделал бы алгоритм проверки Краскала-Уоллиса). RANK VARIABLES=fibrinog (A) /RANK INTO yranks /PRINT=NO /TIES=MEAN . * Теперь выполняем факторный дисперсионный анализ (factorial ANOVA) с ранжированной зависимой переменной. UNIANOVA yranks BY altit splenec. * Согласно публикациям Conover и Iman, значения F-статистик и собственные уровни значимости * в принципе являются пригодными. Но если необходимо получить более подходящие статистики, * необходимо вычислить значения хи-квадрат для проверки Краскала-Уоллиса и их значимости * (согласно алгоритму Shirley). * Следующий макрос выполняет все вычисления (от ранжирования до вычисления значимости хи-квадрат), * а также строит 2 графика с медианами для интерпретации значимых взаимодействий. ******************** * ОПРЕДЕЛЕНИЕ МАКРОСА * ********************. DEFINE rank2w (facta=!CHAREND ('/') /factb=!CHAREND ('/') /depvar=!CMDEND ). GRAPH /LINE(MULTIPLE)MED(!depvar) BY !facta BY !factb. GRAPH /LINE(MULTIPLE)MED(!depvar) BY !factb BY !facta. RANK VARIABLES=!depvar (A) /RANK INTO yranks /PRINT=NO /TIES=MEAN . UNIANOVA yranks BY !facta !factb /OUTFILE=EFFECT ('report_.sav'). GET FILE='report_.sav' /KEEP= source_ ss df. EXECUTE. SELECT IF((source_='CorModel') or (source_='CorTotal') or (source_='S2') or (source_='S3') or (source_='S4')). EXECUTE . COMPUTE pos=$casenum. execute. SORT CASES BY pos(D). compute varri=ss/df. if $casenum>1 varri=lag(varri,1). execute. DO IF $casenum>1. COMPUTE chi=ss/varri. COMPUTE sig = 1-CDF.CHISQ(chi,df) . END IF. execute. VARIABLE LABELS sig "Знач. (p)". VARIABLE LABELS chi "Хи-квадрат". FORMAT ss (F8.3) df (F4.0) chi (F8.3) sig (F9.4). SORT CASES by pos(A). VARIABLE LABELS SOURCE_ "Источник вариации". ADD VALUE LABELS SOURCE_ "CorModel" "Испр. модель" "CorTotal" "Испр. общая". VARIABLE LABELS SS "Сумма квадратов". VARIABLE LABELS DF "Ст. св.". REPORT FORMAT=LIST AUTOMATIC ALIGN(CENTER) /VARIABLES=source_(label) ss df chi sig /TITLE "2-факторная проверка Краскала-Уоллиса". !ENDDEFINE. * Вызов макроса *. rank2w facta=altit /factb=splenec /depvar=fibrinog.