R Code for Mahalanobis Distance Using Populations and Samples
Mahalanobis Distance Population
ManDP <- function(xlist1,ylist1,xlist2,ylist2){
n1 <- length(xlist1)
n2 <- length(ylist1)
if (n1 != n2){return("Dimensionsof Group1 lists
not equal!")}
n3 <- length(xlist2)
n4 <- length(ylist2)
if (n3 != n4){return("Dimensionsof Group2 lists
not equal!")}
c1 <- cov(xlist1,ylist1)
c2 <- cov(xlist2,ylist2)
v1 <- var(xlist1)
v2 <- var(xlist2)
v3 <- var(ylist1)
v4 <- var(ylist2)
A <- matrix(c(v1,c1,c1,v3),2,2)
Aw<- (n1 - 1)/n1 * A
B <- matrix(c(v2,c2,c2,v4),2,2)
Bw <- (n3 - 1)/n3 * B
Covpool <- n1/(n1+n3)*Aw+ n3/(n1+n3)*Bw
m1 <- mean(xlist1) - mean(xlist2)
m2 <- mean(ylist1) - mean(ylist2)
X <- matrix(c(m1,m2),1)
S <- solve(Covpool)
D <- X%*%S%*%t(X)
return(sqrt(D))
}
Mahalanobis Distance Sample
ManDS <- function(xlist1,ylist1,xlist2,ylist2){
n1 <- length(xlist1)
n2 <- length(ylist1)
if (n1 != n2){return("Dimensionsof Group1 lists
not equal!")}
n3 <- length(xlist2)
n4 <- length(ylist2)
if (n3 != n4){return("Dimensionsof Group2 lists
not equal!")}
c1 <- cov(xlist1,ylist1)
c2 <- cov(xlist2,ylist2)
v1 <- var(xlist1)
v2 <- var(xlist2)
v3 <- var(ylist1)
v4 <- var(ylist2)
A <- matrix(c(v1,c1,c1,v3),2,2)
B <- matrix(c(v2,c2,c2,v4),2,2)
Covpool <- n1/(n1+n3)*A + n3/(n1+n3)*B
m1 <- mean(xlist1) - mean(xlist2)
m2 <- mean(ylist1) - mean(ylist2)
X <- matrix(c(m1,m2),1)
S <- solve(Covpool)
D <- X%*%S%*%t(X)
return(sqrt(D))
}

Mahalanobis Distance R

  • 1.
    R Code forMahalanobis Distance Using Populations and Samples Mahalanobis Distance Population ManDP <- function(xlist1,ylist1,xlist2,ylist2){ n1 <- length(xlist1) n2 <- length(ylist1) if (n1 != n2){return("Dimensionsof Group1 lists not equal!")} n3 <- length(xlist2) n4 <- length(ylist2) if (n3 != n4){return("Dimensionsof Group2 lists not equal!")} c1 <- cov(xlist1,ylist1) c2 <- cov(xlist2,ylist2) v1 <- var(xlist1) v2 <- var(xlist2) v3 <- var(ylist1) v4 <- var(ylist2) A <- matrix(c(v1,c1,c1,v3),2,2) Aw<- (n1 - 1)/n1 * A B <- matrix(c(v2,c2,c2,v4),2,2) Bw <- (n3 - 1)/n3 * B Covpool <- n1/(n1+n3)*Aw+ n3/(n1+n3)*Bw m1 <- mean(xlist1) - mean(xlist2) m2 <- mean(ylist1) - mean(ylist2) X <- matrix(c(m1,m2),1) S <- solve(Covpool) D <- X%*%S%*%t(X) return(sqrt(D)) } Mahalanobis Distance Sample ManDS <- function(xlist1,ylist1,xlist2,ylist2){ n1 <- length(xlist1) n2 <- length(ylist1) if (n1 != n2){return("Dimensionsof Group1 lists not equal!")} n3 <- length(xlist2) n4 <- length(ylist2) if (n3 != n4){return("Dimensionsof Group2 lists not equal!")} c1 <- cov(xlist1,ylist1) c2 <- cov(xlist2,ylist2) v1 <- var(xlist1) v2 <- var(xlist2) v3 <- var(ylist1) v4 <- var(ylist2) A <- matrix(c(v1,c1,c1,v3),2,2) B <- matrix(c(v2,c2,c2,v4),2,2) Covpool <- n1/(n1+n3)*A + n3/(n1+n3)*B m1 <- mean(xlist1) - mean(xlist2) m2 <- mean(ylist1) - mean(ylist2) X <- matrix(c(m1,m2),1) S <- solve(Covpool) D <- X%*%S%*%t(X) return(sqrt(D)) }