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
* Тема: Многомерный критерий T-квадрат Хотеллинга и анализ профилей.
* Ключевые слова: Hotelling's T**2 & Profile Analysis, проверка, тест, критерий, Хотеллинг, профиль, flatness, equal levels, parallelism, гипотезы, параллельность, равенство уровней, плоскость, контраст.
* Опубликован: ?, перевод: 27.10.2008.
* Автор: Richard MacLennan.
* Перевод: А. Балабанов.
* Размещение: http://www.spsstools.ru/Syntax/T-Test/HotellingsT2andProfileAnalysis.txt (.sps).
* Проверено: SPSS 15.0.0.


* Исходные данные для группы X.

MATRIX.
COMPUTE X = {   7,      5,      9,      8;
		8,      8,      5,      6;
		16,     18,     11,     9;
		8,      3,      7,      9;
		6,      3,      13,     9;
		11,     8,      10,     10;
		12,     7,      9,      8;
		8,      11,     9,      3;
		14,     12,     11,     4;
		13,     13,     13,     6;
		13,     9,      9,      9;
		13,     10,     15,     7;
		14,     11,     12,     8;
		15,     11,     11,     10;
		13,     10,     15,     9;
		10,     5,      8,      6;
		10,     3,      7,      7;
		17,     13,     13,     7;
		10,     6,      10,     7;
		10,     10,     15,     8;
		14,     7,      11,     5;
		16,     11,     12,     11;
		10,     7,      14,     6;
		10,     10,     9,      6;
		10,     7,      10,     10;
		7,      6,      5,      9;
		15,     12,     10,     6;
		17,     15,     15,     8;
		16,     13,     16,     9;
		13,     10,     17,     8;
		13,     10,     17,     10;
		19,     12,     16,     10;
		19,     15,     17,     11;
		13,     10,     7,      8;
		15,     11,     12,     8;
		16,     9,      11,     11;
		14,     13,     14,     9 }.
COMPUTE NX = NROW(X).
COMPUTE KX = NCOL(X).
PRINT {NX, KX} /TITLE "N набл., N перем. в группе X".
* Исходные данные для группы Y.
COMPUTE Y =   { 9,      5,      10,     8;
		10,     0,      6,      2;
		8,      9,      11,     1;
		13,     7,      14,     9;
		4,      0,      4,      0;
		4,      0,      6,      0;
		11,     9,      9,      8;
		5,      3,      3,      6;
		9,      7,      8,      6;
		7,      2,      6,      4;
		12,     10,     14,     3;
		13,     12,     11,     10 }.
COMPUTE NY = NROW(Y).
COMPUTE KY = NCOL(Y).
PRINT {NY, KY} /TITLE "N набл., N перем. в группе Y".

* Вычисляем выборочные средние.                              
COMPUTE UNITX = MAKE (NX, 1, 1.0).                     
COMPUTE MEANSX = T(UNITX) * X &* (1.0 / NX).          
PRINT MEANSX /TITLE "Выборочн. средние для группы X".
COMPUTE UNITY = MAKE (NY, 1, 1.0).                     
COMPUTE MEANSY = T(UNITY) * Y &* (1.0 / NY).          
PRINT MEANSY /TITLE "Выборочн. средние для группы Y".
COMPUTE DIFF = MEANSX - MEANSY.
PRINT DIFF /TITLE "Разности".

* Вычисление матриц центрированных произведений сумм квадратов (mean-corrected SSCP).                                
COMPUTE BXX = SSCP(X).                                          
COMPUTE SX = BXX - ((1/NX) &* (T(X) * UNITX) * (T(UNITX) * X)).
COMPUTE BYY = SSCP(Y).                                          
COMPUTE SY = BYY - ((1/NY) &* (T(Y) * UNITY) * (T(UNITY) * Y)).

* Вычисление ковариационных матриц.
COMPUTE CX = (1/(NX-1.0)) &* SX.
COMPUTE CY = (1/(NY-1.0)) &* SY.

* Совместная ковариационная матрица.                                     
COMPUTE COV = (((NX-1) &* CX) + ((NY-1) &* CY)) &/ (NX+NY-2). 
COMPUTE ICOV = INV(COV).

* "Статистика T**2 Хотеллинга".
COMPUTE T2 = (NX * NY * DIFF * ICOV * T(DIFF)) / (NX+NY).
PRINT /TITLE " ========== Двухвыборочная проверка T**2 Хотеллинга на равенство средних ========== ".
PRINT T2 /TITLE "Статистика T**2 Хотеллинга".                           
COMPUTE F = T2 * (NX+NY-KX-1) / ((NX+NY-2)*KX).
PRINT { F, KX, NX+NY-KX-1 } /Title "Эквивалентная статистика F и её степени свободы".
COMPUTE P = 1.0 - FCDF(F, KX, NX+NY-KX-1).
PRINT P /TITLE "P-знач." /FORMAT = F10.9.                          

