12

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 からの出力です。

回転出力 (SPSS)

4

1 に答える 1

3

MATLAB にはまだ OBLIMIN 回転メソッドが実装されていません。これは、promax メソッドが同じことを行うためですが、はるかに高速です。

SPSS OBLIMIN の出力と比較すると、この方法ではまったく同じ出力は得られませんが、同じことを行っているため、かなり近いはずです。(実際には、直交性が緩和される前に最初に直交回転によって近似されることを除いて、promax も斜め回転です)

プロマックス内で直交回転をカスタマイズすることは可能かもしれませんが、同じ出力が得られるとは思いません。

プロマックス ローテーションを行うには:

[B,T]=rotatefactors(loadings,'method','promax');

% Your pattern matrix is in B, to get the structure matrix, you can do :

S=B*inv(T'*T);

回転は角度 pi を法として定義されるため、必要な +- に等しい出力行列が得られることに注意してください。

あなたの例でこれを実行すると、パターンが得られます:

B =

   -0.0178    0.9765
   -0.9528    0.0563
   -0.0305   -1.0124
    0.9442   -0.0602
    0.9897   -0.0155
   -0.7625    0.1992
   -0.8823    0.0333
   -0.9776   -0.1919
   -0.7797    0.0719
    0.9950    0.0767

構造行列とともに:

S =

   -0.5740    0.9867
   -0.9849    0.5990
    0.5461   -0.9950
    0.9785   -0.5980
    0.9985   -0.5791
   -0.8760    0.6335
   -0.9013    0.5358
   -0.8683    0.3649
   -0.8206    0.5160
    0.9513   -0.4899

したがって、これはかなり近いですが、それでも SPSS の出力とは異なります。

ただし、大きな違いはかなり小さい値によるものであることがわかります。相関分析では常に最大値を取るので、それほど問題にはなりません。

于 2015-10-05T14:17:01.817 に答える