6番目の資料

●判別分析(discriminant analysis)
(説明変数が量的変数、目的変数が質的変数の場合)
・線形判別関数による判別
Z = a0 + a1 x1 + a2 x2 +  + a p x p で Z>0、Z=0、Z<0 で判定する
・マハラノビスの汎距離(Maharanobis' generalized distance)による判別
D2=({(データ)-(平均)}/標準偏差)2 の汎距離が小さい方に判定する
[1]線形識別関数による判別
表1
Z = - x1 - x 2 + 8
を判別関数式とすれば、 x1 , x 2 の値を
代入し、Z<0 ならば適性有り、Z>0 ならば適性無しと
判定できる。学生 Q は Z<0 で適性有りと判定して
良いことになる。この判別関数式を求める方法を示す。
今、第1群のサンプル i の判別得点を wi (1) とすると、
wi (1) = a1 x1i (1) + a 2 x2 i (1) + a 0
・・・(2)
同様に第2群のサンプル i の判別得点 wi ( 2 ) は、
wi ( 2 ) = a1 x1i ( 2 ) + a 2 x 2 i ( 2 ) + a 0 ・・・(3)
無
無
無
無
有
有
有
有
有
?
4
2
2
4
4
5
3
6
5
5
1
2
3
5
4
8
6
7
4
6
第2群
B
C
D
E
F
G
H
I
J
Q
図にプロットすると図1のようになる。ここで、例えば
第1群
Z = a1 x1 + a2 x 2 + a0 ・・・(1)を判別関数式とする。 学生 適性 協調性(x1) 積極性(x2)
無
3
2
重み係数 a1 , a 2 , a 0 をいかにして求めるのかが問題となる。 A
10
8
群 判別得点データ
1 w1(1),w2(1),・・,w n1(1)
2 w1(2),w2(2),・・,w n2(2)
サンプル数 合計
n1
T1
n2
T2
全体
n1+n2
T
T1 = å wi (1) , T2 = å wi ( 2) , T = T1 + T2
級間変動:
å (w
i (1)
積極 6
性 4
2
適性有
0
適性無
・・・(4)
W1 = T1 / n1 , W2 = T2 / n2 , W = T /(n1 + n2 )
全体の変動: ST =
平均
W1
W2
W
0
・・・(5)
- W ) + å ( wi ( 2 ) - W )
2
S B = n1 (W1 - W ) 2 + n 2 (W2 - W ) 2
2
2
4
6
協調性
8
10
図1
・・・(6)
・・・(7)
相関比:
h 2 = S B / ST
・・(8)
(量的データ間では相関係数を使うが、一方が質的データの場合相関比を考える)
相関比η 2 を最大にするように係数 a1 , a 2 , a 0 を決めるために、η 2 を a1 , a 2 , a 0 で偏微分して0とおき、
それらを連立方程式として a1 , a 2 , a 0 を求めればよい。ここでは途中の手順を省略して、結局、次の
手順で a1 , a 2 , a 0 を求めることができる。
(この手順は例えば、菅民郎著「多変量解析の実践」上(現代
数学社)に詳細に述べられている。
)
1.群毎にサンプル数、各変数の平均、分散を求める。
平均
分散
共分散
分散、共分散は、偏差平方和、
偏差積和を(n-1)で割る
例:X1m(2)において
サンプル数 変数1 変数2 変数1 変数2
群 1 n1
X1m(1) X2m(1)
V11(1) V22(1)
V12(1)=V21(1)
1は変数、mは平均、
群 2 n2
V12(2)=V21(2)
(2)は群2を表す
X1m(2)
X2m(2)
V11(2)
V22(2)
56
2. V11={(n1-1)V11(1)+(n2-1)V11(2)}/(n1+n2-2)
分散・共分散について、
V22={(n1-1)V22(1)+(n2-1)V22(2)}/(n1+n2-2) ・・(9)
2つの群の加重平均で求めた
V12=V21={(n1-1)V12(1)+(n2-1)V12(2)}/(n1+n2-2)
プール後の分散・共分散
を求める
3.a1V11+a2V12=X1m(1)-X1m(2)
a1V21+a2V22=X2m(1)-X2m(2) を解いて a1,a2 を求める。定数項 a0 は平均値から求める。
a1 =
X
X
- X 1m( 2)
- X 2 m ( 2)
2 m (1)
1m (1)
V
V
11
21
V
V
V
V
12
22
,
a
2
12
22
V
V
=
11
21
X -X
X -X
V V
V V
1m (1)
1m ( 2 )
2 m (1)
2m ( 2)
11
12
21
22
,
a
0
= - a1
X
1m (1)
+
X
1m ( 2 )
2
- a2
X
2 m (1)
+
X
2m ( 2)
2
・・・(10)
ただし、X1m(1)は変数 x1 の第1群での平均、X1m(2)は変数 x1 の第2群での平均
X2m(1)は変数 x2 の第1群での平均、X2m(2)は変数 x2 の第2群での平均
学生 Q のデータを(1)式に代入し、符号が第1群、第2群いずれのデータと同じであるかを調べる。
[2]マハラノビスの汎距離に基づく判別関数
1次元 x1 の場合の統計量
x の平均
Xm
x の分散σ2
2次元変数 x1, x2 の場合の統計量(3次元以上でも同様)
x1, x2 の平均 X1m, X2m
(11)
x1, x2 の分散・共分散行列 T
マハラノビスの汎距離
とすると
(x - X m )
s
汎距離:
2
D
2
=
(12)
2
D
2
æV 11
T =ç
ç
èV 21
V
V
ö
÷
÷
22 ø
12
(13)
ö
-1 æ
= (( x1 - X 1m ), ( x2 - X 2 m ))T çç x2 X 1m ÷÷
è x2 X 2 m ø
・・(14)
手順
両群の各変数毎の重心(平均値)が X1m(1),X2m(1),X1m(2),X2m(2)となる。
そこで、学生 Q のデータ x1i,x2i を(14)式に入れて、両群の重心までのマハラノビスの距離を求める。
æ x - X 1m (1) ö
1群重心までの汎距離: Di (1) 2 = ( x1i - X 1m (1) , x2i - X 2 m(1) )T -1 ç 1i
÷
çx - X
÷
2 m (1) ø
è 2i
æ x - X 1m ( 2 ) ö
2群重心までの汎距離: Di ( 2 ) 2 = ( x1i - X 1m( 2) , x2i - X 2 m ( 2 ) )T -1 ç 1i
÷
çx - X
÷
2 m ( 2) ø
è 2i
・・・(15)
Di(1)2<Di(2)2 ならば Q は1群に判別、逆ならば2群に判別する。
æ X 1m (1) - X 1m ( 2 ) ö
÷ とおけば、標準正規分布関数におい
çX
÷
è 2 m (1) - X 2 m( 2) ø
誤判定の確率は、各群の平均値間の距離を d = ç
て確率変数 u が、 u >
d T T -1d
となる確率値となる。
2
[3]判別分析の精度
判別的中率=100×(一致サンプル数)/(分析対象全サンプル)
90~100%・・・・分析の精度が非常に良い
75~90% ・・・・分析の精度がやや良い
50~75% ・・・・分析の精度が良くない
57
(例題)
表1
学生 適性 協調性(x1) 積極性(x2)
群1
群2
協調性 積極性 協調性 積極性
A
B
C
D
E
F
G
H
I
J
Q
無
無
無
無
無
有
有
有
有
有
?
3
4
2
2
4
4
5
3
6
5
5
2
1
2
3
5
4
8
6
7
4
6
平均
分散
共分散
(x1)
(x2)
(x1)
(x2)
3
2
4
4
4
1
5
8
2
2
3
6
2
3
6
7
4
5
5
4
X1(1)
X2(1)
X1(2)
X2(2)
3.0
2.6
4.6
5.8
V11(1) V22(1) V11(2) V22(2)
1
2.3
1.3
3.2
V12(1)
データ数
線形識別
関数を用いる
0.25
n1
5
V12(2)
0.65
n2
5
加重後の分散、共分散
V11={(n1-1)V11(1)+(n2-1)V11(2)}/(n1+n2-2)=
V22={(n1-1)V22(1)+(n2-1)V22(2)}/(n1+n2-2)=
V12={(n1-1)V12(1)+(n2-1)V12(2)/(n1+n2-2)=
1.15
2.75
0.45
D=V11V22-V12*V12 =
a1=((X1m(1)-X1m(2))V22-(X2m(1)-X2m(2))V12)/D =
a2=((X2m(1)-X2m(2))V11-(X1m(1)-X1m(2))V21)/D =
a0= - (a1(X1m(1)+X1m(2))+a2(X2m(1)+X2m(2))/2 =
2.96
-1
-1
8
学生Qの判定は
Z = a1x1+a2x2+a0 = -3 <0 で適正有り (2群に属する)
エクセルのソルバーを用いて線形識別関数を求める
主成分分析と同様に、評価関数(ここでは相関比(8)式)を最大化させるために、
(2)式から(8)式までの一連の計算をエクセルの表形式で作成し、傾き係数 a1, a2 に
初期値を適当に入れておいて、制約条件 a12+a22=1 の下で相関比が最大になる
ときの a1, a2 を求める。定数項 a0 は最後に、判別関数式 Z = a1 x1 + a 2 x 2 + a 0 に
各群の平均値の平均の値(x1=(X1m(1)+X2m(1))/2, x2=(X1m(2)+X2m(2))/2)を
入れた時に Z=0 となるように決める。
58
加重後の分散共分散行列を使ってマハラノビスの汎距離を比較する
分散共分散行列
T=
1.15
0.45
逆行列
-1
T =
0.45
2.75
0.929
-0.152
-0.152
0.389
調べる変数(縦ベクトル)
Q = x1 = 5
x2
6
偏差ベクトル
x1= x1i-X1(1)
x2i-X2(1)
x2= x1i-X1(2)
x2i-X2(2)
=
2.0
3.4
=
0.4
0.2
t
-1
x1 T =(
t -1
x2 T =(
1.3412 1.0169 )
0.3412 0.0169 )
2
t -1 2
t
2次形式
D1 =x1 T
x1=
6.140
2次形式
D2 =x2 T x2 =
0.140
2
-1
2
D2 < D1 より2群に属する(適正有り)
[注]逆行列の求め方
1.関数 minverse( )で行列範囲を指定
2.リターンを押すと、右のように数字が1つ表示される。
3.そのセルを含む行列表示となるべき領域を、マウスで選択・ドラッグする。
4.カーソルで数式バーをクリックした後、CTRLキー+SHIFTキー+ENTERキーを押す。
分散共分散行列を各群毎に求めてマハラノビスの汎距離を比較する
Q=
調べる変数(縦ベクトル)
x1 =
5
x2
6
【群1について】
分散共分散行列
T1=
1
0.25
偏差ベクトル
x1= x1i-X1(1)
=
x1i-X1(2)
=
x2i-X2(2)
0.856
-0.174
7.759
-0.174
0.348
x2t T2-1=(
0.4
0.2
1.6760 1.2961 )
D12=x1t T1-1 x1=
2次形式
逆行列
T2-1=
0.65
3.2
-0.112
0.447
x1t T1-1=(
3.4
【群2について】
分散共分散行列
T2=
1.3
0.65
1.028
-0.112
2.0
x2i-X2(1)
x2=
逆行列
T1-1=
0.25
2.3
0.3077 0.0000 )
D22=x2t T2-1 x2 =
2次形式
【両群を比較して】
D22 < D12 より2群に属する(適正有り)
59
0.123
R による判別分析例
(R の全体機能は http://cse.naro.affrc.go.jp/takezawa/r-tips/r/00.html 参照)
表1のサンプルデータから線形識別関数を求めて、(5,6),(4,4)のデータがどちらの群に属するかを
他のライブラリについては、下記参照
求める。また、元のサンプルデータを再度、判別させてみる。
> library(MASS) # ライブラリを読み込む
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/08.html
> x1 <- c(3,4,2,2,4,4,5,3,6,5) # 変数 x1 の値
> x2 <- c(2,1,2,3,5,4,8,6,7,4) # 変数 x2 の値
【演習 23】(判別分析)
> x <- cbind(x1,x2) # x1、x2 を列でまとめる
> h <- rep(c("1","2"),each=5) # 判定結果の変数 h
一覧表に得点と合否情報があるとき、他の
>x
# x のデータ
2 名 U,V の合否はいずれになるか。
x1 x2
[1,] 3 2
http://www.coins.tsukuba.ac.jp/~fukui/da
[2,] 4 1
/discriminant.xls に演習表がある
[3,] 2 2
[4,] 2 3
表1
[5,] 4 5
(線形判別分析)
科目1
科目2
[6,] 4 4
linear discriminant analysis
受験者 (x1)
(x 2) 合否
[7,] 5 8
の意味
[8,] 3 6
A
127
88
合
[9,] 6 7
B
129
79
合
[10,] 5 4
C
119
88
合
>h
# h のデータ
D
109
83
合
[1] "1" "1" "1" "1" "1" "2" "2" "2" "2" "2"
E
117
70
合
> y <- lda(x,h)
# 線形判別関数で判別する
F
128
92
合
>y
# その結果を表示する
G
113
82
合
Call:
H
122
90
合
lda(x, grouping = h)
I
129
81
合
Prior probabilities of groups:
1 2
0.5 0.5
各群の平均
Group means:
x1
x2
1 3.0 2.6
2 4.6 5.8
Coefficients of linear discriminants:
LD1
x1 0.4564355
線形識別関数の係数
x2 0.4564355
> xx <- rbind(c(5,6),c(4,4)) # 新たな変数の組を xx
> xx
row bind で、上下に並べる
[,1] [,2]
[1,]
5
6
[2,]
4
4
> d <- predict(y,xx) # xx を判定した結果を d とする
> d$class
# 判定結果
[1] 2 1
# (5,6)は 2 群へ、(4,4)は 1 群へ
Levels: 1 2
> d2 <- predict(y,x) # 因みにサンプルデータを判定
に
> d2$class
# その結果
[1] 1 1 1 1 2 1 2 2 2 2
Levels: 1 2
水準(種類)は 1,2 の2通り
>
60
J
K
L
M
134
138
150
135
53
62
53
87
否
否
否
否
N
145
63
否
O
150
79
否
P
Q
R
U
147
132
142
140
69
78
70
68
否
否
否
?
MASS パッケージ:
Modern Applied Statistics with S の略
http://cran.r-project.org/web/packages/M
ASS/MASS.pdf 参照