Comprendre les calculs de corrélation de distance

15

Pour autant que je sache, la corrélation de distance est un moyen robuste et universel de vérifier s'il existe une relation entre deux variables numériques. Par exemple, si nous avons un ensemble de paires de nombres:

(x1, y1)
(x2, y2)
...
(xn, yn)

nous pouvons utiliser la corrélation de distance pour vérifier s'il existe une relation (pas nécessairement linéaire) entre les deux variables ( xet y). De plus, xet ypeuvent être des vecteurs de différentes dimensions.

Il est relativement facile de calculer la corrélation de distance. Nous utilisons d'abord Xje pour calculer la matrice de distance. Ensuite, nous calculons la matrice de distance en utilisant yi . Les deux matrices de distance auront les mêmes dimensions car le nombre de xi et yi est le même (car elles viennent par paires).

Maintenant, nous avons beaucoup de distances qui peuvent être jumelées. Par exemple, l'élément (2,3)de la première matrice de distance est apparié avec l'élément (2,3)de la seconde matrice de distance. Donc, nous avons un ensemble de paires de distances et nous pouvons l'utiliser pour calculer la corrélation (corrélation entre les distances).

Si deux types de distances sont corrélés, cela signifie que les X proches signifient généralement les Y proches. Par exemple, si est proche de x 13, cela signifie que y 7 est susceptible d'être proche de y 13 . Nous pouvons donc conclure que Xs et Ys sont dépendants.x7x13y7y13

Cela semble raisonnable, mais il y a deux aspects que je ne comprends pas .

