【发布时间】:2015-12-27 08:22:39
【问题描述】:
我正在尝试在 MATLAB 中执行以下分析:
Delta 值为 0 和“Kaiser”的 Direct Oblimin Rotation 归一化”
我知道 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 中完全相同的加载矩阵(他们称之为“组件矩阵”):
[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 输出:
【问题讨论】:
-
你的问题是?
-
什么是... oblimin rotation?
-
@Benoit_11如何在 MATLAB 中执行直接 oblimin 旋转
-
@rayryeng 我更新了帖子,请看一下!
-
显然你应该自己实现它:))
标签: matlab statistics factor-analysis