Это мой код в IBM SPSS:Разница между результатами MATLAB и SPSS факторного анализа (ФА)
FACTOR
/VARIABLES VAR00001 VAR00002 VAR00003 VAR00004 VAR00005 VAR00006
/MISSING LISTWISE
/ANALYSIS VAR00001 VAR00002 VAR00003 VAR00004 VAR00005 VAR00006
/PRINT UNIVARIATE INITIAL CORRELATION SIG DET KMO INV REPR AIC EXTRACTION ROTATION
/PLOT EIGEN ROTATION
/CRITERIA MINEIGEN(1) ITERATE(25)
/EXTRACTION PC
/CRITERIA ITERATE(25)
/ROTATION VARIMAX
/METHOD=CORRELATION.
и это код MATLAB R2015b сделать то же самое:
[lambda,psi,T,stats,F]=factoran(DATA,2,'rotate','varimax');
SPSS выход для roteted матрицы компонентов:
Rotated Component Matrix
Component
1 2
VAR00001 .973 -.062
VAR00002 .911 -.134
VAR00003 .833 -.035
VAR00004 .972 -.102
VAR00005 -.236 .823
VAR00006 .062 .878
Extraction Method: Principal Component Analysis.
Rotation Method: Varimax with Kaiser Normalization.
a Rotation converged in 3 iterations.
MATLAB lambda
выход:
0.993085200854508 -0.0537771548307969
0.875990644597448 -0.147112975689921
0.748570753047806 -0.0343768914779775
0.987459815125692 -0.0988807726538385
-0.203059229288894 0.976610007465447
0.00719025397609984 0.475514010080256
Почему эти выходы разные? Я хочу получить те же результаты в MATLAB. Как вы знаете, SPSS игнорирует собственные значения, меньшие 1. Я хочу такую же структуру в MATLAB. Как я могу это сделать?
PS.
MATLAB T
выход:
0.622170579007477 -0.782881709211232
0.782881709211232 0.622170579007477
psi
MATLAB, выход:
0.0108898014620571
0.210998162961140
0.438460057014266
0.0151457063113246
0.00500000000002244
0.773834726466399
Другие выходы SPSS:
Component Matrix
Component
1 2
VAR00001 .964 .144
VAR00002 .919 .061
VAR00003 .821 .141
VAR00004 .971 .105
VAR00005 -.404 .755
VAR00006 -.124 .871
Extraction Method: Principal Component Analysis.
a 2 components extracted.
Component Transformation Matrix
Component 1 2
1 .977 -.211
2 .211 .977
Extraction Method: Principal Component Analysis.
Rotation Method: Varimax with Kaiser Normalization.
Часть вашего кода говорит, что «Вращение сходится в 3 итерации». Это заставляет меня подозревать, что алгоритм, который вы используете, является стохастическим (не дает одинакового результата каждый раз), или он дает другой ответ в зависимости от того, как вы его инициализируете. Это так? Если это так, это может объяснить разные результаты. – mikkola
@mikkola Спасибо за ответ. Я повторяю процесс в SPSS, но каждый раз, когда у меня такие же результаты. – user2991243
Есть так много вариантов настройки, что трудно сказать. Например, SPSS говорит, что он использует нормализацию Кайзера, но Matlab не (?). Кроме того, начальная точка кажется случайной в соответствии с параметрами в Matlab. – Oleg