Chap6 因子分析

コンテンツ

6.1 因子分析の目的6.2 因子分析と主成分分析の違い6.3 因子分析の流れ6.4 分析の目的を定め,データを用意する6.5 因子負荷量,寄与率,因子得点を求める6.6 結果から因子の解釈を行う

6.1 因子分析の目的

因子分析とは,多数の観測変数が,少数の観測できない潜在因子から どのような影響を受けているかを 説明するための手法である.イメージを図示すると図6.x.xのようになる.

図6.x.x.因子分析のイメージ

図6.x.xでは6つの観測された変数の背後に目に見えない2つの潜在因子が存在し, 6つの各変数がそれぞれ2つの潜在因子で説明されることを表している. なお,各変数の潜在因子で説明できない部分を独自性とよび,独自因子eで説明される. 潜在因子は各変数の共通している部分を表すことから共通因子,または単に因子ともいう.

また,図6.x.xの因子分析のイメージをモデル式で表すと,


となる.ここで,添え字iはデータ番号,jは変数を表す. fで表した因子得点とは,個々のデータに対する共通因子の値のことである. また,aで表した因子負荷量とは.何番目のデータでも同じ値である,共通因子にかかる係数のことである. 上式のように,因子分析では,共通因子を用いることによって,観測された値(i番目のデータの変数jの値)を, 共通因子によって表される部分と,共通因子で説明できない独自因子部分によって表現することができる.


また,因子分析には,想定する因子の数をいくつにするのかという重要な問題がある. n個の観測変数からは,n個の因子を求めることができるが,因子分析の目的は観測変数を少数の共通因子に よって説明することであるので,あまり因子数が多くなってしまっては意味がない. そこで,因子数決定の目安には以下のようなものが用いられる.

以上のようにいろいろな決め方がある.したがって,因子分析は想定する因子の数を変えて, 何回も分析を繰り返し,それらの結果を比較することで最適な因子数を決めることが望ましい.
[一番上へ]

6.2 因子分析と主成分分析の違い

因子分析と主成分分析では,類似した解析結果が得られることが多い.ではどこが違うのだろうか?

主成分分析では,多数の変数の情報を少ない次元で解釈することを目的とし, 観測変数の一次結合の形をした合成変数である主成分を構成した. それに対し,因子分析では,多数の観測変数の背後に少数個の潜在因子を想定し,潜在因子によって 変数を説明することが目的であるので,多数の観測変数を少数個の共通因子に分解していると考えることができる. 主成分分析の章の主成分分析のイメージ図(図4.x.x)と,この章の因子分析のイメージ図(図6.x.x)を 比較してみると,変数と因子・主成分間の矢印の向きが逆であることが見て取れる. これが,両者の違いである. つまり,主成分分析と因子分析の違いは,変数を「合成」するか「分解」するかという違いであるといえる.


[一番上へ]

6.3 因子分析の流れ

因子分析の大まかな流れは,次のようになる. 各ステップの解説は後述する.

  1. 分析の目的を定め,データを用意する
  2. 因子負荷量,寄与率,因子得点を求める
  3. 結果から因子の解釈を行う

[一番上へ]

6.4 分析の目的を定め,データを用意する

テストの結果(一部)が,以下の表xであるものとする.データがほしい方は 「こちら(testdata.csv)」からどうぞ)

表x.テストの結果(一部)
番号 国語 英語 数学 物理 地歴 公民
1 65 56 69 33 93 73
2 74 54 92 78 72 74
3 49 70 91 81 39 29
4 46 64 75 32 69 69
5 62 45 65 69 75 76

このデータは,テストのデータで,6変数,40名分のデータである. このデータを使って,「観測された変数の背後にどのような潜在因子が存在するのか」を明らかにすることを 目的として分析を行う.なお,ここでは2因子が共通因子として存在することを仮定し,分析を進めていく.

[一番上へ]

6.5 因子負荷量,寄与率,因子得点を求める

まず,図6.x.1のようにデータが準備されているものとする (データのインポートについては, データのインポート・エクスポート参照). データの準備が出来たら,因子分析を行うメニューを呼び出す.

図6.x.1 データの準備
図6.x.1. データの準備


メニューバーから,[統計]→[多変量解析]→[因子分析]の順番で選択する.


図6.x.2 因子分析を選択
図6.x.2. 因子分析を選択


すると,以下のようなウィンドウが現れる.


図6.x.3 因子分析のメニュー
図6.x.3. 因子分析のメニュー

このウィンドウは,因子分析をする際の設定メニューである. これから,次のような設定を行う.

