7 votos

Matrices de covarianza

Me preguntaba si alguien conoce alguna forma realmente productiva de graficar/mapear/trazar/visualizar datos de matrices de covarianza. Actualmente estoy usando levelplot() en R . Es muy básico y cumple su función, pero buscamos algo mejor. También utilizamos R Shiny para que haya más interacción entre el usuario y los datos, pero eso también parece bastante básico. ¡Por favor, tenga en cuenta mi matriz es 2600x2600, así que muy grande!

Si tienes alguna idea creativa o conoces algún paquete que me pueda interesar.

2 votos

Véase ?heatmap . Por ejemplo, heatmap(cor(x)) .

0 votos

¡Gracias @AdamO! I

6voto

Eero Puntos 1612

Mira el paquete corrplot para R . Dispone de varias opciones para visualizar matrices de correlación.

0 votos

Gracias por vuestras rápidas respuestas, chicos. He mirado el paquete corrplot. Por desgracia, tengo el mismo problema que con el paquete corrgram. Mis datos son demasiado grandes para sacar realmente provecho de esos gráficos. Realmente queremos algo interactivo. Tal vez cuando usted tiene este gráfico de correlación intensa, puede utilizar el ratón para seleccionar donde usted quiere como, zoom en. ¿Conoces algo así?

5voto

user11867 Puntos 21

No estoy seguro acerca de cualquier paquete de R que hacen esto, pero mi enfoque favorito (y me parece un enfoque mucho más informativo) para la visualización de las matrices de covarianza están utilizando redes de correlación. Básicamente, recortar la matriz de covarianza utilizando el algoritmo Glasso (voy a explicar por qué más adelante), a continuación, utilizar un algoritmo de fuerza dirigida producir una red para la correlaciones . El tamaño de los nodos son las varianzas. Ej:

correlation network

ampliar imagen

Recuerde que se trata de una red, por lo que los ejes no significan nada; se trata de vecindades y distancias. Las líneas rojas son correlaciones altas, y las azules, correlaciones negativas. Podemos detectar grupos de variables y correlaciones de segundo y tercer orden mejor que con un enfoque matricial.

Recorto la matriz de covarianza, mediante el uso de un término de penalización (véase el algoritmo Glasso) por dos razones: reducir la varianza de estimación, y reducir el número de líneas que mejora la visualización.

Para su información, lo anterior se generó utilizando este Python script .

0 votos

Por favor, reproduzca el script Python ;-), ¡gracias!

0 votos

Eso está muy bien. Me encanta el enfoque. ¿Lo has hecho alguna vez con datos mucho más grandes? Mi matriz es 2600x2600, por lo que podría ser muy ocupado. se puede hacer cosas como el zoom en él y tal? Además, ¿se puede hacer esto en R? Tendré que investigarlo.

0 votos

Nunca para algo tan grande. (Creo que lo máximo fueron unos 60-80). Funcionaría, pero no puedo garantizar que la ejecución fuera rápida. Para tantas variables, tendría un término de penalización muy alto en el Glasso algo, por lo que la mayoría de las correlaciones son 0.

1voto

mkalkov Puntos 101

Si usted está usando shiny y tiene la capacidad de hacer herramientas interactivas, a continuación, sólo tiene que desarrollar el gráfico de covarianza como un objeto ggplot para que pueda agregar hover , dblclick y brush herramientas para hacer zoom y mostrar información emergente.

Aquí hay una introducción a la creación de diferentes correlación como parcelas en R con ggplot2: GGPlot2 CorrMatrix . Y aquí hay una introducción a la adición de un pop-up con herramientas hover utilizando objetos ggplot en Shiny: Herramienta Shiny Plot Hover .

Alternativamente, puede encontrar que Plotly tiene algunas características agradables para graficar la información que desea, que también tiene herramientas interactivas fáciles de incorporar. Por ejemplo: Mapas de calor Plotly .

Si tienes preguntas sobre el método ggplot, no dudes en enviarme un mensaje. De hecho, he desarrollado recientemente una aplicación similar con herramientas de zoom y hover.

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