PRINT /TITLE " ========== Анализ профилей Хотеллинга ========== ".                                                            

* Создадим матрицу плана C для последовательных контрастов.                                       
COMPUTE V1 = { 1, -1 }.                                                                  
COMPUTE V2 = MAKE (1, KX-1, 0).
COMPUTE V3 = {V1, V2}.                                                                 
COMPUTE V4 = V3.                                                                         
LOOP I = 1 to KX-1.
COMPUTE V4 = {V4 ; V3}.
END LOOP.
COMPUTE C = RESHAPE (V4, KX+1, KX).
COMPUTE C = C(1:(KX-1), 1:KX).
PRINT C /TITLE "Матрица контраста".

* Разности между соседствующими шкалами для группы X.
COMPUTE DIFF1 = MEANSX * T(C).
PRINT DIFF1 /TITLE "Разности между соседствующими шкалами для группы X".

* Разности между соседствующими шкалами для группы Y.
COMPUTE DIFF2 = MEANSY * T(C).
PRINT DIFF2 /TITLE "Разности между соседствующими шкалами для группы Y".

* Совместная ковариационная матрица разностей.
COMPUTE POOL = C * COV * T(C).
PRINT POOL /TITLE "Совместная ковариационная матрица разностей".
COMPUTE IPOOL = INV(POOL).                                                               
PRINT IPOOL /TITLE "Обр. совместная ковариационная матрица разностей".

PRINT /TITLE " ----- Гипотеза 1: параллельность (нет взаимодействия 'группа X шкала') ----- ".  
COMPUTE PARALLEL = (NX * NY * DIFF * T(C) * IPOOL * C * T(DIFF)) / (NX+NY).
PRINT PARALLEL /TITLE "Статистика T**2 Хотеллинга для проверки параллельности".                      
COMPUTE F = PARALLEL * (NX+NY-KX) / ((NX+NY-2)*(KX-1)).
PRINT { F, KX-1, NX+NY-KX } /TITLE "Эквивалентная статистика F и её степени свободы".
COMPUTE P = 1.0 - FCDF(F, KX-1, NX+NY-KX).
PRINT P /TITLE "P-знач." /FORMAT F10.9.                                                 

PRINT /TITLE " ----- Гипотеза 2: равные уровни (в предположении о существовании параллельности) ----- ".          

* Создадим вектор плана J для равных уровней.                                               
COMPUTE J = MAKE (1, KX, 1.0).                                                           
* Общее среднее для группы x.
COMPUTE GRANDX = MEANSX * T(J).
PRINT GRANDX /TITLE "Общее среднее для группы X".
* Общее среднее для группы y.
COMPUTE GRANDY = MEANSY * T(J).
PRINT GRANDY /TITLE "Общее среднее для группы Y".

* Разность уровней.
COMPUTE DIF = J * T(DIFF).
PRINT DIF /TITLE "Разность уровней".                                                               

* Дисперсия разности.                                               
COMPUTE CV = J * COV * T(J).
PRINT CV /TITLE "Дисперсия разности".                                                             
COMPUTE EQUAL = J * T(DIFF) / (SQRT ( CV * (1/NX + 1/NY) ) ).
PRINT { EQUAL, NX+NY-2 } /TITLE "Статистика T**2 Хотеллинга для односторонней проверки равенства уровней".
COMPUTE P = (1.0 - TCDF(ABS(EQUAL), NX+NY-2 )) * 0.5. 
PRINT P /TITLE "P-знач." /FORMAT F10.9.

PRINT /TITLE " ----- Гипотеза 3: плоскость (также в предположении о существовании параллельности) ----- ".        
* Среднее между группами.
COMPUTE GRAND = ((MEANSX * NX) + (MEANSY * NY)) / (NX + NY).
PRINT GRAND /TITLE "Среднее между группами".
COMPUTE FLAT = (NX+NY) * GRAND * T(C) * IPOOL * C * T(GRAND).
PRINT FLAT /TITLE "Статистика T**2 Хотеллинга для проверки плоскости профилей".
COMPUTE F = FLAT * (NX+NY-KX) / ((NX+NY-2) * (KX-1)).
PRINT { F, KX-1, NX+NY-KX } /TITLE "Эквивалентная статистика F и её степени свободы".
COMPUTE P = 1.0 - FCDF( F, KX-1, NX+NY-KX ).
PRINT P /TITLE "P-знач." /FORMAT F10.9.
END MATRIX.