成对的马氏距离
我需要在协变量的矩阵中,计算每对观测值之间R中的样本马氏距离。我需要一个有效的解决方案,即仅计算距离,并最好在C / RCpp / Fortran等中实现。我假设总体协方差矩阵不知道,并使用样本协方差矩阵。Ñ (ñ - 1 )/ 2 Σn×pñ×pn \times pn(n−1)/2ñ(ñ-1个)/2n(n-1)/2ΣΣ\Sigma 我对这个问题特别感兴趣,因为似乎没有用于计算R中成对的马氏距离的“共识”方法,即,dist既未在函数中也未在cluster::daisy函数中实现。mahalanobis没有程序员的额外工作,该函数不会计算成对距离。 这里已经问过R中的成对马氏距离,但那里的解决方案似乎不正确。 这是一种正确但效率极低的方法(因为计算了距离):n×nñ×ñn \times n set.seed(0) x0 <- MASS::mvrnorm(33,1:10,diag(c(seq(1,1/2,l=10)),10)) dM = as.dist(apply(x0, 1, function(i) mahalanobis(x0, i, cov = cov(x0)))) 这很容易用C语言编写自己的代码,但是我觉得这个基本的东西应该有一个预先存在的解决方案。有一个吗? 还有其他一些不足的解决方案:当仅需要唯一距离时,HDMD::pairwise.mahalanobis()计算距离。似乎很有希望,但是我不希望我的功能来自依赖于的程序包,这严重限制了其他人运行我的代码的能力。除非该实现是完美的,否则我宁愿自己编写。有人对此功能有经验吗?n (n − 1 )/ 2n×nñ×ñn \times nn(n−1)/2ñ(ñ-1个)/2n(n-1)/2compositions::MahalanobisDist()rgl