J'ai une matrice de corrélations par paires entre n éléments. Maintenant, je veux trouver un sous-ensemble de k éléments avec la moindre corrélation. Il y a donc deux questions:
- Quelle est la mesure appropriée pour la corrélation au sein de ce groupe?
- Comment trouver le groupe le moins corrélé?
Ce problème me semble être une sorte d'analyse factorielle inverse et je suis à peu près sûr qu'il existe une solution simple.
Je pense que ce problème est en fait égal au problème de suppression (nk) des nœuds d'un graphique complet afin que les nœuds restants soient connectés avec des poids de bord minimum. Qu'est-ce que tu penses?
Merci pour vos suggestions à l'avance!
correlation
ranking
Chris
la source
la source
Réponses:
[Avertissement: cette réponse est apparue avant que le PO ne décide de reformuler la question, de sorte qu'elle peut avoir perdu sa pertinence. À l'origine, la question portait sur
How to rank items according to their pairwise correlations
]Parce que la matrice de corrélations par paires n'est pas un tableau unidimensionnel, il n'est pas très clair à quoi peut ressembler le "classement". Surtout tant que vous n'avez pas élaboré votre idée en détail, comme il semble. Mais vous avez mentionné que l'ACP vous convenait, et cela m'a immédiatement fait penser à la racine Cholesky comme une alternative potentiellement encore plus appropriée.
La racine Cholesky est comme une matrice de chargements laissée par PCA, seulement elle est triangulaire. Je vais vous expliquer les deux avec un exemple.
La matrice de chargement A de l'ACP est la matrice des corrélations entre les variables et les principales composantes. Nous pouvons le dire parce que les sommes des carrés des rangées sont toutes 1 (la diagonale de R) tandis que la somme matricielle des carrés est la variance globale (trace de R). Les éléments de B de la racine de Cholesky sont également des corrélations, car cette matrice a également ces deux propriétés. Les colonnes de B ne sont pas des composants principaux de A, bien qu'elles soient en quelque sorte des "composants".
A et B peuvent tous deux restaurer R et donc tous deux peuvent remplacer R, comme sa représentation. B est triangulaire, ce qui montre clairement qu'il capture les corrélations par paires de R séquentiellement ou hiérarchiquement. La composante de Cholesky est en
I
corrélation avec toutes les variables et est l'image linéaire de la première d'entre ellesV1
. Le composantII
ne partage plusV1
mais est en corrélation avec les trois derniers ... Enfin, ilIV
n'est corrélé qu'avec le dernierV4
,. Je pensais que ce genre de "classement" est peut - être ce que vous recherchez .Le problème avec la décomposition de Cholesky, cependant, est que - contrairement à PCA - cela dépend de l'ordre des éléments dans la matrice R. Eh bien, vous pouvez trier les éléments par ordre décroissant ou croissant de la somme des éléments au carré (ou, si vous le souhaitez) , somme des éléments absolus, ou par ordre de coefficient de corrélation multiple - voir ci-dessous). Cet ordre reflète le montant de la corrélation brute d'un article.
De la dernière matrice B, nous voyons que
V2
, l'élément le plus grossièrement corrélé, met en gage toutes ses corrélations dansI
. L'élément grossièrement corrélé suivant met enV1
gage toute sa corrélation, sauf celui avecV2
, dansII
; etc.Une autre décision pourrait être de calculer le coefficient de corrélation multiple pour chaque élément et de classer en fonction de son ampleur. La corrélation multiple entre un élément et tous les autres éléments augmente à mesure que l'élément est plus en corrélation avec chacun d'eux, mais ils sont moins en corrélation les uns avec les autres. Les coefficients de corrélation multiples au carré forment la diagonale de la matrice dite de covariance d'image qui est , où est la matrice diagonale des inverses des diagonales de .SR−1S−2S+R S R−1
la source
Voici ma solution au problème. Je calcule toutes les combinaisons possibles de k éléments n et calcule leurs dépendances mutuelles en transformant le problème en un graphique-théorique: Quel est le graphique complet contenant tous les k nœuds avec la plus petite somme de bord (dépendances)? Voici un script python utilisant la bibliothèque networkx et une sortie possible. Veuillez vous excuser pour toute ambiguïté dans ma question!
Code:
Exemple de sortie:
Graphique d'entrée:
Graphique de la solution:
Pour un exemple de jouet, k = 4, n = 6: Graphique d'entrée:
Graphique de la solution:
Meilleur,
Christian
la source
Trouvez de éléments avec la corrélation la moins paire: étant donné qu'une corrélation de explique de la relation entre deux séries, il est plus logique de minimiser la somme des carrés de corrélations pour vos éléments cibles . Voici ma solution simple.k n 0.6 0.36 k
Réécrivez votre matrice de corrélations en une matrice de carrés de corrélations. Additionnez les carrés de chaque colonne. Éliminez la colonne et la ligne correspondante avec la plus grande somme. Vous avez maintenant une matrice . Répétez jusqu'à ce que vous ayez une matrice . Vous pouvez également conserver les colonnes et les lignes correspondantes avec les plus petites sommes. En comparant les méthodes, j'ai trouvé dans une matrice avec et que seuls deux éléments avec des sommes proches étaient différemment conservés et éliminés.n×n (n−1)×(n−1) k×k k n=43 k=20
la source