Explorer une matrice de nuage de points pour de nombreuses variables

10

J'analyse un ensemble de données avec de nombreux paramètres (disons, 50-200) et je suis intéressé à regarder les relations entre les variables (par exemple en termes de diagrammes de dispersion à 2 variables ou d'histogrammes 2d). Cependant, pour ce nombre de paramètres, il semble impossible de dessiner un tableau 200x200 de tracés (à moins que je ne l'imprime et le suspende au mur).

En revanche, faire uniquement une matrice de corrélation ne donne pas toutes les informations sur les relations à 2 variables.

Existe-t-il un moyen (bibliothèque ou workflow) d'explorer les relations à 2 variables pour de nombreuses variables?

Je suis particulièrement intéressé à montrer les résultats aux autres (peut-être après un prétraitement des données). Par exemple, quelque chose d'interactif en JavaScript, si je peux voir une matrice de nuage de points pour des champs sélectionnés à partir d'une matrice de corrélation.

Par matrice de nuage de points, je veux dire quelque chose comme ça:

entrez la description de l'image ici

(extrait du blog pandasplotting ; disponible en Python / Pandas , R , D3.js , etc.).

Piotr Migdal
la source
4
Vous n'avez pas précisé ce que vous recherchez. Voulez-vous voir le cloud, chaque point de données? Voulez-vous voir toutes les facettes bivariées à la fois ?
ttnphns
@ttnphns Je veux voir tous les points de données OU eux sous une forme agrégée (par exemple, des histogrammes 2D). Je n'ai pas besoin de voir que tout est une fois (car cela a du sens pour <15 variables, mais pas 200). Et oui, je sais que la question est un peu ouverte. Une version fermée est "Existe-t-il une bibliothèque JS pour afficher les diagrammes de dispersion et les histogrammes lorsque la souris survole le pixel respectif dans une matrice de corrélation? Ou devrais-je en écrire un? :)" J'en ai écrit un plus général, comme il y en a peut-être de meilleurs workflows pour résoudre le problème.
Piotr Migdal
Il est possible d'organiser la matrice des nuages ​​de points sous la forme d'un cube olap, afin que vous ne voyiez qu'un ou plusieurs graphiques à la fois et que vous puissiez basculer entre eux. Malheureusement, je ne connais pas de programme ou de code spécifique pour faire des cubes olap graphiques.
ttnphns

Réponses:

7

Explorer les relations entre les variables est assez vague, mais je suppose que deux des objectifs plus généraux de l'examen des nuages ​​de points sont les suivants;

  • Identifier les groupes latents sous-jacents (de variables ou de cas).
  • Identifier les valeurs aberrantes (dans un espace univarié, bivarié ou multivarié).

Les deux réduisent les données en résumés plus faciles à gérer, mais ont des objectifs différents. Identifiez les groupes latents, on réduit généralement les dimensions des données (par exemple via PCA), puis explorez si les variables ou les cas se regroupent dans cet espace réduit. Voir par exemple Friendly (2002) ou Cook et al. (1995).

L'identification des valeurs aberrantes peut signifier soit ajuster un modèle et tracer les écarts par rapport au modèle (par exemple, tracer les résidus d'un modèle de régression), soit réduire les données dans ses principales composantes et ne mettre en évidence que les points qui s'écartent du modèle ou du corps principal de données. Par exemple, les boîtes à moustaches en une ou deux dimensions ne montrent généralement que des points individuels qui sont en dehors des charnières (Wickham et Stryjewski, 2013). Le traçage des résidus a la belle propriété d'aplatir les tracés (Tukey, 1977), donc toute évidence de relations dans le nuage de points restant est "intéressante". Cette question sur le CV contient d'excellentes suggestions pour identifier les valeurs aberrantes multivariées.

Une façon courante d'explorer de tels SPLOMS est de ne pas tracer tous les points individuels, mais un type de résumé simplifié, puis peut-être des points qui s'écartent largement de ce résumé, par exemple les ellipses de confiance, les résumés scagnostiques (Wilkinson et Wills, 2008), bivariés boîtes à moustaches, courbes de niveau. Vous trouverez ci-dessous un exemple de tracé d'ellipses qui définissent la covariance et de superposition d'un lœss plus lisse pour décrire l'association linéaire.

Ellipses de Corrgram
(source: statmethods.net )

Quoi qu'il en soit, une intrigue réussie et interactive avec autant de variables nécessiterait probablement un tri intelligent (Wilkinson, 2005) et un moyen simple de filtrer les variables (en plus des capacités de brossage / liaison). De même, tout ensemble de données réaliste devrait avoir la capacité de transformer l'axe (par exemple, tracer les données à l'échelle logarithmique, transformer les données en prenant des racines, etc.). Bonne chance et ne vous en tenez pas à une seule intrigue!


Citations

Andy W
la source
1
Merci! Mon objectif est d'explorer les données avant d' exécuter PCA, car les variables peuvent être liées de manière non linéaire et nécessitent un redimensionnement (ou un autre traitement).
Piotr Migdal
L'exemple corrgram ellipse + loess smoother devrait alors être pertinent (ou changer la covar. Ellipse avec un autre polygone de mesure comme le boxplot bivarié), et pourrait aider à identifier les associations non linéaires. Une bonne question de suivi pourrait être de savoir s'il est possible d'identifier les associations non linéaires après la réduction des données via PCA (ou quelque chose comme ça).
Andy W
1

Vous pourriez envisager d'utiliser l'interface brillante du package pairsD3 R, qui fournit un moyen d'interagir avec les matrices de nuage de points.

Un exemple avec l'ensemble de données iris:

install.packages("pairsD3")
require("pairsD3")
shinypairs(iris)

Source: https://github.com/garthtarr/pairsD3

Garth
la source