SSブログ

Rを使ったマハラノビスの距離 [データサイエンス、統計モデル]

マハラノビス汎距離(Mahalanobis' Distance)は、色々な場面で登場します。
クラスタリングや主成分分析など。
また、異常値検知で有名なMT法(マハラノビス・田口システム)もそうです。

Rで実装するには簡単。


library(MASS)

dat <- round(mvrnorm(n=100,mu=c(50,50),Sigma=matrix(c(100,50,50,100),2,2)))

#平均ベクトル
m.dat<-colMeans(dat)

#分散共分散行列
nreg <- nrow(dat)
v.dat <- var(dat)*(nreg-1)/nreg

#マハラノビス距離の計算
MD <- mahalanobis(dat,center=m.dat,cov=v.dat)

#関数 mahalanobis はマハラノビス距離の二乗となっているため平方根を取る
sqrt(MD)


他のウェブサイトや解説を見ると、うっかり間違えるのが「分散共分散行列」を計算するところで、

v.dat <- var(dat)*(nreg-1)/nreg
ではなく
v.dat <- var(dat)
としてしまっている場合があるので、注意が必要です。

nice!(0)  コメント(0) 
共通テーマ:学問

nice! 0

コメント 0