我想在MATLAB中执行以下分析:
直接Obilmin旋转,Delta值为0,使用“Kaiser归一化”
我知道MATLAB有一个名为rotatefactors的函数,但没有提到oblimin旋转(也没有“Kaiser归一化”)。我该如何在MATLAB中执行此分析?
更具体地说,我试图匹配SPSS执行此分析时的确切输出。
您可以在此处找到SPSS中使用的所有算法:链接(请查看第338页以获取oblimin旋转)。不幸的是,我无法理解方程式,因此无法在MATLAB中重新生成它们。
例如,我正在使用以下数据:
A = magic(10);
writetable(array2table(A),'test.xlsx') % This data can be imported to SPSS
我对相关矩阵进行主成分分析,并仅提取2个因子。以下是在MATLAB中执行此操作的步骤,以便获得与SPSS中完全相同的载荷矩阵(他们称之为“组分矩阵”):
[eigvector,eigmatrix] = eig(corr(A));
[~,ind] = sort(diag(eigmatrix),'descend');
eigmatrix = eigmatrix(ind,ind);
eigvector = eigvector(:,ind);
eigvalues = diag(eigmatrix); % Eigeinvalues
loadings = eigvector*sqrt(eigmatrix);
loadings = loadings(:,1:2) % Extract only 2 factors
接下来,我应该使用函数rotatefactors
对loadings
矩阵进行旋转,但我卡住了。
以下是在SPSS中的语法:
FACTOR
/VARIABLES A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
/MISSING LISTWISE
/ANALYSIS A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
/PRINT INITIAL EXTRACTION ROTATION
/CRITERIA FACTORS(2) ITERATE(25)
/EXTRACTION PC
/CRITERIA ITERATE(25) DELTA(0)
/ROTATION OBLIMIN
/METHOD=CORRELATION.
这是我试图在MATLAB中复现的来自SPSS的输出: