Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
質的変数の相関分析と因子分析
Tokyo.R #32
2013.7.20
自己紹介
2
twitter @argyle320
勤務先 IT分野のリサーチ会社
データ分析歴 約18年
分析対象 金融、テキスト、Webアンケート
R歴 2年
アウトライン
• 質的変数とは
• 相関係数
– 一般的な相関係数・・・ピアソン、スピアマン
– ポリコリック相関係数
• 因子分析
– ポリコリック相関を用いた因子分析
3
質的変数
4
変数の種類
5
大分類
小分
類
意味 例 相関
量的変数
(連続変数)
比例
尺度
原点(0)の決め方が定まっていて,
間隔にも比率にも意味があるもの
身長,体重,金額
○
間隔
尺度
目盛が等間隔になっている(等間
隔であると仮定されている)もの
温度
○
質的変数
(カテゴリカ
ル・データ)
順序
尺度
順序には意味があるがその間隔に
は意味がない数値を割り当てたも
の
満足度(n段階評価)
年代
○
名義
尺度
順序のないカテゴリが割り当てられ
た変数。
同じか違うかしか意味がない
血液型
性別
職業
×
※ 2カテゴリーの名義尺度は順序尺度として扱う事もできる △
相関
6
相関係数とは
• 2変量について相関の度合いを示した係数
• -1~1の間の値を取り、2変量間の線形関係が強いほど大
(相関係数が負の場合は負の相関)
– ピアソン: 連続量に対する相関
– スピアマン: 順位相関 (順位に変換してのピアソン相関)
7
とても強い相関 0.7以上
強い相関 0.4~0.7
弱い相関 0.2~0.4
相関がない 0.2以下
相関係数と関係の目安
ピアソンとスピアマンの違い
8
7
xy 
方式 相関係数
ピアソン 0.755
スピアマン 1.0
ケンドール 1.0
数値的線形性を見たいのであればピアソン
順序関係を見たいのであればスピアマン
スピアマン(順位相関)は順位に変換したピアソンの相関係数
質的変数(順序尺度)間の相関
• 例:総合満足度と価格満足度の相関(5段階評価)
• ピアソン、スピアマンでは相関係数が低くなり、
利用できる場面が少なくなる
– 経験的には、大きくても0.4程度という場合が多い
• 質的変数用の相関係数: ポリコリック相関係数
© IDC Visit us at IDC.com and follow us on
Twitter: @IDC
9
ポリコリック相関係数
10
ポリコリック相関係数の原理
11
x
y 1 2 3 4
4 0 0 1 2
3 1 16 14 10
2 11 22 13 0
1 6 4 0 0
連続値としての散布図
(相関係数=0.67)
カテゴリ値分割後の集計表
相関係数
ピアソン 0.57
スピアマン 0.55
ケンドール 0.50
ポリコリック
polycor(x,y)
0.68
 【仮定】本来、連続分布している要因が順序尺度に変
換されている
 順序尺度の評価から背景の連続分布における相関係
数を最尤推定で算出
 正規分布を仮定
 算出値が元の連続分布での相関係数に近い
 実用的には、他の相関係数より高めの値が出る
