有人能举例说明如何计算马哈拉诺比斯距离(MD)的置信区间吗? 我正在使用R,这里是我使用的示例数据集。我很有兴趣计算这两个矩阵之间的MD。
#define matrix
mat1<-matrix(data=c(2,2,6,7,4,6,5,4,2,1,2,5,5,3,7,4,3,6,5,3),nrow=10)
mat2<-matrix(data=c(6,7,8,5,5,5,4,7,6,4),nrow=5)
在开始置信区间之前,我使用两种方式计算MD,手动方式和使用函数,但得到的结果不同。
#Working example Manual way
#center data
mat1.1<-scale(mat1,center=T,scale=F)
mat2.1<-scale(mat2,center=T,scale=F)
#cov matrix
mat1.2<-cov(mat1.1,method="pearson")
mat2.2<-cov(mat2.1,method="pearson")
n1<-nrow(mat1)
n2<-nrow(mat2)
n3<-n1+n2
#pooled matrix
mat3<-((n1/n3)*mat1.2) + ((n2/n3)*mat2.2)
#inverse pooled matrix
mat4<-solve(mat3)
#mean diff
mat5<-as.matrix((colMeans(mat1)-colMeans(mat2)))
#multiply
mat6<-t(mat5) %*% mat4
#multiply
sqrt(mat6 %*% mat5)
这是使用函数
的方法#Using Function
require(HDMD)
pairwise.mahalanobis(as.matrix(rbind(mat1,mat2)),as.factor(c(rep(1,10),rep(2,5))))
如果有人对此有任何见解,那将非常感激: - )