トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

FactorAnalysis

(探索的)因子分析

  • 観測される変数xの背後にある(観測できない)潜在変数f=因子を見いだす手法。
    • 知能をテストの得点によって推定(測定)する。
    • 観測される変数の値=因子負荷量*因子得点+誤差
    • x=l*f+e
    • l 因子負荷量  f 因子得点  e 誤差
library(MASS)
data(Boston)

Q1 Bostonに含まれるのはどのような変数?Q2 地域の特性によって不動産価格が決定されると考える。Bostonに含まれる変数は大まかにどのような特性にまとめることができそうか?(例 成長性、工業化、、、、、)

names(Boston) #データセットに含まれる変数一覧
(res3<-factanal(Boston[,-c(4,14)],factors=3,rotation="none",scores="regression")) #Bostonの4番目chas、14番目の変数medv以外の変数を使って 因子数3として因子分析実行  結果をres3にいれる 回転無し
実行結果
Call:
factanal(x = Boston[, -c(4, 14)], factors = 3, scores = "regression",     rotation = "none")

Uniquenesses:
crim      zn   indus     nox      rm     age     dis     rad     tax ptratio   black   lstat 
0.608   0.497   0.268   0.226   0.148   0.301   0.170   0.112   0.058   0.706   0.777   0.352 

Loadings:
       Factor1 Factor2 Factor3
crim     0.610   0.115         
zn      -0.493   0.443   0.251 
indus    0.815  -0.235  -0.115 
nox      0.800  -0.240  -0.275 
rm      -0.399   0.582  -0.594 
age      0.669  -0.350  -0.358 
dis     -0.707   0.336   0.465 
rad      0.885   0.316         
tax      0.936   0.239         
ptratio  0.478           0.256 
black   -0.467                 
lstat    0.674  -0.398   0.188 

              Factor1 Factor2 Factor3
SS loadings      5.587   1.219   0.971
Proportion Var   0.466   0.102   0.081
Cumulative Var   0.466   0.567   0.648

Test of the hypothesis that 3 factors are sufficient.
The chi square statistic is 357.03 on 33 degrees of freedom.
The p-value is 4.98e-56 

1-2因子について因子得点と因子負荷量をプロットしてみる  数字=サンプル番号  赤矢印 変数名とその因子負荷量
biplot(res3$scores[,1:2],res3$loadings[,1:2])

Q3 各因子の意味を解釈してみる。

因子のVarimax回転  →座標変換して解釈しやすくする

(res3v<-factanal(Boston[,-c(4,14)],factors=3,rotation="varimax",scores="regression"))
結果
Call:
factanal(x = Boston[, -c(4, 14)], factors = 3, scores = "regression",     rotation = "varimax")

Uniquenesses:
crim      zn   indus     nox      rm     age     dis     rad     tax ptratio   black   lstat 
0.608   0.497   0.268   0.226   0.148   0.301   0.170   0.112   0.058   0.706   0.777   0.352 

Loadings:
       Factor1 Factor2 Factor3
crim     0.213   0.571   0.142 
zn      -0.666  -0.102  -0.220 
indus    0.636   0.504   0.272 
nox      0.735   0.458   0.154 
rm      -0.143  -0.111  -0.905 
age      0.779   0.275   0.128 
dis     -0.861  -0.292         
rad      0.254   0.904         
tax      0.307   0.907   0.162 
ptratio  0.104   0.418   0.330 
black   -0.208  -0.417         
lstat    0.453   0.357   0.561 

              Factor1 Factor2 Factor3
SS loadings      3.222   3.088   1.466
Proportion Var   0.269   0.257   0.122
Cumulative Var   0.269   0.526   0.648

Test of the hypothesis that 3 factors are sufficient.
The chi square statistic is 357.03 on 33 degrees of freedom.
The p-value is 4.98e-56 
因子間の相関  →相関0にしたければrotation="varimax" を指定
cor(res3v$scores)
          Factor1    Factor2    Factor3
Factor1 1.00000000 0.05438976 0.03569716
Factor2 0.05438976 1.00000000 0.01891174
Factor3 0.03569716 0.01891174 1.00000000
#プロットしてみる
biplot(res3v$scores[,1:2],res3r$loadings[,1:2])

#回転無し ありを並べてプロット

par(mfrow=c(1,2))
biplot(res3$scores[,1:2],res3$loadings[,1:2])
biplot(res3v$scores[,1:2],res3v$loadings[,1:2])

Q4 因子数を増加して実行してみる→検定の結果よりは事前の仮説を優先する方が望ましい

因子を使って回帰分析

names(res3v)
res3v$scores  #これが因子得点  (3因子)
#これをもとのデータBostonと合成してBoston2に
Boston2<-data.frame(Boston,res3v$scores)
edit(Boston2)
#あとはいつものように分析できる
summary(lm(medv~  Factor1+Factor2+Factor3,Boston2))
#生の変数で回帰

 summary(lm(medv~ crim+zn+indus+nox+rm+age+dis+rad+tax+ptratio+black+lstat,Boston2))

Q 生の変数の方の結果を解釈する。問題はないか?
Q 二つのモデルのR2を比較。異なる理由を考える。
#主成分分析
(resprn<-princomp(Boston[,-c(4,14)],scores=T))
loadings(resprn)
  • 次回までの課題 swissを使って因子分析→回帰分析してみる(Fertilityを説明)
    • 必ずしもすべての変数を使う必要はない