総合
満足度
価格
満足度
ポリコリック・ポリシリアル・テトラコリック
12
ポリコリック相関 順序尺度 ×順序尺度
※ 2カテゴリの順序尺度も含む
ポリシリアル相関 順序尺度 ×連続量
テトラコリック相関 2×2の順序尺度 (名義尺度)
※ 別に知らなくても不自由しない
ポリシリアル テトラコリック
2値変数連続変数
2
値
変
数
カ
テ
ゴ
リ
変
数
Rで使えるポリコリック相関
13
ラ
イ
ブ
ラ
リ
関
数
相
関
変
数
デ
ー
タ
フ
レ
ー
ム
集
計
表
polycor
polychor ポリコリック ordered かfactor No Yes
hetcor
混在
(自動判定)
ordered
数値
Yes No
polyserial ポリシリアル
ordered かfactor
数値
No Yes
psych
polychoric ポリコリック 整数 Yes No
tetrachoric ポリコリック 整数 Yes Yes
polyserial ポリシリアル 整数 Yes No
biserial ポリシリアル 整数 Yes No
サンプルデータ: bfi
• psychパッケージ付属のデータセット
• 性格の自己診断テスト
• 25個の性格の項目(int) + 年齢、学歴、性別
ここでは最初の10列だけ使います
• 2,800サンプル
14
A1 A2 A3 A4 A5 C1 C2 C3 C4 C5 E1 E2 E3 E4 E5 N1 N2 N3 N4 N5 O1 O2 O3 O4 O5
gen
der
educ
atio
n
age
6161
7
2 4 3 4 4 2 3 3 4 4 3 3 3 4 4 3 4 2 2 3 3 6 3 4 3 1 NA 16
6161
8
2 4 5 2 5 5 4 4 3 4 1 1 6 4 3 3 3 3 5 5 4 2 4 3 3 2 NA 18
6162
0
5 4 5 4 4 4 5 4 2 5 2 4 4 4 5 4 5 4 2 3 4 2 5 5 2 2 NA 17
6162
1
4 4 6 5 5 4 4 3 5 5 5 3 4 4 4 2 5 2 4 1 3 3 4 3 5 2 NA 17
6162
2
2 3 3 4 5 4 4 5 3 2 2 2 5 4 5 2 3 4 4 3 3 3 4 3 3 1 NA 17
6162
3
6 6 5 6 5 6 6 6 1 3 2 1 6 5 6 3 5 2 2 3 4 3 5 6 1 2 3 21
polychoricの使い方(ローデータから算出)
15
> data(bfi)
> bfi <- na.omit(bfi[1:10])
> polychoric(bfi)
|..............................................................................
..| 100%
Call: polychoric(x = bfi)
Polychoric correlations
A1 A2 A3 A4 A5 C1 C2 C3 C4 C5
A1 1.00
A2 -0.41 1.00
A3 -0.32 0.56 1.00
A4 -0.17 0.40 0.41 1.00
A5 -0.23 0.45 0.57 0.36 1.00
C1 -0.01 0.12 0.13 0.12 0.17 1.00
C2 0.01 0.16 0.15 0.27 0.14 0.49 1.00
C3 -0.02 0.22 0.15 0.17 0.15 0.35 0.41 1.00
C4 0.15 -0.19 -0.17 -0.20 -0.16 -0.41 -0.44 -0.39 1.00
C5 0.06 -0.16 -0.19 -0.29 -0.20 -0.30 -0.34 -0.39 0.53 1.00
⇒ データフレームから相関行列を算出
polychoricとピアソンを比較
16
ポリコリック ピアソン
A1 1 1.0000
A2 -0.41019 -0.3402
A3 -0.32388 -0.2630
A4 -0.1734 -0.1435
A5 -0.22954 -0.18606
C1 -0.00565 0.01995
C2 0.007411 0.01354
C3 -0.02351 -0.00944
C4 0.145109 0.09995
C5 0.055174 0.02414
絶対値が大きくなっている
polychorの使い方(集計表から算出)
17
> data(bfi)
> bfi <- na.omit(bfi[1:10])
> for (i in ncol(bfi)) bfi[[i]] <- factor(bfi[[i]])
> (tbl <- table(bfi[[1]],bfi[[2]]))
1 2 3 4 5 6
1 11 9 7 80 299 463
2 8 26 41 167 355 182
3 3 20 42 115 136 59
4 7 23 35 107 96 53
5 6 28 17 50 64 44
6 12 14 5 7 16 25
> polychor(tbl)
[1] -0.4101894
> polychor(bfi[[1]], bfi[[2]])
[1] -0.4101894
⇒ tableから算出
⇒ 変数のベクトルから算出
hetcorの使い方
18
> data(bfi)
> bfi <- na.omit(bfi[1:4])
> for (i in 1:2) bfi[[i]] <- ordered(bfi[[i]])
> hetcor(bfi)
Two-Step Estimates
Correlations/Type of Correlation:
A1 A2 A3 A4
A1 1 Polychoric Polyserial Polyserial
A2 -0.4098 1 Polyserial Polyserial
A3 -0.2897 0.5043 1 Pearson
A4 -0.1616 0.3453 0.3622 1
⇒ 変数により手法が変わる
⇒ 1,2が順序尺度,3,4は整数
注意点
• 算出方法は2種類 (ML= T or F)
– ML ・・・最尤法。精度はいいが計算が遅い
– 2-Step ・・・近似だが計算は速い。通常はこちら
• 順序尺度が細かい(8超)とあまり意味がない
• polychor関数でML=T、std.err=Tとすると、変数を標
準化した上での分割しきい値が算出される
19
polychoric関数からのメッセージ
You have more than 8 categories for your items,
polychoric is probably not needed
因子分析
20
因子分析とは
• 複数変数について、共通する変数を探索する分析手法
• 相関関係がベース
• 例) 各科目の点数に因子分析をかけると
理系変数と文系変数が現れる
• 因子分析の特徴は軸を「回転」させて単純構造を導くこと
斜行回転(promax)を使うのがおすすめ
21
英語
国語
社会
理科
数学
理系
文系
因子変数
0.68
0.72
Rで因子分析
• 標準の関数は factanal
• 今回はfa ・・・polychoricと同じpsychパッケージ
• faもfactanalも相関行列から因子分析可能
• faの方が高機能
22
ピアソンの相関係数による因子分析
23
> bfi.pearson <- cor(bfi)
> factanal(covmat=bfi.pearson, factors=3, rotation="promax")
Loadings:
Factor1 Factor2 Factor3
A1 -0.407
A2 0.666
A3 0.770
A4 0.460 -0.102
A5 0.618
C1 0.683 0.111
C2 0.728
C3 0.486
C4 -0.469 0.232
C5 1.005
Factor1 Factor2 Factor3
SS loadings 1.80 1.466 1.108
Proportion Var 0.18 0.147 0.111
Cumulative Var 0.18 0.327 0.437
Factor Correlations:
Factor1 Factor2 Factor3
Factor1 1.000 -0.269 0.544
Factor2 -0.269 1.000 -0.299
Factor3 0.544 -0.299 1.000
⇒ 因子間の相関係数(斜行回転)
polychoricによる因子分析
24
> bfi.polycor <- polychoric(bfi)
> fa(bfi.polycor$rho, nfactors=3, rotate="promax")
MR2 MR3 MR1 h2 u2
A1 -0.47 0.09 -0.04 0.20 0.801
A2 0.73 0.03 0.07 0.52 0.483
A3 0.82 -0.03 0.02 0.65 0.350
A4 0.49 0.05 -0.12 0.32 0.684
A5 0.66 0.00 -0.02 0.45 0.551
C1 -0.03 0.73 0.12 0.44 0.560
C2 0.00 0.78 0.11 0.52 0.476
C3 0.04 0.49 -0.10 0.33 0.670
C4 -0.01 -0.50 0.25 0.46 0.540
C5 0.04 0.00 1.01 1.00 0.005
MR2 MR3 MR1
SS loadings 2.09 1.65 1.14
Proportion Var 0.21 0.17 0.11
Cumulative Var 0.21 0.37 0.49
Proportion Explained 0.43 0.34 0.23
Cumulative Proportion 0.43 0.77 1.00
With factor correlations of
MR2 MR3 MR1
MR2 1.00 0.33 -0.31
MR3 0.33 1.00 -0.58
MR1 -0.31 -0.58 1.00
⇒ ピアソンより高めの相関係数
⇒ ピアソンより高めの因子負荷量
まとめ
• 順序尺度の相関 ⇒ ポリコリック相関
– 順序尺度の背後の連続分布を最尤法で推定
– ピアソンより値が高めに出る
• 順序尺度の因子分析 にも利用できる
25
「カテゴリカルデータ解析」
共立出版
「因子分析入門」
東京図書
参考文献
ご清聴ありがとうございました
26

More Related Content

質的変数の相関・因子分析