Explorando una matriz de diagrama de dispersión para muchas variables

10

Estoy analizando un conjunto de datos con muchos parámetros (por ejemplo, 50-200) y estoy interesado en analizar las relaciones entre las variables (por ejemplo, en términos de gráficos de dispersión de 2 variables o histogramas 2D). Sin embargo, para este número de parámetros, parece inviable dibujar una matriz de parcelas de 200x200 (a menos que lo imprima y lo cuelgue en una pared).

Por otro lado, hacer solo una matriz de correlación no proporciona toda la información sobre las relaciones de 2 variables.

¿Hay alguna manera (biblioteca o flujo de trabajo) para explorar las relaciones de 2 variables para muchas variables?

Estoy especialmente interesado en mostrar resultados a otros (quizás después de un preprocesamiento de datos). Por ejemplo, algo interactivo en JavaScript, donde puedo ver la matriz de diagrama de dispersión para los campos seleccionados de una matriz de correlación.

Por matriz de dispersión quiero decir algo así:

ingrese la descripción de la imagen aquí

(tomado del blog de pandasplotting ; disponible en Python / Pandas , R , D3.js , etc.).

Piotr Migdal
fuente
44
No dejaste claro lo que buscas. ¿Quieres ver la nube, cada punto de datos? ¿Quieres ver todas las facetas bivariadas a la vez ?
ttnphns
@ttnphns Quiero ver todos los puntos de datos O ellos en alguna forma agregada (por ejemplo, histogramas 2d). No necesito ver todas las cosas una vez (ya que tiene sentido para <15 variables, pero no 200). Y sí, soy consciente de que la pregunta es un poco abierta. Una versión cerrada es "¿Hay una biblioteca JS para mostrar diagramas de dispersión e histogramas cuando el mouse se desplaza sobre el píxel respectivo en una matriz de correlación? ¿O debería escribir una? :)" Escribí una más general, ya que tal vez hay algunos mejores flujos de trabajo para tratar el problema.
Piotr Migdal
Es posible organizar la matriz de diagramas de dispersión en forma de cubo de solapamiento, de modo que solo vea uno o varios gráficos a la vez y pueda cambiar entre ellos. Desafortunadamente, no conozco un programa o código específico para hacer cubos gráficos olap.
ttnphns

Respuestas:

7

Explorar las relaciones entre variables es bastante vago, pero supongo que dos de los objetivos más generales de examinar diagramas de dispersión como este son;

  • Identificar grupos latentes subyacentes (de variables o casos).
  • Identificar valores atípicos (en espacio univariado, bivariado o multivariado).

Ambos reducen los datos a resúmenes más manejables, pero tienen objetivos diferentes. Identifique los grupos latentes, uno generalmente reduce las dimensiones de los datos (por ejemplo, a través de PCA) y luego explora si las variables o los casos se agrupan en este espacio reducido. Ver, por ejemplo, Friendly (2002) o Cook et al. (1995)

La identificación de valores atípicos puede significar ajustar un modelo y trazar las desviaciones del modelo (por ejemplo, trazar los residuos de un modelo de regresión) o reducir los datos en sus componentes principales y solo resaltar los puntos que se desvían del modelo o del cuerpo principal de datos. Por ejemplo, los diagramas de caja en una o dos dimensiones generalmente solo muestran puntos individuales que están fuera de las bisagras (Wickham y Stryjewski, 2013). El trazado de residuos tiene la buena propiedad de que debería aplanar las parcelas (Tukey, 1977), por lo que cualquier evidencia de relaciones en la nube de puntos restante es "interesante". Esta pregunta en CV tiene algunas sugerencias excelentes para identificar valores atípicos multivariados.

Una forma común de explorar SPLOMS tan grandes es no trazar todos los puntos individuales, sino algún tipo de resumen simplificado y luego puntos que se desvíen en gran medida de este resumen, por ejemplo, puntos suspensivos de confianza, resúmenes escagnósticos (Wilkinson y Wills, 2008), bivariado diagramas de caja, diagramas de contorno. A continuación se muestra un ejemplo de trazado de elipses que definen la covarianza y la superposición de un loess más suave para describir la asociación lineal.

Elipses Corrgram
(fuente: statmethods.net )

De cualquier manera, una trama exitosa e interactiva con tantas variables probablemente necesitaría una clasificación inteligente (Wilkinson, 2005) y una forma simple de filtrar las variables (además de las capacidades de cepillado / enlace). Además, cualquier conjunto de datos realista debería tener la capacidad de transformar el eje (por ejemplo, trazar los datos en una escala logarítmica, transformar los datos tomando raíces, etc.). ¡Buena suerte y no te quedes con una sola trama!


Citas

Andy W
fuente
1
¡Gracias! Mi objetivo es explorar los datos antes de ejecutar PCA, ya que las variables pueden relacionarse de manera no lineal y requieren un cambio de escala (u otro procesamiento).
Piotr Migdal
El ejemplo de corrgram elipse + loess más suave aún debería ser pertinente en ese momento (o cambiar el covar. Elipse con algún otro polígono de medida como el diagrama de caja bivariado), y podría ayudar a identificar asociaciones no lineales. Una buena pregunta de seguimiento podría ser si es posible identificar asociaciones no lineales después de la reducción de datos a través de PCA (o algo así).
Andy W
1

Podría considerar el uso de la interfaz brillante del paquete pairD3 R, que proporciona una forma de interactuar con las matrices de gráficos de dispersión.

Un ejemplo con el conjunto de datos de iris:

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

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

Garth
fuente