Up

因子分析

 

主因子法による因子分析のプログラムを作成した。計算式は、<岡本安晴「心理学データ分析と測定」勁草書房>の第6章のものを用いた。プログラムとサンプルデータファイルは、まとめて圧縮ファイルFAPrg.zipとした。

上掲書のデータ表5.1.1を用いて説明する。

 

5.1.1 6教科<国語、英語、歴史、数学、物理、化学>の100人の点数

(シミュレーションで作成)

  48  46  60  47  68  44

  54  49  63  61  49  45

  48  55  47  49  49  47

  83  78  85  79  66  63

  56  49  56  78  70  73

  78  86  76  67  67  75

  62  64  59  62  69  57

  80  78  82  82  80  75

  55  49  58  79  67  75

  53  65  63  75  89  77

  45  52  53  47  41  42

  59  62  72  56  72  72

  44  34  49  54  65  59

  79  64  75  37  15   9

  62  69  66  71  67  66

  72  63  66  80  84  72

  78  82  83  81  67  81

  62  73  63  60  64  67

  66  60  61  64  43  63

  70  66  71  50  55  52

  43  36  46  53  62  46

  43  48  29  41  48  52

  68  55  60  76  63  68

  72  80  66  78  64  79

  66  46  59  67  70  68

  49  66  51  26  29  34

  20  28  32  51  34  33

  75  78  83  68  69  66

  39  41  40  72  60  63

  54  59  57  43  50  50

  72  57  69  66  75  75

  59  47  45  43  68  69

  43  49  44  78  60  55

  59  66  62  49  48  41

  41  47  49  51  50  51

  76  91  89  95  89  85

  75  88  58  45  57  58

  79  75  75  46  45  46

  64  78  62  70  52  49

  39  52  55  53  59  52

  55  68  65  50  51  49

  59  63  57  55  54  74

  30  24  34  53  41  33

  74  76  77  66  63  54

  71  73  76  56  74  54

  71  73  78  61  50  47

  50  52  60  49  55  48

  55  71  57  49  50  43

  57  52  46  60  68  61

  64  64  65  48  57  45

  88  84  79  60  57  60

  38  41  39  41  39  45

  49  45  59  74  65  64

  68  73  65  65  42  49

  48  46  54  65  54  52

  58  72  55  70  55  69

  55  63  58  46  67  67

  56  47  50  71  57  59

  58  56  49  50  57  59

  60  59  56  87  84  82

  73  65  63  39  38  30

  63  74  58  56  71  70

  50  58  47  62  60  57

  26  23  18  51  70  61

  65  54  62  52  53  51

  51  42  50  53  39  42

  63  63  58  69  70  71

  75  77  73  76  77  78

  49  55  48  69  79  82

  50  68  60  60  50  52

  23  33  19  65  51  44

  65  52  55  68  48  54

  75  82  69  73  65  80

  65  63  56  67  73  63

  60  65  82  87  68  77

  39  53  53  47  50  50

  51  64  54  62  53  50

  86  81  82  72  66  65

  60  56  61  71  60  66

  47  41  39  57  79  69

  87  77  84  55  77  76

  40  48  37  55  57  56

  84  62  77  37  46  56

  53  53  61  47  67  59

  76  80  73  48  55  49

  62  72  71  48  40  37

  55  55  66  77  60  44

  71  52  54  69  69  82

  80  77  84  54  66  58

  53  55  56  38  47  43

  56  45  49  68  66  60

  79  74  69  73  66  66

  43  32  53  57  90  77

  29  26  24  47  48  41

  70  71  71  63  70  72

  28  24  38  64  57  59

  49  46  44  74  77  75

  84  84  96  69  60  69

  39  51  39  59  60  65

  47  45  60  68  72  70

 

プログラムを実行すると、図1のように入力ファイル名の設定が求められる。

図1

 

入力データファイルは、図2の形式で用意する。

図2

 