まず,[Model]タブをクリックし,次のように設定する.
図6.x.4 Model
図6.x.4. 因子分析のメニュー(Model)

因子分析に使うデータを選択するため,Data Setで"テストデータ"を選択する. 想定する因子数を2つとするため,Number of Factorsを"2"とする. 推定法に最尤法を用いるため,Methodで"mls"を選択する. 回転法でバリマックス法を用いるため,Rotationで"varimax"を選択する. 回転とは因子分析の結果を理解しやすくするための手段であり,さまざまな方法があるのだが, 最も一般的なものがバリマックス法である. 結果を保存する変数を指定するため,Save Model ObjectのSave Asに好きな名前(今回はfactor)を入れ, Include Scoresのチェックボックスをクリックし,チェックを入れる. また,FormulaのVariablesには,分析に使用する変数を設定するのだが, 今回は全変数を使用するので,ALLを選択する.


図6.x.5 Results
図6.x.5. 因子分析のメニュー(Results)

分析結果の要約を表示させるため,Printed ResultsのShort Outputのチェックボックスをクリックし, チェックを入れる.また,因子負荷量の値を表示させるため,同じくPrinted ResultsのLoadingsにも チェックを入れる. Cutoff Loading Valueは,ここで設定した値以下の値は, 因子負荷量の値を表示させないという設定である.


図6.x.6 plot
図6.x.6. 因子分析のメニュー(Plot)

因子負荷量の棒グラフを描くために,Loadingsのチェックボックスにチェックを入れる. さらに,因子得点の散布図を描くために,Biplotのチェックボックスにチェックを入れる. また,Biplot Whitch Scoresには,散布図のx軸,y軸に何番目の因子を設定するかを書き込む. "c(1,2)"とは,x軸に第1因子を,y軸に第2因子を設定する,という意味である. これで設定はすべて終了である.画面左下の[OK]をクリックする.



[一番上へ]

6.6 結果から因子の解釈を行う

設定終了後,[OK]を押すと,2つのウィンドウが新しく立ち上がる.

  1. 因子分析の統計量に関するレポート
  2. 第1因子と第2因子の因子負荷量の棒グラフと因子得点の散布図

レポートの読み方

まず初めに,因子分析の統計量に関するレポートについて解説する. 以下のように記述されているウィンドウをクリックする.

	*** Factor Analysis ***
Sums of squares of loadings:
  Factor1  Factor2 
 1.503004 1.366113

The number of variables is 6 and the number of observations is 40 

Test of the hypothesis that 2 factors are sufficient
versus the alternative that more are required:
The chi square statistic is 7.62 on 4 degrees of freedom.
The p-value is 0.107 

Component names:
 
 "loadings" "uniquenesses" "correlation" "criteria" "factors"
 "dof" "method" "center" "scale" "n.obs" "scores" "call"

Call:
factanal(x =  ~ ., factors = 2, method = "mle", data = テストデータ, 
	scores = T, type = "regression", rotation = "varimax",
	na.action = na.omit, control = list(iter.max = 20, unique.tol = 0.0001))

Importance of factors:
                 Factor1   Factor2 
   SS loadings 1.5030043 1.3661135
Proportion Var 0.2505007 0.2276856
Cumulative Var 0.2505007 0.4781863

The degrees of freedom for the model is 4.

Uniquenesses:
      国語      英語      数学          物理      地歴      公民 
 0.5041836 0.6531852 0.6179322 0.00006602249 0.4980941 0.8573037

Loadings:
     Factor1 Factor2 
国語          0.704 
英語  0.238   0.539 
数学  0.615         
物理  0.999         
地歴 -0.248   0.664 
公民          0.368 

ここからは,順に追って内容を説明していく.


Sums of squares of loadings:
  Factor1  Factor2 
 1.503004 1.366113

Factor1, Factor.2はそれぞれ第1因子,第2因子という意味のラベルである. Sums of squares of loadingsとは因子負荷量平方和であり, 因子ごとに各変数に対する因子負荷量の2乗の値を足し合わせたものである. テストの点数全体の情報量は,各因子の因子負荷量平方和を足し合わせたもので表すことができ, このときの第1因子の1.503,第2因子の1.366をそれぞれの因子の寄与量とよぶ. これは,全体の情報量に各因子がどれだけ寄与しているかを表すからである. この結果の場合,第1因子が1.503,第2因子が1.366であるから,第1因子の寄与の方が大きい.


The number of variables is 6 and the number of observations is 40 

この文章は,「変数の数は6で,40個のデータが使われました」という意味である.


