Up

カテゴリ変量の因子分析

 

変量が順序カテゴリ項目であるときの因子分析を行うスクリプトを書いてみた。カテゴリ変量に対して、その潜在変数として設定した連続変量の相関係数をテトラコリック相関係数/ポリコリック相関係数として求める方法を扱ったウェブサイトのプログラムと因子分析を扱ったウェブサイトのプログラムを1つにまとめたものある。詳しい説明は、それぞれのウェブサイトを参照されたい。

プログラムファイルとサンプルデータファイルは、圧縮ファイルfacatfiles.zipにまとめた。ダウンロード・解凍して利用することができる。

Pythonインストールの説明のウェブサイトも用意している。また、本ウェブサイトのスクリプトの実行には、パッケージnumpymatplotlibが必要である。これは、Pythonのインストール後、コマンドpip

pip install numpy matplotlib

と実行すればよい。パッケージのインストールも上記Pythonのインストールの説明のウェブサイトで説明している。

 

圧縮ファイルfacatfiles.zipをダウンロード・解凍したフォルダのPythonメインスクリプトMain.pyを実行すると図1のように入力データファイル名の設定が求められる。

図1

 

入力データファイルは、CSV(カンマ区切りファイル)ファイルとして用意するが、これはExcelで簡単に作成できる。

まず、Excelで図2に示すようにデータを作成する。

図2

 

1行目には、変数名を並べる。1番目は、データの通し番号など識別用(ID用)変数である。2番目から、分析したいカテゴリ変量名を並べる。

2行目は、各カテゴリ変量におけるカテゴリ数である。1番目の識別用変数は、カテゴリ数は関係ないので、データの形式を合わせるため、適当な数値を書いておく。

3行目から、各行にデータを入力していく。これは、1行目の変数の並びに合わせて書いていく。カテゴリ数がKの変量のカテゴリ値は、1からKまでの整数値で表す。原データのカテゴリ値が1からKまでの整数値でない場合は、Excelの「検索と選択|置換」メニュ項目を選択して、適切な整数値に変換することは簡単である。

図3

 

図2の形式で作成したデータを「名前を付けて保存」メニュ項目を選んで保存する(図4)。ファイルの種類として「CSV(カンマ区切り)(*.csv)」を選び、ファイル名のファイル拡張子を「.csv」として保存すると、CSVファイルが作成される。

図4

 

入力データファイル名を設定すると、次に計算結果の出力ファイル名の設定が求められる(図5)。

図5

 

出力ファイル名は、適当なテキストファイル名を設定する。出力ファイル名を設定すると、計算が始まる。

まず、相関係数の推定が行われる。この推定法については、ポリコリック相関係数/テトラコリック相関係数のウェブサイトを参照されたい。

相関係数の推定が終わると、それに基づいて因子分析が行われる。因子分析については、因子分析のウェブサイトを参照されたい。

因子分析が始まると、固有分解が行われる。算出された固有値が表示され、因子数の設定が求められる(図6)。

図6

 

因子数を設定すると、計算が始まり、初期解のパターン行列の表示における、横軸(x軸)と縦軸(y軸)の因子の指定が求められる(図7)。

図7

 

図8では、横軸に第1因子、縦軸に第2因子を指定している。

図8

 

横軸(ydim)の指定をして、Enterキーを押すと、指定した次元でパターン行列の値が散布図として表示される(図9)。

図9

 

表示されている描画画面は、下端に並んでいるアイコンの一番右端のフロッピーディスクのアイコンをクリックすると保存できる。

フォーム右上のX印をクリックしてフォームを閉じると、次の表示用の縦軸、横軸の因子の指定が求められる(図10)。

横軸の指定に0以下の整数値を設定すると、初期解のパターン行列による散布図の描画は終わり、直交回転(Varimax rotation)が行われ、バリマックス回転後のパターン行列の散布図の表示が行われる。

図10

 

横軸と縦軸の因子を指定すると、指定した因子によるパターン行列の散布図が表示される(図11)。

