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
(Вопрос) Я хочу проверить, существует ли значимое снижение числа курящих
с течением времени (за некоторый промежуток времени). Я использую проверку 
Мак-Немара хи-квадрат со следующим синтаксисом:

NPAR TEST
  /MCNEMAR=smoke1 WITH smoke2 (PAIRED)
  /STATISTICS DESCRIPTIVES
  /MISSING ANALYSIS.

Но процедура не возвращает мне значения статистики хи-квадрат, я получаю только вероятность
(exact sig. 2-tailed). Кто-нибудь может сказать, как вывести значение статистики Мак-Немара хи-квадрат?

(Ответ) Размещён в SPSSX-L, автор: Marta Garcia-Granero, 4.1.2005.
 Если размер выборки мал (менее, чем 25 пар рассогласования*), NPAR TEST
 /MCNEMAR всегда будет давать точное значение вероятности (p-value). Если число 
 пар рассогласования превышает 9, тогда вместо этого критерия может быть
 использован критерий хи-квадрат (с поправкой или без поправки).
 Кстати, проверка Мак-Немара может быть запрошена и в меню SPSS CROSSTABS
 (она даёт точные значения вероятности на довольно больших выборках).

(*) Пары рассогласования: smoke1=0/smoke2=1 и smoke1=1/smoke2=0.
Примечание: код предполагает присутствие в данных всех 4 пар.

Вот решение:

* Пример данных (замените их на свои) *.
DATA LIST FREE/ smoke1 smoke2 (2 F8.0).
BEGIN DATA
1 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 0 0 1 1
1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 1 0
0 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1
1 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 0 0 1 1
0 0 1 0 1 0 1 0 1 1 1 1 1 1 0 0 1 1 1 0
END DATA.

VALUE LABELS smoke1 smoke2 0 'Нет' 1 'Да'.

* Точная проверка Мак-Немара в SPSS (с использованием CROSSTABS) *.

CROSSTABS
  /TABLES=smoke1 BY smoke2
  /STATISTIC=MCNEMAR.

* Проверка Мак-Немара хи-квадрат (с использованием матричного языка SPSS) *.

TEMPORARY.
SELECT IF (NOT MISSING(smoke1) AND NOT MISSING(smoke2)).
AGGREGATE
  /OUTFILE='c:\\temp\\aggr.sav'
  /BREAK=smoke1 smoke2
  /N=N.

MATRIX.
PRINT/TITLE="ПРОВЕРКА МАК-НЕМАРА ХИ-КВАДРАТ (С ПОПРАВКОЙ И БЕЗ ПОПРАВКИ)".
GET obs /VAR=n /FILE='c:\\temp\\aggr.sav' /MISSING=0.
COMPUTE a=obs(1).
COMPUTE b=obs(2).
COMPUTE c=obs(3).
COMPUTE d=obs(4).
RELEASE obs.
PRINT {a,b,a+b;c,d,c+d;a+c,b+d,a+b+c+d}
 /FORMAT='F8.0'
 /RLABEL='A-','A+','Итого'
 /CLABEL='B-','B+','Итого'
 /TITLE='ВХОДНЫЕ ДАННЫЕ'.
* Значения хи-квадрат исправленные и не исправленные *.
COMPUTE chi2=((b-c)&**2)&/(b+c).
COMPUTE chi2sig=1-CHICDF(chi2,1).
COMPUTE chi2cor=(ABS(b-c)-1)&**2&/(b+c).
COMPUTE chi2sigc=1-CHICDF(chi2cor,1).
PRINT {chi2,chi2sig;chi2cor,chi2sigc}
 /FORMAT='F8.4'
 /CLABELS='Хи-кв.','Знач.'
 /RLABELS='Не испр.','Испр.'
 /TITLE="Проверка хи-квадрат (df=1) и асимптотическая значимость".
END MATRIX.