1

谁能给出一个关于如何计算马氏距离(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))))

如果有人对此有任何见解,将不胜感激:-)

4

0 回答 0