谷底へ向かって JuMP     Last modified: Feb 25, 2010

JMP は使い方が特殊だし,不十分な分析結果しか得られない点で大きな問題を持っている。なんにも知らずに使っていると,とんでもないことになるかも知れないので,注意すべき点を挙げておく。

「因子分析」について

まず,「因子分析」をしようと「分析」メニューを探しても,「多変量」のところに「主成分分析」しかないことにびっくりする。「まさか因子分析ができないのじゃないだろうな」と。いぶかりながらも「主成分分析」をクリックしても,因子分析の一言もないウインドウが開くので,たいていの人は「因子分析はできないんだなあ」とあきらめるかも知れない。オンラインヘルプを引けば,この先に因子分析をする道が開けていることはわかるのだが。

ともあれ,変数を指定して OK ボタンをクリックすると,結果出力ウインドウが開き,やっと「主成分分析/因子分析」という用語が見える。横のをクリックしても,「主成分の回転」しか見えない。さすがにここまで来ると,「やっぱり因子分析はできないんだなあ」と引き返す人が多いだろう。

「主成分の回転」をクリックするとやっと因子分析を選択するウインドウが出てくる。でも,デフォルトチェックは「主成分分析」に付いている。「共通因子分析」の方をチェックする。まだ,「回転させたい主成分数」などと書いてある所へ「因子数」を指定する。回転方法は 17 種類もあるのに Promax 回転はない。ちなみに,最尤法による因子抽出もできない。

まあ,上に書いたように使いにくいこと甚だしいのは置いておこう。びっくりするのはこれからだ。

問題点を,具体的に示そう。

データ(10 変数,100 例)

    V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1   55 53 58 67 57 53 50 52 49  43
2   67 56 60 54 51 39 34 49 39  43
3   54 45 60 43 44 38 31 50 45  57
4   51 41 36 57 43 56 49 30 48  42
5   68 49 46 63 45 49 44 47 50  60
    :
97  55 61 64 64 68 62 71 42 37  34
98  56 64 43 52 53 50 48 51 43  56
99  71 62 58 59 58 60 55 33 36  46
100 53 47 39 59 55 49 42 39 47  51

因子回転: Varimax

事前共通性の推定値: SMC
V10.61545
V20.51941
V30.25152
V40.65722
V50.48406
V60.63654
V70.66903
V80.33707
V90.48071
V100.38860

縮小した相関係数行列の固有値
縮小した相関係数行列という用語に驚く(要するに対角成分に共通性 SMC を入れた相関係数行列のこと)
累積寄与率が 100% を超えているのは,ご愛敬とはいえない(何のために因子数を入力させたのか)
固有値2.17651.99061.41940.16390.0505-0.0798-0.1240-0.1501-0.1535-0.2539
寄与率43.187739.498528.16553.25221.0014-1.5839-2.4596-2.9786-3.0454-5.0380
累積寄与率43.187782.6862110.8517114.1039115.1054113.5215111.0619108.0834105.0380100.0000

3 因子が因子数の基準によって保持されます。

回転前の因子パターン
ここに,多くの人が気づかないとんでもない結果が示されている
V10.8174146-0.1126640.0403761
V20.7272931-0.0675170.1397364
V30.44228790.14934530.1428637
V40.86004840.0383780.0169197
V5-0.0260130.71621390.0444897
V6-0.0082660.8287369-0.017459
V70.05826750.85393780.1052255
V8-0.049156-0.1055640.6305146
V9-0.167507-0.0926150.7325297
V10-0.0972740.02920020.6558041

JMP の出力は続くがここでカット。

この「回転前の因子パターン」は,共通性の反復推定なしの主因子解である。

そんなばかな。
いまどき共通性の反復推定なしの主因子解を求める統計ソフトを探す方が難しい(SPSS では,反復回数に 1 回を指定すればよいが)。
ということで,R でやってみよう。

> x <- read.csv("dat10.dat")     # 上のデータを x に読み込む
> x <- x[,-1]
> r <- cor(x)                    # 相関係数行列
> SMC <- 1-1/diag(solve(cor(x))) # SMC
> diag(r) <- SMC                 # 相関係数行列の対角成分に SMC を代入
> ans <- eigen(r)                # 固有値・固有ベクトルを求める
> (before <- t(sqrt(ans$values[1:3])*t(ans$vectors[,1:3]))) # 因子負荷量
              [,1]        [,2]        [,3]
 [1,] -0.817414641  0.11266439 -0.04037608
 [2,] -0.727293071  0.06751711 -0.13973643 符号は因子単位で反転できるので,
 [3,] -0.442287879 -0.14934525 -0.14286366 JMP と同じ解が表示されている
 [4,] -0.860048420 -0.03837805 -0.01691966
 [5,]  0.026013348 -0.71621389 -0.04448974
 [6,]  0.008266148 -0.82873688  0.01745875
 [7,] -0.058267547 -0.85393778 -0.10522548
 [8,]  0.049156355  0.10556384 -0.63051457
 [9,]  0.167506912  0.09261514 -0.73252966
[10,]  0.097273812 -0.02920018 -0.65580410

JMP の因子分析についてはここで打ち止め。これ以上の吟味は無用。
共通性の反復推定をしないと,かなり違った解が出ることもある。
いずれにせよ,不十分な主因子解にどんな回転をほどこしても,駄目な結果しか得られないことは明らか。

いいですね?JMP の因子分析は使ってはいけません。

念のため,SPSS による分析結果をつけておきます。
因子行列a
 因子
123
V10.834-0.1280.057
V20.718-0.0760.154
V30.4270.1360.146
V40.9060.0290.040
V5-0.0180.7060.044
V60.0020.838-0.008
V70.0710.9050.122
V8-0.062-0.1110.642
V9-0.194-0.1010.805
V10-0.1060.0270.645
因子抽出法: 主因子法
a. 3 個の因子が抽出されました。
14 回の反復が必要です。


・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI