1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
* Проверка взаимодействия в факторном плане с ненормальной зависимой переменной.

*(Вопрос) Как можно проверить эффект взаимодействия в факторных планах с ненормально
*распределенной зависимой переменной?
*(Непараметрический 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.