猫も杓子も構造化

発達障害、特別支援などについて書いています。最近は心理学関係の内容が多めです。

いきなり因子分析(その4):因子軸の様々な回転

まだまだ因子分析の続き。

その1(とりあえず試した編)
その2(因子数の決定編)
その3(様々な推定法編)

今回は因子の回転について。

様々な因子軸の回転法

このシリーズものの記事では、Rのpsychというパッケージのfa()という関数を使っているのだが、これは 実にたくさんの回転方法を指定できる。

関数のHelpを見てみると因子間の相関を仮定しない直交回転だけで次のものがある。

  • 初期解 "none"
  • リマックス "varimax"
  • クォーティマックス "quartimax"
  • ベントラー(直交) "bentlerT"
  • エカマックス "equamax"
  • バリミン? "varimin"
  • ジオミン(直交)"geominT"
  • バイファクター"bifactor"

因子間に相関を仮定する斜交回転では次のものがある。

  • プロマックス "Promax"
  • プロマックス"promax"
  • オブリミン "oblimin"
  • シンプリマックス"simplimax"
  • ベントラー(斜交)"bentlerQ
  • ジオミン(斜交)"geominQ"
  • バイクォーティミン"biquartimin"
  • 独立クラスタ"cluster"

日本語で調べても出てこないものについては、カタカタでこれがあっているのかも分からない。とにかくたくさん回転法があることは分かった。

ちなみにプロマックスが2つあるのは、SPSSのプロマックスは回転の前になんか処理を施しているので、その処理を施した版とそうでない版を用意しているとのことだ。Helpには以下のように書いてある。

SPSS seems to do a Kaiser normalization before doing Promax, this is done here by the call to "promax" which does the normalization before calling Promax in GPArotation.

回転方法の決め方

これだけあるとどれを選べばよいか分からないとの声が聞こえてきそうだ。少なくとも私はどれを選べばよいか分からない。

そういう困ったことがあるときは、清水先生のHPをみると良い。

因子分析における因子軸の回転法についてなんていう素敵な記事が見つかる。回転法についてそれぞれがどんな回転なのかを説明してくれている激アツ資料である。

そこには、次のような回転法の決め方の提案がなされている。

  1. 基本はプロマックス回転で問題ない。プロマックス回転で思うような解が得られない場合は他の回転を試す。
  2. より単純構造を目指したいなら独立クラスター回転がオススメ。
  3. そもそも単純構造にならないと思われるデータの場合、ジェオミンやオブリミン回転がオススメ。
  4. 先行研究を再現したい場合は、出てほしい因子負荷量を指定してプロクラステス回転を使う。
  5. 他にも確認的因子分析という選択肢もある。

Rで実験

早速Rで試してみる。プロマックスと単純構造度合いが強いとされる独立クラスタと複雑な構造を許容するというジオミンを試してみることにする。

データは前記事と同じようにlavaanHolzingerSwineford1939を使うことにする。

result_promax <- fa(r = dat[7:15],
                    nfactor = 3,
                    fm = "ml",
                    rotate= "promax",
                    use = "pairwise"
                    )
result_cluster <- fa(r = dat[7:15],
                    nfactor = 3,
                    fm = "ml",
                    rotate= "cluster",
                    use = "pairwise"
                    )
result_geominQ <- fa(r = dat[7:15],
                     nfactor = 3,
                     fm = "ml",
                     rotate= "geominQ",
                     use = "pairwise"
                     )

結果のうち因子負荷量の部分を示すとそれぞれ次の通り。

プロマックス

ML1 ML2 ML3 h2 u2 com
x1 0.153 0.036 0.609 0.487 0.513 1.13
x2 0.013 -0.116 0.525 0.251 0.749 1.1
x3 -0.115 0.029 0.703 0.457 0.543 1.06
x4 0.844 0.005 0.01 0.721 0.279 1
x5 0.898 0.007 -0.082 0.757 0.243 1.02
x6 0.807 -0.011 0.068 0.695 0.305 1.01
x7 0.044 0.743 -0.215 0.498 0.502 1.17
x8 -0.049 0.722 0.049 0.531 0.469 1.02
x9 0.005 0.479 0.335 0.457 0.543 1.79

独立クラスタ

ML1 ML2 ML3 h2 u2 com
x1 0.151 0.083 0.595 0.487 0.513 1.17
x2 0.012 -0.078 0.516 0.251 0.749 1.1
x3 -0.115 0.083 0.682 0.457 0.543 1.09
x4 0.839 0.005 0.02 0.721 0.279 1
x5 0.892 0.000 -0.065 0.757 0.243 1.01
x6 0.802 -0.007 0.081 0.695 0.305 1.02
x7 0.043 0.735 -0.238 0.498 0.502 1.21
x8 -0.049 0.735 0.019 0.531 0.469 1.01
x9 0.004 0.510 0.308 0.457 0.543 1.64

ジオミン

ML1 ML3 ML2 h2 u2 com
x1 0.188 0.604 0.029 0.487 0.513 1.20
x2 0.044 0.507 -0.119 0.251 0.749 1.1
x3 -0.073 0.691 0.020 0.457 0.543 1.02
x4 0.839 0.024 0.01 0.721 0.279 1
x5 0.887 -0.065 0.010 0.757 0.243 1.01
x6 0.806 0.080 -0.009 0.695 0.305 1.02
x7 0.031 -0.150 0.726 0.498 0.502 1.09
x8 -0.045 0.106 0.703 0.531 0.469 1.05
x9 0.025 0.368 0.463 0.457 0.543 1.91

結果を比べてみると独立クラスター回転では、観測変数x9のメリハリをよりつけるようにしたということで、言われているように単純構造を目指している感じがする。一方でジオミンはやや、もやっとした構造になったような印象を受ける。

ちなみに複雑性の平均を比較すると次の通り(複雑性は1に近いほど単純構造ということであった)。

回転法 複雑性の平均
プロマックス 1.1
独立クラスタ 1.1
ジオミン 1.2

やはりジオミンはやや複雑な構造を持つと想定される場合に使うと良いのかもしれない。