(株)サスインスティチュートジャパン、テクニカルサポート
の小野と申します。
メールが長くなりますことをお許し下さい。
> >一体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では実現されていました)。
--- 以上です。
ここは心理学研究の基礎メーリングリストに投稿された過去の記事を掲載しているページです。