MTシステムにおけるマハラノビス距離をわかりすく解説

R
この記事は約8分で読めます。

マハラノビス距離とは、複数の変数間に相関がある場合に相関関係を考慮した上で注目しているデータが中心点からどのくらい離れているかを表す距離です。

本記事では、MTシステムにおけるマハラノビス距離について、入門者でも理解しやすいように解説します。

スポンサーリンク

MTシステムにおけるマハラノビス距離

MTシステムとは、マハラノビス距離を利用した品質工学の1つで、田口玄一博士によって考案されました。

MTシステムが誕生したのは、田口博士が「家庭の不幸度合い」を比較する方法はないかと考えたことがきっかけとされています。

下記はトルストイの「アンナ・カレーニナ」の冒頭の一文です。

幸福な家庭はすべて互いに似通ったものであり、不幸な家庭はどこも不幸のおもむきが異なっているものである

アンナ・カレーニナ  トルストイ (著), 木村 浩 (翻訳)  (新潮文庫)

「不幸のおもむきが異なっている」という文章から、不幸の要因には「貧困」、「病弱」、「家族の仲たがい」など様々なものがあると解釈できます。

よって、不幸な家庭同士を比較して不幸度合いを測ろうとしても、不幸の要因が異なるため、単純に比較することはできません。

そこで、田口博士は幸福な家庭の幸福度は大体均質ということに着目し、「幸福な家庭」が不幸度合いを測る基準になるのではないかと考えたわけです。

品質工学では、基準となるデータ群を単位空間といいます。

田口博士は、不幸度合いを測る「ものさし」にマハラノビス距離が使えると考えました。

マハラノビス距離の概念は、複数の要因から成り立っている物事を分類するための境界を距離という「ものさし」で定量的に定めるというものです。

下図は、不幸度合いと測る「ものさし」のイメージです。

引用元: 試して究める!品質工学 MTシステム解析法入門(鈴木真人 著)
スポンサーリンク

マハラノビス距離の恩恵

物事を比較する際、比較対象の特徴が1つであれば比較は単純です。

しかし、物事はたいてい複数の特徴から成り立っています。

例えば、人の特徴を表すものとして、「年齢」、「身長」、「体重」など様々は項目があります。

複数の特徴から成り立つ物事の比較に役立つのがマハラノビス距離です。

複数の特徴から成る単位空間を距離という1つの情報に変換することで、比較を単純にします。

比較の対象は、「単位空間の中心点」と「注目しているデータ点」です。

ここで、学校のテストのデータを使ってマハラノビス距離を解説します。

下の散布図は、500人の数学と理科の点数の相関関係を示してします。

2つ変数間の相関係数は0.8です。

理系の生徒のデータであれば、数学と理科の点数に高い正の相関関係があることは不思議ではありません。

どちらのテストも平均点は60点です。

A君は、数学、理科ともに70点であり、B君は数学は70点、理科は50点でした。

A君とB君のどちらが基準となる集団に近いかを考えます。

説明を簡単にするためにデータを正規化します。

正規化したデータにおいて、中心点は(0,0)となり、A君は(1,1)、B君は(1,-1)の座標に位置します。

では、A君とB君のどちらが単位空間の中心点(原点)に近いかを測るために、ユークリッド距離とマハラノビス距離を計算します。

ユークリッド距離

距離には、さまざまな種類のものがありますが、最も馴染み深い距離がユークリッド距離です。

これは、ピタゴラスの定理によって計算されます。

2次元の空間におけるユークリッド距離は、下記の式によって計算できます。

後述するマハラノビス距離と整合性を持たせるため、ルート内をkで割ります。

kは次元数なので、kに2を代入するとA、Bのユークリッド距離はどちらも1になります。

散布図にユークリッド距離の等高線を重ね合わせると、AとBは同じ等高線上に位置しています。

このことから、中心点からのユークリッド距離について、2人に差はないということになります。

基準となる集団において、数学の点数が高ければ理科の点数も高い傾向があるにもかかわらず、B君はその傾向に当てはまっていません。