図11

 

フォーム右上のX印をクリックしてフォームを閉じると、次の表示用因子の指定が求められる(図12)。

図12

 

横軸の因子指定に0以下の整数値を設定すると、直交回転後のパターン行列の散布図による表示は終わり、promax回転による斜交回転が行われる。プロマックス回転が終わると、プログラムの実行終了である。

出力ファイル名として設定したファイル名は、実行終了時に表示されている。

出力ファイルをテキストエディタで開くと、まず入力データファイル名が

Data file = DataV6.csv

と出力されている。その後、相関係数の推定時の出力があり、最後に推定された相関係数が相関行列の形で書き出されている。

MAP estimates of rhos...

                VarA      VarB      VarC      VarD      VarE      VarF

      VarA     1.000     0.006     0.631     0.055     0.598    -0.021

      VarB     0.006     1.000    -0.029     0.656    -0.003     0.624

      VarC     0.631    -0.029     1.000     0.061     0.640     0.058

      VarD     0.055     0.656     0.061     1.000     0.014     0.715

      VarE     0.598    -0.003     0.640     0.014     1.000    -0.005

      VarF    -0.021     0.624     0.058     0.715    -0.005     1.000

 

因子分析の結果は、以下のように出力されている。

Lambda...

                        Lambd    cum.sqr         %

         Lambda-1 =    2.35234   2.35234     39.21

         Lambda-2 =    2.22729   4.57963     76.33

         Lambda-3 =    0.43086   5.01049     83.51

         Lambda-4 =    0.40560   5.41610     90.27

         Lambda-5 =    0.31389   5.72999     95.50

         Lambda-6 =    0.27001   6.00000    100.00

 

 

Pattern matrix for the initial factors

              fctr.1    fctr.2    communality

      VarA  -0.25038  -0.72585        0.58955

      VarB  -0.71048   0.25964        0.57219

      VarC  -0.28806  -0.77171        0.67851

      VarD  -0.83697   0.23305        0.75482

      VarE  -0.23955  -0.73966        0.60448

      VarF  -0.78385   0.25733        0.68063

 

 

Varimax rotation was applied...

 

 

Pattern for the Varimax rotated factors =

              fctr.1    fctr.2

      VarA  -0.00654  -0.76780

      VarB  -0.75616   0.02020

      VarC  -0.02767  -0.82325

      VarD  -0.86763  -0.04524

      VarE   0.00812  -0.77744

      VarF  -0.82499  -0.00532

 

 

Sorted Pattern for Varimax rotation =

              fctr.1    fctr.2

      VarD  -0.86763  -0.04524

      VarF  -0.82499  -0.00532

      VarB  -0.75616   0.02020

      VarC  -0.02767  -0.82325

      VarE   0.00812  -0.77744

      VarA  -0.00654  -0.76780

 

 

Promax rotation was applied...

 

 

Pattern for the Promax rotated factors =

              fctr.1    fctr.2

      VarA   0.00375  -0.76792

      VarB  -0.75666   0.03123

      VarC  -0.01665  -0.82308

      VarD  -0.86728  -0.03260

      VarE   0.01854  -0.77778

      VarF  -0.82516   0.00671

 

 

Correlation matrix of the factors...

              fctr.1    fctr.2

    fctr.1   1.00000   0.02797

    fctr.2   0.02797   1.00000

 

 

Sorted Pattern for Promax rotation =

              fctr.1    fctr.2

      VarD  -0.86728  -0.03260

      VarF  -0.82516   0.00671

      VarB  -0.75666   0.03123

      VarC  -0.01665  -0.82308

      VarE   0.01854  -0.77778

      VarA   0.00375  -0.76792

 

Structure Matrix

              fctr.1    fctr.2

      VarA  -0.01773  -0.76782

      VarB  -0.75579   0.01007

      VarC  -0.03967  -0.82355

      VarD  -0.86819  -0.05685

      VarE  -0.00321  -0.77726

      VarF  -0.82498  -0.01637

 

 

Up