Rを使ったマハラノビスの距離 [データサイエンス、統計モデル]
マハラノビス汎距離(Mahalanobis' Distance)は、色々な場面で登場します。
クラスタリングや主成分分析など。
また、異常値検知で有名なMT法(マハラノビス・田口システム)もそうです。
Rで実装するには簡単。
他のウェブサイトや解説を見ると、うっかり間違えるのが「分散共分散行列」を計算するところで、
v.dat <- var(dat)*(nreg-1)/nreg
ではなく
v.dat <- var(dat)
としてしまっている場合があるので、注意が必要です。
クラスタリングや主成分分析など。
また、異常値検知で有名な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)
としてしまっている場合があるので、注意が必要です。
コメント 0