(株)サスインスティチュートジャパン、テクニカルサポート の小野と申します。 メールが長くなりますことをお許し下さい。 > >一体SASはどのようにpromax 回転しているのでしょうか? > >SAS社がアルゴリズムを明かさないといってますが, > >何か秘密があるのでしょうか? -- cut by Ono ------ > > アルゴリズムの公開についての堀さんの記事に対するSAS社あるいは > SAS社関係者からのレスがないので、SAS社からの前向きのレスを期待して > このメールを書きました。 > > 日本女子大学心理学科 > 岡本安晴 > (金沢大学から転出しました) ご指摘、有難うござます。 SASマニュアル(SAS/STAT User's Guide Version6 4th Edなど)において、 文献が明示的に記載されていないことを確認しました。 今の段階で把握している情報では、SAS/STATソフトウェアのFACTORプロシジャ が使っているのは、Referenceに記載されている、、、、 Cureton,E.E. and Mulaik,S.A.(1975) "The Weighted Varimax Rotation and the Promax Rotation" Psychometrika,40,183-195 だと思われますが、まだ、正確な確認をとっていません。 なお、私は下記の論文も読んでいません。 > -- cut by Ono -- >Tataryn, Douglas J.; Wood, James M.; Gorsuch, Richard L.(1999). >Setting the Value of k in Promax: A Monte Carlo Study. >Educational & Psychological Measurement, Vol. 59 Issue 3, p384, 8p それに伴い、「普通」のプロマックス回転というものも、不明です。 計算方法についてはお示しすることができます。 簡単のため、5観測変数で2因子の結果をもとに、具体的に説明したいと思います。 申し訳ございませんが、SAS内部のソースコード(C言語のソースコード) は非公開です。本当に細かいところの内部的な計算アルゴリズムやプログラ ミング方法は、公開されていません。残念ながら、オープンソースではないため、 下記以上の情報公開は難しいと思われます。 しかしながら、ここでの数値例や計算式をもとに、その過程を追うことができます。 この情報をもとに、他のテクニックとの比較などの活発な議論が行われれば幸い です。 FACTORプロシジャを実行すると、計算途中で求められた幾つかの行列は出力さ れます。 ---------------------------------------------------------- プロマックス回転する前の、ある直交回転をした後の因子パタンとして、 次のような行列Fが求まったとします。 行列: F Rotated Factor Pattern FACTOR1 FACTOR2 X1 -0.01728 0.30012 X2 -0.10393 0.15316 X3 0.47062 0.07350 X4 0.06448 0.14678 X5 0.08411 0.20778 このときに使った直交変換行列をT0とします。 行列: T0 Orthogonal Transformation Matrix 1 2 1 0.93300 0.35986 2 -0.35986 0.93300 ---------------------------------------------------------- まず、ターゲット行列 F-tar を計算します。 *** この時、次のような!!! 2つ !!! の計算を行ないます。 *** 1 各行を、共通性(communality)の平方根で割る。 2 その後で、各列を、絶対値の最大値で割る。 ---------------------------------------------------------- 1の計算を行なうと、Fは次のような行列になります。 (この行列はFACTORプロシジャでは出力されていません)。 FACTOR1 FACTOR2 X1 -0.05748 0.99835 X2 -0.56150 0.82748 X3 0.98802 0.15432 X4 0.40221 0.91555 X5 0.37521 0.92694 なお、直交回転したパターン行列の要素からも計算できますが、ここで 使用した共通性は次の通りです。 X1 X2 X3 X4 X5 Communality 0.090372 0.034258 0.226886 0.025703 0.050247 ---------------------------------------------------------- 次に、2の計算を行なうと次のような感じになります。 各列の最大値は、1列目が0.98802、2列目が0.99835です。 (この行列もFACTORプロシジャでは出力されていません)。 FACTOR1 FACTOR2 X1 -0.05818 1.00000 X2 -0.56831 0.82885 X3 1.00000 0.15457 X4 0.40709 0.91706 X5 0.37976 0.92847 ---------------------------------------------------------- 上記2つの計算が終了した後、POWER= オプションに指定された数で、 累乗します。デフォルトは、3乗です(POWER=3)。この行列は出力され ています。 行列: F-tar Target Matrix for Procrustean Transformation FACTOR1 FACTOR2 X1 -0.00020 1.00000 X2 -0.18355 0.56940 X3 1.00000 0.00369 X4 0.06746 0.77126 X5 0.05477 0.80041 ---------------------------------------------------------- 次に、「このターゲット行列との差」の要素の2乗和を最小になるように Fを線形変換させる行列Tを求めます。上で求めたターゲット行列をF-tar とすると、この変換行列Tは inv(F`*F)*(F`*F-tar) です。ここで、inv(x)はxの逆行列、x`はxの転置行列を表します。 行列: T Procrustean Transformation Matrix 1 2 1 2.06029 -0.44497 2 -0.09083 3.73048 この時、「直交回転前のパタン行列」に対する変換行列は、直交回転のときに 使った変換行列T0をかけて、 T0*T= {1.8895645 0.9272935, -0.82616 3.6406647} となります(FACTORプロシジャでは出力されません)。 さらに、「因子の分散は1である」という制約下における因子パタンにする ため、"規準化"のための行列Nを求めます。この"規準化"のための行列Nは、 対角行列で、その要素はinv(T0*T)*inv(T`*T0`)の対角要素の平方根です。 N=sqrt( diag( inv(T0*T)*inv(T`*T0`) )) この行列は、この例では、計算すると、 N= {0.4913932 0, 0 0.2697408} となります(FACTORプロシジャでは出力されません)。 "T0*T*N"を求めると、次のような「因子の分散は1である」という制約下に おける因子パタンをもとめるための変換行列が出ます。なお、この変換行 列は、直交回転前の因子パタンを変換するためのものです。 行列: T0*T*N Normalized Oblique Transformation Matrix 1 2 1 0.92852 0.25013 2 -0.40598 0.98204 ここでの"規準化(normalized)"は、「因子の分散を1にしますよ」といった意味で す。 ---------------------------------------------------------- 最後のほうの説明がぐじゃぐじゃになりましたが、観察変量の分散共分散 行列(もしくは相関行列)をSigma、独自因子の行列をDとすると、 次のような式変形をしているだけです。 Sigma = F0*F0`+D --> 直交回転前 = (F0*T0)*(T0`*F0`) + D --> 直交回転 = (F0*T0*T)*inv(T)*inv(T`)*(T`*T0`*F0) + D --> 最小2乗法 = (F0*T0*T*N)*inv(N)*inv(T)*inv(T`)*inv(N`)*(N`*T`*T0`*F0`) + D --> 因子 の分散を1に。 ---------------------------------------------------------- 因子間の相関行列は、次式です。 inv(N)*inv(T)*inv(T`)*inv(N`) これは、Inter-factor Correlationsという箇所に出力されます。 そして、因子パタンは次式です。 F0*(T0*T*N) = F*T*N これは、Rotated Factor Pattern (Std Reg Coefs)という箇所に 出力されます。 ---------------------------------------------------------- 他の統計量に関する計算については省略します。 長い説明で、すみませんでした。 ---------------------------------------------------------- 付記: バージョン8になっても、プロマックス回転に直接的に関係するオプション は特に増えていません。 しかし、バージョン8.1から斜交および直交の「一般化Crawford-Ferguson 回転」を行なえるようになりました。(そのため、プロマックス回転前に行 なう直交回転のレパートリーは山のように増えました)。 また、最尤推定(METHOD=ML)を選択し、かつ、この一般化 Crawford-Ferguson族に属する回転を選択したとき、正規分布を 仮定したときの漸近的な信頼区間が算出できるようになりました。 (すでに、CEFAでは実現されていました)。 --- 以上です。
ここは心理学研究の基礎メーリングリストに投稿された過去の記事を掲載しているページです。