3.138.174.45@hermano.com.br:~$ ls ./estudos/medidas_de_distancia/mahalanobis
.. 00-leia.txt mahalanobis.txt
3.138.174.45@hermano.com.br:~$ cat ./estudos/medidas_de_distancia/mahalanobis/00-leia.txt
# mv mahalanobis.txt mahalanobis.pl
# perl mahalanobis.pl
Valores de entrada para distancia de Mahalanobis:
a = ([2,2],[2,5],[6,5],[7,3],[4,7],[6,4],[5,3],[4,6],[2,5],[1,3])
b = ([6,5],[7,4],[8,7],[5,6],[5,4])
Subtraindo o valor de cada coluna com sua media aritmetica:
a -> a2 = ([-1.9,-2.3],[-1.9,0.7],[2.1,0.7],[3.1,-1.3],[0.1,2.7],[2.1,-0.3],[1.1,-1.3],[0.1,1.7],[-1.9,0.7],[-2.9,-1.3])
b -> b2 = ([-0.2,-0.2],[0.8,-1.2],[1.8,1.8],[-1.2,0.8],[-1.2,-1.2])
Calculando a matriz de covariancia:
a2 -> ac = ([3.89,0.13],[0.13,2.21])
b2 -> bc = ([1.36,0.56],[0.56,1.36])
Juncao (pooled) das matrizes de acordo com seus pesos:
ac + bc -> mp = ([3.04666666666667,0.273333333333333],[0.273333333333333,1.92666666666667])
Calcular matriz inversa:
mp -> mpi = ([0.332459046567274,-0.04716547027425],[-0.04716547027425,0.525722436959323])
Calcular diferenca da media aritmetica entre as matrizes:
a <-> b -> mmd = ([-2.3],[-0.9])
Transposta da matriz de diferencas de medias:
mmd -> mmdt = ([-2.3,-0.9])
Multiplicar matriz transposta da diferencas de medias com a matriz inversa (pooled):
mmdt * mpi -> mm1 = ([-0.722206883857905,-0.364669611632616])
Multiplicar matriz do resultado anterior com a matriz de diferenca de medias:
mm1 * mmd -> mm2 = ([1.98927848334254])
E com a raiz quadrada do resultado anterior:
Mahalanobis entre a e b = 1.41041783998308
3.138.174.45@hermano.com.br:~$ clear_