概要
- 因子分析でpromax回転をさせたとき,SPSSとR(psychパッケージのfa関数)と値が一致しない.
- こちらのサイトによると,共通性の平方根で重み付けしていないことが原因とのこと.
- 同じく,上記サイトでその差分を吸収する関数を公開してくださっているのでそれを使う.
内容
背景
- 共同研究者と同じアンケートデータを同じ手法(promax回転,最尤法)で解析しているはずなのに,結果(数値)が大幅に異なることが…
原因
- 共同研究者はSPSS,こちら側ではR(psychパッケージのfa関数)を使っているので,そこに原因があるのは確実
- よく見たら,SPSSはkaiserの正規化をしているのに,Rではしていなかったので,kaiser関数を当ててみたりする
- それでも合わず…
- こちらのサイトによると,共通性の平方根で重み付けしていないことが原因とのこと.
解決方法(Usage)
− 同じく,上記サイトにその差分を吸収する関数があるのでそれを使う.
たとえばこんな感じ
sample.R
dat <- read.csv("sample.csv", h=T, row.names=1)
print(promax2(fa(dat,2,rotate="varimax", fm="ml")),digits=3)
に,してあげると,小数点以下3桁目くらいに細かいズレがあるものの,ほぼSPSSの結果と一致するような値を得ることが出来る.
解析例
たとえばこちらのサイトの例だと,SPSS(バージョンその他不明)で得たとして紹介されているLoadingは以下の通り
SPSS | 因子1 | 因子2 |
---|---|---|
社会 | .940 | -9.146E-02 |
国語 | .829 | -3.322E-02 |
英語 | .648 | .249 |
数学 | -.127 | 1.042 |
理科 | .175 | .599 |
R(version 3.3.2)のpsych(v1.6.8)と,上記のサイトにあるpromax2を用い,同じデータを処理1して得たLoadingは以下の通り(SPSSと比較しやすいように順番を入れ替え済み)
R | ML2 | ML1 |
---|---|---|
社会 | 0.940 | -0.092 |
国語 | 0.829 | -0.033 |
英語 | 0.647 | 0.295 |
数学 | -0.127 | 1.041 |
理科 | 0.174 | 0.601 |
検索用のタグ
因子分析,プロマックス回転,promax回転,SPSS,R,値,一致しない.
-
上述の sample.R がその時の処理 ↩