我试图在MATLAB中执行以下分析:
Direct Oblimin Rotation with a Delta value of 0 and “Kaiser
Normalization”
我知道MATLAB有一个名为rotatefactors的函数,但是没有提到oblimin旋转(既不是“Kaiser Normalization”).如何在MATLAB中执行此分析?
更具体地说,在进行此分析时,我正在尝试匹配SPSS的确切输出.
在这里,您可以找到SPSS中使用的所有算法:link(查看第338页的oblimin旋转).不幸的是,我无法理解方程,从而在MATLAB中重现它们.
例如,我使用以下数据:
A = magic(10);
writetable(array2table(A),'test.xlsx') % This data can be imported to SPSS
我执行PCA(在相关矩阵上)并且仅提取2个因素.这是MATLAB中如何完成的,以获得与SPSS(称为“Component Matrix”)完全相同的加载矩阵:
[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函数在加载矩阵上执行旋转,这是我被卡住的地方.
以下是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的输出: