10 votos

Exploración de una matriz de dispersión para muchas variables

Estoy analizando un conjunto de datos con muchos parámetros (digamos, entre 50 y 200) y estoy interesado en observar 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 un conjunto de gráficos de 200x200 (a menos que lo imprima y lo cuelgue en una pared).

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

¿Existe una forma (biblioteca o flujo de trabajo) de explorar relaciones de 2 variables para muchas variables?

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

Por matriz de dispersión me refiero a algo así:

enter image description here

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

4 votos

No has dejado claro lo que buscas. ¿Quieres ver la nube, cada punto de datos? ¿Quieres ver todas las facetas bivariadas a la vez ?

0 votos

@ttnphns Quiero ver todos los puntos de datos O ellos en alguna forma agregada (por ejemplo, histogramas 2d). No necesito ver todas las cosas son una vez (como 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 "¿Existe una biblioteca JS para mostrar gráficos de dispersión e histogramas cuando el ratón se cierne 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 hacer frente al problema.

0 votos

Es posible organizar la matriz de gráficos de dispersión en forma de cubo olap, de modo que sólo se vea uno o varios gráficos a la vez y se pueda cambiar entre ellos. Desafortunadamente, no conozco un programa o código específico para hacer cubos olap gráficos.

7voto

Judioo Puntos 625

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

  • Identificar grupos latentes subyacentes (de variables o casos).
  • Identificar los valores atípicos (en el espacio univariante, bivariante o multivariante).

Ambos reducen los datos en resúmenes más manejables, pero tienen objetivos diferentes. Para identificar grupos latentes se suelen reducir las dimensiones de los datos (por ejemplo, mediante PCA) y luego se explora si las variables o los casos se agrupan en este espacio reducido. Véase, por ejemplo, Friendly (2002) o Cook et al. (1995).

La identificación de los valores atípicos puede significar el ajuste de un modelo y el trazado de las desviaciones del modelo (por ejemplo, el trazado de los residuos de un modelo de regresión) o la reducción de los datos en sus componentes principales y sólo resaltar los puntos que se desvían del modelo o del cuerpo principal de datos. Por ejemplo, los gráficos de caja en una o dos dimensiones suelen mostrar sólo los puntos individuales que están fuera de las bisagras (Wickham y Stryjewski, 2013). El trazado de los residuos tiene la agradable propiedad de que debería aplanar los gráficos (Tukey, 1977), por lo que cualquier evidencia de relaciones en la nube de puntos restante es "interesante". Esta pregunta sobre el CV tiene algunas sugerencias excelentes para identificar los valores atípicos multivariantes.

Una forma habitual de explorar estos grandes SPLOMS es no trazar todo de los puntos individuales, sino algún tipo de resumen simplificado y, a continuación, tal vez los puntos que se desvían en gran medida de este resumen, por ejemplo, elipses de confianza, resúmenes escagnéticos (Wilkinson & Wills, 2008), gráficos de caja bivariados, gráficos de contorno. A continuación se muestra un ejemplo de trazado de elipses que definen la covarianza y la superposición de un suavizador de loess para describir la asociación lineal.

Corrgram Ellipses
(fuente: <a href="http://www.statmethods.net/advgraphs/images/corrgram2.png" rel="nofollow noreferrer">statmethods.net </a>)

En cualquier caso, un gráfico interactivo realmente exitoso con tantas variables probablemente necesitaría una clasificación inteligente (Wilkinson, 2005) y una forma sencilla de filtrar las variables (además de capacidades de cepillado/enlace). También cualquier conjunto de datos realista necesitaría tener la capacidad de transformar los ejes (por ejemplo, trazar los datos en escala logarítmica, transformar los datos sacando raíces, etc.). Buena suerte, y no te quedes con un solo gráfico.


Citas

1 votos

Gracias. Mi objetivo es explorar los datos antes de Ejecuto el PCA, ya que las variables pueden estar relacionadas de forma no lineal y requerir un reescalado (u otro procesamiento).

0 votos

El ejemplo de la elipse de corrgrama + el suavizador de loess debería seguir siendo pertinente (o cambiar la elipse de covar. con alguna otra medida-polígono como el boxplot bivariante), y podría ayudar a identificar las asociaciones no lineales. Una buena pregunta de seguimiento podría ser si es posible identificar las asociaciones no lineales después de la reducción de datos a través de PCA (o algo así).

1voto

Jon Mitchell Puntos 1391

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

Un ejemplo con el conjunto de datos del iris:

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

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X