パッケージ StatMatch ( http://cran.r-project.org/web/packages/StatMatch/StatMatch.pdf ) で mahalanobis.dist 関数を見つけましたが、私が望んでいることを正確に実行していません。data.y の各観測値から data.x の各観測値までのマハラノビス距離を計算しているようです。
data.y の 1 つの観測値から data.x のすべての観測値までのマハラノビス距離を計算したいと思います。それが理にかなっている場合、基本的に、1つのポイントからポイントの「クラウド」までのマハラノビス距離を計算します。観測が別の観測グループの一部である確率のアイデアを得る
この人 ( http://people.revoledu.com/kardi/tutorial/Similarity/MahalanobisDistance.html ) はこれを行っているようで、R で彼のプロセスを再現しようとしましたが、下部に到達すると失敗します方程式の:
mahaldist = sqrt((inversepooledcov %*% t(meandiffmatrix)) %*% meandiffmatrix)
私が使用しているすべてのコードは次のとおりです。
a = rbind(c(2,2), c(2,5), c(6,5),c(7,3))
colnames(a) = c('x', 'y')
b = rbind(c(6,5),c(3,4))
colnames(b) = c('x', 'y')
acov = cov(a)
bcov = cov(b)
meandiff1 = mean(a[,1]) - mean(b[,1])
meandiff2 = mean(a[,2]) - mean(b[,2])
meandiffmatrix = rbind(c(meandiff1,meandiff2))
totaldata = dim(a)[1] + dim(b)[1]
pooledcov = (dim(a)[1]/totaldata * acov) + (dim(b)[1]/totaldata * bcov)
inversepooledcov = solve(pooledcov)
mahaldist = sqrt((inversepooledcov %*% t(meandiffmatrix)) %*% meandiffmatrix)