9.4. 主成分分析と因子分析について。
統計解析環境「R」での主成分と因子分析の著者流の方法を紹介します。
主成分分析(Principal Compornent Analysis:PCA)はデータの特徴を少ない次元に要約するもので、
データの特徴を把握するのに非常に有効な方法です。一方、因子分析(Factor Anarysis:FA)は特殊な影響因子を除いて共通する因子
を見付け出す方法と言えます。
PCA も FA も良く似た方法ですが、PCA はデータに内在する情報の多くを取り出すのに対し、
FA は余分な情報を除いて情報を縮約するものと言えるかも知れません。
心理学の分野では今も FA が多用されているようです。
9.4.1. 主成分分析の方法について。
医学と統計(13)投稿から。
「R」での主成分の方法を次の簡単な例題(表1)で示します。
表1 アンケート調査での評価データ(MS-Excel 入力データ)
表1 のデータが MS-Excel に入力されているとします。
表1 のデータは次により「R」に取り込み実行します。
(1) 表1のブルー部分を選択して「コピー」します。
(2) 次のコマンドを実行し、データを「R」に取り込みます。
(3) R console に次のコマンドを直接記載する。
....dat<- read.delim("clipboard", header=T, row.names=1)
以下は、「新しいスクリプト」を開いて記載すると便利でしょう。
mat<- as.matrix(dat)
r<- cor(mat) # 相関行列
result <- eigen(r)
result
nr <- 7 # サンプルサイズ
nc <- 3 # 変数の個数
eval <- result$values # 固有値
evec <- result$vectors # 固有ベクトル
contr <- round(eval/nc * 100, 2) # 寄与率(%)
round(contr, 3)
cum.contr <- cumsum(contr) # 累積寄与率(%)
round(cum.contr, 3)
loading <- round(sqrt(eval) * evec, 2) # 主成分負荷量
round(loading, 3)
fscore <- scale(dat)%*%evec*sqrt(nr/(nr-1)) # 主成分得点
round(fscore, 2)
上記の「R」は、主成分分析の計算手順を示すために、敢えて相関行列からの計算手順を示しました。
出力結果(主成分統計量)
相関行列 | 評価_A | 評価_B | 評価_C |
評価_A | 1.000 | 0.958 | 0.385 |
評価_B | 0.958 | 1.000 | 0.574 |
評価_C | 0.385 | 0.574 | 1.000 |
固有値
$values
[1] 2.31090113 0.67107457 0.01802429
固有ベクトル
$vectors | [,1] | [,2] | [,3] |
[1,] | -0.6077984 | -0.4545721 | 0.6511108 |
[2,] | -0.6462391 | -0.1933469 | -0.7382357 |
[3,] | -0.4614716 | 0.8694718 | 0.1762464 |
寄与率(%)
[1] 77.030 22.369 0.601
累積寄与率(%)
[1] 77.030 99.399 100.000
主成分負荷量 | [,1] | [,2] | [,3] |
[1,] | -0.924 | -0.372 | 0.087 |
[2,] | -0.982 | -0.158 | -0.099 |
[3,] | -0.702 | 0.712 | 0.024 |
「主成分得点(score)」 | [,1] | [,2] | [,3] |
P1 | 0.80 | -1.35 | -0.19 |
P2 | 1.73 | 0.20 | -0.06 |
P3 | -0.69 | -0.39 | 0.12 |
P4 | 1.29 | 1.41 | 0.01 |
P5 | -0.93 | -0.54 | 0.22 |
P6 | -2.99 | 0.63 | -0.16 |
P7 | 0.79 | 0.05 | 0.05 |
上記の主成分得点を MS-Excel で作成した散布図。
実際には、
下記の関数が主成分分析のために用意されています。
# princomp による方法。
dat.pc<- princomp(dat, cor=TRUE)
summary(dat.pc, loadings=TRUE)
round(dat.pc$scores, 2)
biplot(dat.pc)
出力結果(主成分散布図)
#prcomp による方法。
dat.pr<- prcomp(dat, scale=TRUE)
summary(dat.pr)
round(dat.pr$x, 2)
round(dat.pr$rotation, 3)
# Web online soft の利用
Easy PCA
「Easy PCA」の散布図は「prcomp」と同じです。
戻る 次へ 目次へ TOPへ