More Related Content
Similar to Mahalanobis Distance R
Similar to Mahalanobis Distance R (20)
More from Jeremy Lane (6)
Mahalanobis Distance R
- 1. 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))
}