MATLAB で次の分析を実行しようとしています。
デルタ値 0 の直接オブリミン回転と「カイザー正規化」
MATLABにはrotatefactorsという関数があることは知っていますが、オブリミン回転については言及されていません(「カイザー正規化」もありません)。この解析を MATLAB で実行するにはどうすればよいですか?
より具体的には、この分析を実行するときに SPSS の正確な出力を一致させようとしています。
ここでは、SPSS で使用されるすべてのアルゴリズムを見つけることができます:リンク(オブリミンの回転については、338 ページを確認してください)。残念ながら、私は方程式を理解できないので、MATLAB で再現します。
例として、次のデータを使用しています。
A = magic(10);
writetable(array2table(A),'test.xlsx') % This data can be imported to SPSS
(相関行列に対して) PCA を実行し、2 つの因子のみを抽出します。SPSS とまったく同じローディング マトリックス (「コンポーネント マトリックス」と呼ばれます) を取得するために MATLAB で行う方法は次のとおりです。
[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
loadings
次に、関数 を使用して行列の回転を実行する必要があります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 からの出力です。