第1文字目がスラッシュ / である行の次の行に変数の数を書く。次の行に、ケースID用変数(データの通し番号を書いておくと便利である)の名前と、それに続けて分析変数の名前を書き並べる。続く行から、1行に1ケースごとのデータを、ケースIDの値を書いた後に、各変数の値を並べて書く。ケースIDの値は、文字列として読み込まれるので、数字以外でもよい。データをすべて書き終わったら、第1文字目がスラッシュ / で始まる行を置いて、データの終わりとする。最初のスラッシュ / で始まる行までは読み飛ばされるので、コメントを書くことができる。また、最後のスラッシュで始まる行の後は無視されるので、ここにもコメントを書くことができる。

入力データ名は、プログラムのファイルがあるフォルダと同じフォルダ内にあるときは、ファイル名だけの設定でよい(図3)。

図3

 

入力データファイル名を設定してEnterキーを押すと、次に計算結果の出力用テキストファイル名の設定が求められる(図4)。

図4

 

出力ファイル名を設定してEnterキーを押すと、計算が始まる。まず、相関行列の固有値が出力され、因子の数の入力が求められる(図5)。

図5

 

固有値のパターンを参考にして、2を設定してみる(図6)。

図6

 

2を設定してEnterキーを押すと、因子パターの初期値が算出される。その後、パターンの描画を行うかどうか聞いてくる(図7)。

図7

 

xdim = 」に負の整数を設定すると、このパターンの描画は行われない。

正数を設定すると、各変数がxdimydimに設定した番号の因子の負荷量を横座標値、縦座標値とする点として描画される。因子の番号として大き過ぎる値が設定されたときは、可能な最大値が設定される。

図8

 

ydim = 」の値を設定してEnterキーを押すと、図9のように各変数に対して、指定した因子の負荷量を座標とする点がプロットされる。

図9

 

図9のウィンドウの右上のX印をクリックして閉じると、図10のように次の描画におけるxdimの値が求められる。

10

 

別の組み合わせの描画を行うときは、それらの値を設定すればよい。初期値のパターンの描画を終えるときは、「xdim」に負の値を設定する。

図11では、「xdim = -1」と設定している。

図11

 

図11の画面で、「xdim = -1」と設定した後、Enterキーを押すと、図11のようにVarimax回転後の因子パターンの描画について聞いてくる。

図11

 

設定方法は、先の初期値因子パターンの場合と同様である。図12のように設定してみる。

図12

 

図13のように、回転されたパターンが表示される。

図13

 

図13のウィンドウを閉じると、図14のように次のxdimの値の設定が求められる。

図14

 

図14のようにxdimに負の値を設定すると、因子パターンの描画は終わり、プロマックス回転後、出力ファイルの保存が行われたというメッセージを表示して、プログラムの実行終了となる(図15)。

図15

 

プログラムの実行終了後、出力ファイルを開くと、上の表5.1.1のデータの場合は、以下のようになっている。

 

Input data file = Data511.txt

 

 

n_vars = 6

Var_names...

        ID       Jpn       Eng      Hist      Math      Phys      Chem

 

         1    48.000    46.000    60.000    47.000    68.000    44.000

         2    54.000    49.000    63.000    61.000    49.000    45.000

         3    48.000    55.000    47.000    49.000    49.000    47.000

         4    83.000    78.000    85.000    79.000    66.000    63.000

         5    56.000    49.000    56.000    78.000    70.000    73.000

        ・

        ・

        ・

        96    28.000    24.000    38.000    64.000    57.000    59.000

        97    49.000    46.000    44.000    74.000    77.000    75.000

        98    84.000    84.000    96.000    69.000    60.000    69.000

        99    39.000    51.000    39.000    59.000    60.000    65.000

       100    47.000    45.000    60.000    68.000    72.000    70.000

 

 

R =

          Jpn       Eng       Hist      Math      Phys      Chem     

Jpn       1.00000   0.84066   0.87327   0.23810   0.19741   0.29807  

Eng       0.84066   1.00000   0.82001   0.20751   0.12885   0.24563  

Hist      0.87327   0.82001   1.00000   0.27644   0.20387   0.24637  

Math      0.23810   0.20751   0.27644   1.00000   0.60998   0.67641  

Phys      0.19741   0.12885   0.20387   0.60998   1.00000   0.84128  