Test of the hypothesis that 2 factors are sufficient
versus the alternative that more are required:
The chi square statistic is 7.62 on 4 degrees of freedom.
The p-value is 0.107 

この文章は,想定した因子分析モデルが十分当てはまっているかどうか,適合度検定を行った結果であり, 「モデルの自由度が4で,χ二乗値が7.62,p値が0.107である」という意味である. p値が0.1ぐらいであるので,モデルが当てはまっているという帰無仮説は有意水準5%で棄却されない. つまり,当てはまっていないとはいえないので,当てはまっているという一つの目安となる.


Component names:
 
 "loadings" "uniquenesses" "correlation" "criteria" "factors"
 "dof" "method" "center" "scale" "n.obs" "scores" "call"

因子分析の設定画面で,ModelタブのSave Model Objectで, 結果を保存する設定をした場合,その名前のListに含まれている変数名を表示している.


Call:
factanal(x =  ~ ., factors = 2, method = "mle", data = テストデータ, 
	scores = T, type = "regression", rotation = "varimax",
	na.action = na.omit, control = list(iter.max = 20, unique.tol = 0.0001))

S-PLUS内で因子分析を行うために,S-PLUSが使った関数と設定を表示している. factanalから0.0001))までをコピーして,コマンドウィンドウで実行すると, 全く同じ分析を行うことができる.


Importance of factors:
                 Factor1   Factor2 
   SS loadings 1.5030043 1.3661135
Proportion Var 0.2505007 0.2276856
Cumulative Var 0.2505007 0.4781863

SS loadingsとは先に述べた因子負荷量平方和である.2行目のProportion Varは,「寄与率」と呼ばれるもので, 因子1つだけで,どのくらいの割合の情報を説明しているかを表している. また,Cumulative Proportionとは,「累積寄与率」と呼ばれるものである. 因子数の決め方で,累積寄与率がある程度大きくなるところまでの因子を採用するという決め方が あったが,それはこの累積寄与率の値に注目し,ある値(例えば50%や80%)を超えるところまでを 採用するという方法である. この分析では,第2因子までで累積寄与率が約50%であるので,2つの因子である程度の情報を 説明できると考えることとする.


The degrees of freedom for the model is 4.

この文章は,このモデルの自由度は4であることを表している.

Uniquenesses:
      国語      英語      数学          物理      地歴      公民 
 0.5041836 0.6531852 0.6179322 0.00006602249 0.4980941 0.8573037

Uniquenessesとは独自性という意味であり,因子モデルでは説明できない情報量の割合を表している. 独自性は1から共通性(共通因子(潜在因子)だけで説明できる情報量)を引いた値である. 例えば,物理のUniquenessesの値をみると,非常に小さい値であるので, 物理の点数のほとんどの情報が共通因子で説明できるということがわかる.

Loadings:
     Factor1 Factor2 
国語          0.704 
英語  0.238   0.539 
数学  0.615         
物理  0.999         
地歴 -0.248   0.664 
公民          0.368 

Loadingsとは,各因子に対する因子負荷量の値である. また,因子負荷量が0.1以下の値の部分は空欄になっている. これは設定のところで0.1以下の値を表示しないようにしたためである. 因子得点は一人ひとりの各教科の点数を標準化した値に各因子の因子負荷量を掛け合わせることで求められる. また各因子に対する因子負荷量の値を図示したものが図6.x.xである.

図6.x.x loadings
図6.x.x. 各変数の因子負荷量

この因子負荷量は,求めた因子が何を現しているかを解釈するためにも使用する. 解釈には,値の「符号」と「絶対値の大きさ」を見る. 第1因子は物理,数学の値が大きく,第2因子はその他の科目の値が大きい. 科目の内容から判断すると,第1因子は「理系能力」,第2因子は「文系能力」を表していると考えられる.

因子分析の結果として,6つのテスト科目の背後には,2つの潜在因子「理系能力」「文系能力」というものが 存在し,それらによりある程度説明されるということがわかった. しかし,因子の解釈の仕方はあくまでも主観によるものであるので,必ずしも正しいとはいえない. 因子の解釈にはそれなりの理由や根拠が必要であるので,多くの人が納得できる解釈をすることが重要である.

因子得点の散布図(biplot)

第1因子と第2因子の因子得点の散布図を図6.x.xに示す.

図6.x.x biplot
図6.x.x. 因子得点の散布図

この散布図は,x軸に第1因子の因子得点を,y軸に第2因子の因子得点を取ったものである. 散布図を作ることで,因子を使って,データの全体的な特徴をつかむことができる.

[一番上へ]