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

*(Ответ) Размещён в SPSSX-L 05.02.2002. Автор: Marta Garcia-Granero.


* Во-первых, сгенерируем данные для примера.
INPUT PROGRAM.
- VECTOR X(10).
- LOOP #I = 1 TO 100.
- LOOP #J = 1 TO 10.
- COMPUTE X(#J) = UNIFORM(5).
- END LOOP.
- END CASE.
- END LOOP.
- END FILE.
END INPUT PROGRAM.
execute.

* Создание корреляционной матрицы, подходящей для команды FACTOR.
* Это гибрид из двух разных файлов.
* Если вы будете выполнять синтаксис шаг за шагом, легко увидите, что он делает.
* Директория temp на диске C: должна существовать.

* Исходные матрицы корреляций:
* Можно также использовать и корреляции Кендала
* (для порядковых переменных) вместо Спирмена.
CORRELATIONS
  /VARIABLES=x1 TO x10
  /MATRIX=OUT('c:\\temp\\corr1_.sav')
  /MISSING=PAIRWISE .
NONPAR CORR
  /VARIABLES=x1 TO x10
  /PRINT=SPEARMAN
  /MATRIX=OUT('c:\\temp\\corr2_.sav')
  /MISSING=PAIRWISE .

* Преобразования файлов.
GET FILE='c:\\temp\\corr2_.sav'.
EXECUTE .
SELECT IF(rowtype_ ~= 'N').
EXECUTE .
RECODE  rowtype_  ('RHO'='CORR')  .
EXECUTE .
SAVE OUTFILE='c:\\temp\\corr2_.sav'.
GET FILE='c:\\temp\\corr1_.sav'.
EXECUTE .
SELECT IF($casenum<4).
EXECUTE .
ADD FILES /FILE=*
 /FILE='c:\\temp\\corr2_.sav'.
EXECUTE.

* Получили и сохраняем окончательную матрицу (пригодную для команды FACTOR).
SAVE OUTFILE='c:\\temp\\c_matrix.sav'.

* Теперь - факторный анализ.
* Я указала опции, которые обычно использую
* (метрика KMO, MSA, каменистая осыпь, проверка Бартлетта,
* вращение Варимакс с отсортированными нагрузками; вывод малых нагрузок подавляется)
* Modify them if needed.

FACTOR
 /MATRIX=IN(cor='c:\\temp\\c_matrix.sav')
 /ANALYSIS x1 TO x10
  /PRINT KMO AIC EXTRACTION ROTATION
  /FORMAT SORT BLANK(0.4)
  /PLOT EIGEN
  /CRITERIA MINEIGEN(1) ITERATE(25)
  /EXTRACTION PC
  /CRITERIA ITERATE(25)
  /ROTATION VARIMAX
  /METHOD=CORRELATION .

* Разумеется, этот случайный набор данных некоррелирован и малопригоден для факторного анализа.

* В частности, метрики KMO и MSA весьма низки, а проверка Бартлетта незначима.