それにもかかわらず、 中心点からの距離がA君とB君で同じということに違和感を感じませんか?

マハラノビス距離

マハラノビス距離は、複数の変数間に相関がある場合に相関関係を考慮した上で注目しているデータが中心点からどのくらい離れているかを表す距離です。

2次元空間におけるマハラノビス距離は、下記の式で計算できます。

kは次元数、rは2変数の相関係数を表します。

r=0の場合、ユークリッド距離と等しくなります。

数学と理科の点数の相関係数r=0.8を式に代入してマハラノビス距離を計算すると、Aは0.75、Bは2.2となります。

マハラノビス距離の計算結果から、A君の方が集団の中心点に近いことを示しています。

散布図にマハラノビス距離の等高線を重ね合わせてみると、A君は中心点に近く、B君は離れた距離に位置することが読み取れます。

マハラノビス距離を使えば、注目しているデータに対し、相関関係を考慮して集団への近さを測ることができます。

スポンサーリンク

Rコード

本記事に掲載している図を作成するRコードを紹介します。

任意の母相関係数を持つ架空データの作成

#母相関係数0.8の2変量データを作る
set.seed(2019)
rho <- 0.8 #相関係数
n <- 500 #サンプル数
x <- rnorm(n,mean=45,sd=10)
e1 <- rnorm(n,mean=45,sd=10)
e2 <- rnorm(n,mean=45,sd=10)
y1 <- as.integer(sqrt(rho)*x+sqrt(1-rho)*e1)
y2 <- as.integer(sqrt(rho)*x+sqrt(1-rho)*e2)

#データフレームに変換
dat <- data.frame(y1,y2)

#相関行列
cor(dat)

散布図に等高線を重ねる

#正規化したデータの散布図
plot(dat.s,xlab="数学",ylab="理科",main="正規化したデータ")
#axis(side=1,at=-4:4,pos=0,lwd=1,labels = F)
#axis(side=2,at=-4:4,pos=0,lwd=1,labels = F)
axis(side=1,at=seq(-4,4,1),tck=1.0,lty="dotted",lwd=0.5,labels = seq(-4,4,1))
axis(side=2,at=seq(-4,4,1),tck=1.0,lty="dotted",lwd=0.5,labels = seq(-4,4,1))
points(0,0,pch=19,col=1)#原点
points(1,1,pch=19,col=2)#A君
points(1,-1,pch=19,col=3)#B君

#散布図にユークリッド距離の等高線を重ねる
x <- seq(-4,4,0.1)
y <- x
z.E <- outer(x,y,function(x,y,r=0){sqrt((x^2-2*r*x*y+y^2)/2*(1-r^2))})#ユークリッド距離(r=0)
contour(x,y,z.E,zlim=c(0,3),nlevels = 5,add=T) #等高線を重ねる

#散布図にマハラノビス距離の等高線を重ねる
plot(dat.s,xlab="数学",ylab="理科",main="マハラノビス距離")
axis(side=1,at=seq(-4,4,1),tck=1.0,lty="dotted",lwd=0.5,labels = seq(-4,4,1))
axis(side=2,at=seq(-4,4,1),tck=1.0,lty="dotted",lwd=0.5,labels = seq(-4,4,1))
points(0,0,pch=19,col=1)
points(1,1,pch=19,col=2)
points(1,-1,pch=19,col=3)
z.D <- outer(x,y,function(x,y,r=0.8){sqrt((x^2-2*r*x*y+y^2)/2*(1-r^2))})#マハラノビス距離
contour(x,y,z.D,zlim=c(0,1),nlevels = 5,labels="", add=T)

マハラノビス距離の算出

Rにはマハラノビス距離の関数mahalanobisが用意されています。

#平均ベクトル(二次元の重心点)
m.dat <- colMeans(dat)

#分散共分散行列
v.dat <- var(dat)

#マハラノビス距離の計算
D <- mahalanobis(dat,m.dat,v.dat)
スポンサーリンク

参考文献

コメント

タイトルとURLをコピーしました