Premièrement , pour calculer la corrélation de distance, nous n'utilisons pas directement les deux matrices de distance. Nous leur appliquons une procédure de double centrage (de sorte que la somme de tous les éléments d'une ligne (ou colonne) soit égale à zéro). Je ne comprends pas pourquoi nous devons le faire. Quelle est la logique (ou l'intuition) derrière cette étape?

Deuxièmement , dans les matrices de distance d'origine, nous avons des zéros sur la diagonale. Donc, si nous calculons les corrélations entre les distances, nous aurons une corrélation statistiquement significative simplement parce que de nombreux zéros de la première matrice sont appariés avec les zéros correspondants dans la deuxième matrice. Comment ce problème est-il résolu?

romain
la source

Réponses:

16

La covariance / corrélation de distance (= covariance / corrélation brownienne) est calculée comme suit:

  1. Compute matrice de distances euclidiennes entre les Ncas de variables , et un autre de même matrice par la variable Y . L'une ou l'autre des deux caractéristiques quantitatives, X ou Y , peut être multivariée, pas seulement univariée.XOuiXOui
  2. Effectuez un double centrage de chaque matrice. Découvrez comment le double centrage est généralement effectué. Cependant, dans notre cas, lorsque vous le faites, ne rectifiez pas les distances au départ et ne divisez pas par à la fin. Les moyennes des lignes, des colonnes et la moyenne globale des éléments deviennent nulles.-2
  3. Multipliez les deux matrices résultantes par élément et calculez la somme; ou de manière équivalente, déballer les matrices en deux vecteurs de colonne et calculer leur produit croisé additionné.
  4. Moyenne, en divisant par le nombre d'éléments, N^2.
  5. Prenez racine carrée. Le résultat est la covariance de la distance entre et Y .XOui
  6. Les variances de distance sont les covariances de distance de , de Y avec soi-même, vous les calculez également, points 3-4-5.XOui
  7. La corrélation de distance est obtenue à partir des trois nombres de la même manière que la corrélation de Pearson est obtenue à partir de la covariance habituelle et de la paire de variances: divisez la covariance par la racine carrée du produit de deux variances.

La covariance (et corrélation) de distance n'est pas la covariance (ou corrélation) entre les distances elles-mêmes. C'est la covariance (corrélation) entre les produits scalaires spéciaux ( produits scalaires ) dont sont constituées les matrices "double centrées".

Dans l'espace euclidien, un produit scalaire est la similitude liée de manière univoque avec la distance correspondante. Si vous avez deux points (vecteurs), vous pouvez exprimer leur proximité en tant que produit scalaire au lieu de leur distance sans perdre d'informations.

Cependant, pour calculer un produit scalaire, vous devez vous référer au point d'origine de l'espace (les vecteurs viennent de l'origine). Généralement, on pourrait placer l'origine où il veut, mais souvent et commodément c'est de la placer au milieu géométrique du nuage des points, la moyenne. Parce que la moyenne appartient au même espace que celui couvert par le nuage, la dimensionnalité ne gonflerait pas.

Maintenant, le double centrage habituel de la matrice de distance (entre les points d'un nuage) est l'opération de conversion des distances en produits scalaires tout en plaçant l'origine à ce milieu géométrique. Ce faisant, le "réseau" de distances est remplacé de manière équivalente par le "burst" de vecteurs, de longueurs spécifiques et d'angles par paires, depuis l'origine:

entrez la description de l'image ici

[La constellation sur mon exemple d'image est plane, ce qui montre que la "variable", disons que c'était , l'ayant générée était bidimensionnelle. Bien sûr, lorsque X est une variable à colonne unique, tous les points se trouvent sur une seule ligne.]XX

Un peu formellement sur l'opération de double centrage. Soit des n points x p dimensionsdonnées (dans le cas univarié, ). Soit D la matrice des distances euclidiennes entre les points. Que C soit X avec ses colonnes centrées. Alors S = double centre  D 2 est égal à C C ' , les produits scalaires entre les rangées après que le nuage de points a été centré. La propriété principale du double centrage est que 1Xp=1Dn x nnCXS=double-centered D2CC , et cette somme est égalela somme inversée de l'arrêtéléments -diagonal de S .12nD2=trace(S)=trace(CC)S

Retour à la corrélation de distance. Que faisons-nous lorsque nous calculons la covariance de distance? Nous avons converti les deux réseaux de distances en leurs paquets de vecteurs correspondants. Et puis nous calculons la covariation (et par la suite la corrélation) entre les valeurs correspondantes des deux paquets: chaque valeur de produit scalaire (ancienne valeur de distance) d'une configuration est multipliée par sa correspondante de l'autre configuration. Cela peut être vu comme (comme cela a été dit au point 3) le calcul de la covariance habituelle entre deux variables, après vectorisation des deux matrices dans ces "variables".

Ainsi, nous covarions les deux ensembles de similitudes (les produits scalaires, qui sont les distances converties). Toute covariance est le produit croisé des moments: vous devez calculer ces moments, les écarts par rapport à la moyenne, d'abord, - et le double centrage était ce calcul. Voici la réponse à votre question: une covariance doit être basée sur des moments mais les distances ne sont pas des moments.

La prise supplémentaire de racine carrée après (point 5) semble logique parce que dans notre cas, le moment était déjà lui-même une sorte de covariance (un produit scalaire et une covariance sont structurellement compeers ) et il est donc venu que vous avez une sorte de covariances multipliées deux fois. Par conséquent, pour redescendre au niveau des valeurs des données d'origine (et pour pouvoir calculer la valeur de corrélation), il faut ensuite prendre la racine.

(0,2)12

ttnphns
la source
par «produit croisé additionné» à l'étape 3, voulez-vous simplement dire un produit scalaire normal?
kram1032
1
@ kram1032, oui scp et produit scalaire sont des synonymes stats.stackexchange.com/a/22520/3277
ttnphns
8

Je pense que vos deux questions sont profondément liées. Alors que les diagonales d'origine dans la matrice de distance sont 0, ce qui est utilisé pour la covariance (qui détermine le numérateur de la corrélation) est les valeurs doublement centrées des distances - ce qui, pour un vecteur avec une variation, signifie que les diagonales seront négatif.

Passons donc en revue un cas indépendant simple et voyons si cela nous donne une intuition quant à la raison pour laquelle la corrélation est 0 lorsque les deux variables sont indépendantes.

(X,Y)=[(0,0),(0,1),(1,0),(1,1)]

XY

a=[0011001111001100]

b=[0101101001011010]

A

A=[.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5]

B=[.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5]

.5.5=.25.5.5=.25.5.5=.250

0

0ab0.25

(Comme le souligne ttnphns, cela ne suffit pas en soi, car la puissance est également importante. Nous pouvons faire le même double centrage, mais si nous les ajoutons en quadrature, nous perdrons la propriété if et only if.)

Matthew Graves
la source
1
Cela vous dérangerait-il si j'éditais des matrices dans cette réponse?
shadowtalker
@ssdecontrol merci pour l'offre! Je suis passé par là et l'ai fait moi-même, mais n'hésitez pas à apporter d'autres modifications de formatage.
Matthew Graves
1
Je ne comprends pas très bien ce que vous entendez par "célibataire" dans ce cas (est-ce ce que le Mattew a dit ou autre?) Ce qui est vraiment mystérieux / important pour moi (comme je l'ai exprimé à la fin de ma réponse) c'est pourquoi ( théoriquement) lorsque nous effectuons la double centrage sans mise au carré des distances d' abord nous faciliter la dCov d'avoir ses propriétés uniques et utiles.
ttnphns
1
@ttnphns: Par simple centrage, j'entendais la soustraction de la moyenne générale de chaque valeur de distance. En tout cas, je conviens que la covariance de distance est mystérieuse.
amibe dit Réintégrer Monica
1
@amoeba je souhaite que les auteurs écrivent un suivi avec une sorte d'explication intuitive et une implémentation efficace pour plusieurs paires de variables. Il se rapproche d'une décennie depuis que leur papier original et la covariance de la distance ne sont encore pour la plupart qu'un détournement quixotique pour les étudiants diplômés. la seule fois où je l'ai jamais vue utilisée dans la pratique était dans une fonctionnalité alors non implémentée dans Stan pour diagnostiquer les chaînes MC
shadowtalker