==================================== 多重共線性チェック(SPSS)マクロ eig0vec.sps 説明 1996.8.7. K.Hori(hori@ec.kagawa-u.ac.jp) ==================================== 多重共線性があるかどうかのチェックの一つの方法として、主成分分析の固有 値0に対応する固有ベクトルを調べる方法があります。固有値0は固有値0と 見なしていい値を決めそれより小さい場合を固有値0とします。 -------------- 必要オプション -------------- (1)professional statistics (2)advanced statistics ----------- 動作確認 ----------- (1)spss 6.1.3J for windows /windows 3.1 (2)spss 7.0.1 /windows 95 --------------- 利用方法(例) --------------- (1)SPSSマクロの使い方は本来include を使います。Macではうまく 行かないということです。ここでは、まず、eig0vec.sps をSPSSシンタ ックス窓に読み込み、走らせます。(ctrl-a [全範囲選択]→ ctrl-r [S PSSシンタックスの実行])(2)下のプログラムを別のシンタックス窓に読 み込み走らせて見る。(同上) eig0vec var=rn1 to rn12. の部分がマクロを走らせる部分で、その他は変数の準備の部分。 ============================================================== 利用方法の要約 (1)多重共線性をチェックする変数のデータをロードしておく。 (2)eig0vec.sps をシンタックス窓に読み込み走らせる。 (3)マクロ実行コマンド eig0vec var=変数リスト. を実行する。 ----------------------------------------- 註: 変数の数が50を超えるときは eig0vec var=変数リスト nvar=変数数 と変数の数(その数以上ならいい)を与えてやる。 ============================================================ -------- 出力 -------- (1)固有値リスト (2)固有値0に対応する固有ベクトル(固有値0と見なすものがあった場合) (3)そのほかproximities を使っているのでそれに対応する出力が少しでる が無視してください。 *************************************************** --------------- 出力例の説明 --------------- 下のSPSSプログラムは (1)正規乱数を生起させ、10変数つくる。 (2)10変数を主成分分析し、その主成分得点を出力し、その変数名を rn1 〜 rn10 とする。こうすると、無相関の変数を10つくったことになる。 (3) compute rn11=rn1+rn2-rn3. compute rn12=rn7+rn8. 変数を新たに2つ作った。 rn11,rn1,rn2,rn3 の間とrn12,rn7,rn8 の 間に多重共線性が生じる。 (4)次の出力で、第11固有値と第12固有値は0と見なすことができる。 ----------------------------- Run MATRIX procedure: ***** 多重共線性チェック(主成分分析) ***** 相関行列の 固有値 Columns 1 - 9 1 2 3 4 5 6 7 8 9 1.99999998 1.99999998 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 Columns 10 - 12 10 11 12 1.00000000 .00000002 .00000002 ------------------------------- (5)第11固有値と第12固有値に対応する固有ベクトルが出力される。 第11固有値に対応するのが上の計算 compute rn11=rn1+rn2-rn3. に対応し、 第12固有値に対応するのが、上の計算 compute rn12=rn7+rn8. に対応するものであることがわかる。 このように固有値0と対応するものが、多重共線性の関係をあらわしているこ とがわかる。(応用)独自性を入れても多重共線性を見つけることができるこ とを示してみよう。 ------------------------------------- 相関行列の固有ベクトル と 固有値 11 12 RN1 -.4082 .0000 RN2 -.4082 .0000 RN3 .4082 .0000 RN4 .0000 .0000 RN5 .0000 .0000 RN6 .0000 .0000 RN7 .0000 -.5000 RN8 .0000 -.5000 RN9 .0000 .0000 RN10 .0000 .0000 RN11 .7071 .0000 RN12 .0000 .7071 固有値 .0000 .0000 -------------------------------------- 連絡先: hori@ec.kagawa-u.ac.jp 堀 啓造 *ex.sps ----------------------------------------------------. title 多重共線性実験. preserve. new file. input program. vector f(10). loop #i=1 to 100. + loop #j = 1 to 10. + compute f(#j)=normal(1). + end loop. + end case. end loop. end file. end input program. factor var=f1 to f10 /print=rotation /criteria=factors(10) /rotation=norotate /save=reg(all rn) . compute rn11=rn1+rn2-rn3. compute rn12=rn7+rn8. exec. eig0vec var=rn1 to rn12. *----------------------------. *end.