Chem      0.29807   0.24563   0.24637   0.67641   0.84128   1.00000  

 

Lambda...

                        Lambd    cum.sqr         %

         Lambda-1 =    3.25276   3.25276     54.21

         Lambda-2 =    1.86791   5.12067     85.34

         Lambda-3 =    0.42494   5.54561     92.43

         Lambda-4 =    0.20646   5.75207     95.87

         Lambda-5 =    0.14753   5.89960     98.33

         Lambda-6 =    0.10040   6.00000    100.00

 

 

Pattern matrix for the initial factors

              fctr.1    fctr.2    communality

       Jpn  -0.82978   0.45147        0.89236

       Eng  -0.75926   0.46560        0.79326

      Hist  -0.81036   0.44279        0.85276

      Math  -0.55047  -0.44045        0.49701

      Phys  -0.58987  -0.65074        0.77141

      Chem  -0.70145  -0.65671        0.92330

 

 

Varimax rotation was applied...

 

 

Pattern for the Varimax rotated factors =

              fctr.1    fctr.2

       Jpn  -0.15657   0.93158

       Eng  -0.10194   0.88480

      Hist  -0.15142   0.91095

      Math  -0.68624   0.16152

      Phys  -0.87605   0.06281

      Chem  -0.94958   0.14694

 

 

Sorted Pattern for Varimax rotation =

              fctr.1    fctr.2

      Chem  -0.94958   0.14694

      Phys  -0.87605   0.06281

      Math  -0.68624   0.16152

       Jpn  -0.15657   0.93158

      Hist  -0.15142   0.91095

       Eng  -0.10194   0.88480

 

 

Promax rotation was applied...

 

 

Pattern for the Promax rotated factors =

              fctr.1    fctr.2

       Jpn  -0.01992   0.93881

       Eng   0.02932   0.89851

      Hist  -0.01775   0.91826

      Math  -0.68336   0.06622

      Phys  -0.89417  -0.06349

      Chem  -0.95724   0.01259

 

 

Correlation matrix of the factors...

              fctr.1    fctr.2

    fctr.1   1.00000  -0.28331

    fctr.2  -0.28331   1.00000

 

 

Sorted Pattern for Promax rotation =

              fctr.1    fctr.2

      Chem  -0.95724   0.01259

      Phys  -0.89417  -0.06349

      Math  -0.68336   0.06622

       Jpn  -0.01992   0.93881

      Hist  -0.01775   0.91826

       Eng   0.02932   0.89851

 

Structure Matrix

              fctr.1    fctr.2

       Jpn  -0.28589   0.94445

       Eng  -0.22524   0.89021

      Hist  -0.27790   0.92329

      Math  -0.70213   0.25982

      Phys  -0.87618   0.18984

      Chem  -0.96081   0.28378

 

 

まず、入力データファイル名が出力されている。

続いて、変数の数と変数名が書き出されて、読み込んだデータ値が出力される。この出力を見れば、データが正しく読み込まれているかどうかのチェックができる。

次に、相関係数が出力され、その固有値が累積比率とともに書き出されている。

続いて、初期値の因子パターンと共通性が出力されている。初期値のパターンが、上掲書の表6.1.3のものと符号が逆になっているが、これは符号を反転したものも同じく正解である。固有分解の固有ベクトルの方向は、固有分解の具体的アルゴリズムによって方向が決まり、符号の反転されたものも正しく解である。

その後、バリマックス回転が適用された結果が出力されている。バリマックス回転後の解も、上掲書の表6.1.4のものと因子1と因子2が入れ替わり、符号も逆になっている。符号が逆になっているのは、因子はその方向を反転したものもバリマックス回転の解として正解であることによる。因子1と因子2が入れ替わっているのも、因子の入れ替えはバリマックス解として正解であることによる。

バリマックス回転の結果に続いて、プロマックス回転の結果が、因子相関行列、構造行列とともに出力されている。プロマックス解においても、上掲書の表6.1.5(因子パターン)および表6.1.7(構造行列)と符号の反転および因子の入れ替わりがあるが、これもバリマックス解と同様、因子の反転および入れ替わりも正解であることによる。

 

 

Up