Rによるデータサイエンス】因子分析
【定義】
因子分析の定義は、次のように書かれている。
変数の間の相関関係から共通因子を求めること
「観測データ=独自因子+共通因子」と分解できることを前提とし、観測データを最もうまく表現する独自因子と共通因子を求めることを因子分析と呼ぶと、理解した。
共通因子、独自因子の定義は、次のように書かれている。
共通因子:観測データにおける変数の間の関連成分をまとめたもの
独自因子:他の変数と関係がなく、その変数のみを持っている成分
これをモデル化すると次のようになる。
x=Af+e
ここで
x:観測データを表す列ベクトル、
A:共通因子と観測データの関連性を表す行列(因子負荷量と呼ばれ、共通因子と分析に使用された変数との相関係数とかんがえる)、
f:共通因子を表す列ベクトル(因子得点)
e:独自因子を表す列ベクトル
【具体例を使用した練習】
1.データの準備
> seiseki<-matrix(c(89,90,67,46,50,57,70,80,85,90,80,90,35,40,50,40,60,50,45,55,78,85,45,55,60,55,65,80,75,85,90,85,88,92,95),7,5,byrow=TRUE) > colnames(seiseki)<-c("math","science","japanese","english","society") > rownames(seiseki)<-c("tanaka","sato","suzuki","honda","kawabata","yoshino","saito") > seiseki math science japanese english society tanaka 89 90 67 46 50 sato 57 70 80 85 90 suzuki 80 90 35 40 50 honda 40 60 50 45 55 kawabata 78 85 45 55 60 yoshino 55 65 80 75 85 saito 90 85 88 92 95 >
2.因子分析の実施
次に、因子分析の関数factanal(x,factors,rotation,scores)を使用して因子分析を実施する。
因子の数factorsは必ず指定しなければならない。
因子得点を求める方法はscoresで指定し、回帰方法とバートレット法の中から指定する。
下記では、因子の数を2、因子得点は求めないという設定で因子分析を実施する。
> (seiseki.fac<-factanal(seiseki,factors=2)) Call: factanal(x = seiseki, factors = 2) Uniquenesses: math science japanese english society 0.005 0.029 0.241 0.005 0.006 Loadings: Factor1 Factor2 math 0.997 science -0.188 0.967 japanese 0.871 english 0.997 society 0.989 -0.128 Factor1 Factor2 SS loadings 2.768 1.946 Proportion Var 0.554 0.389 Cumulative Var 0.554 0.943 Test of the hypothesis that 2 factors are sufficient. The chi square statistic is 1.73 on 1 degree of freedom. The p-value is 0.188 >
3.結果の整理
1つ1つ結果を見ていく。
まず、独立因子(Uniquenesses)。
Uniquenesses:
math science japanese english society
0.005 0.029 0.241 0.005 0.006
次に、因子負荷量。
Loadings:
Factor1 Factor2
math 0.997
science -0.188 0.967
japanese 0.871
english 0.997
society 0.989 -0.128
寄与度、寄与率、累積寄与率。
第2因子までで累積寄与率が94.3%となっているので、第2因子までで十分だろうと解釈できる。
Factor1 Factor2
SS loadings 2.768 1.946
Proportion Var 0.554 0.389
Cumulative Var 0.554 0.943
元データの分散とモデルによる分散との検定統計量。
「Test of the hypothesis that 2 factors are sufficient.」とのメッセージが出力されており、因子が2つで十分であることが示されている。
Test of the hypothesis that 2 factors are sufficient.
The chi square statistic is 1.73 on 1 degree of freedom.
The p-value is 0.188
4.因子の解釈
因子の解釈は、因子負荷量の値の大小で意味付けを行う。
まず、因子負荷量($loadings)の1列目(第1因子負荷量)、2列目(第2因子負荷量)をそれぞれグラフ化する。
・第1因子負荷量
・第2因子負荷量
この2つの結果を見ると、第1因子負荷量が大きいのは、japanese,engilish,societyの3つのかたまりであり、第2因子負荷量が大きいのは、math,scienceのかたまりである。この2つのかたまりを共通因子と考え、それぞれ「文系」共通因子、「理系」共通因子とする。
さて、ここではscoresを指定しなかったため、因子得点を求めていないが、次は因子得点を求めて因子負荷量と因子得点を1つの散布図で作成する。
まず、因子得点を求める。
> seiseki.fac2<-factanal(seiseki,factors=2,rotation="none",scores="regression") > biplot(seiseki.fac2$scores,seiseki.fac2$loading)