10 votos

¿Cómo mostrar una matriz de correlaciones con las entradas que faltan?

Me gustaría obtener una representación gráfica de las correlaciones en los artículos que he reunido hasta ahora para explorar fácilmente las relaciones entre las variables. Solía dibujar un gráfico (desordenado) pero ahora tengo demasiados datos.

Básicamente, tengo una mesa con:

  • [0]: nombre de la variable 1
  • [1]: nombre de la variable 2
  • 2]: valor de la correlación

La matriz "global" está incompleta (por ejemplo, tengo la correlación de V1*V2, V2*V3, pero no V1*V3).

¿Hay alguna forma de representar esto gráficamente?

51voto

pirho Puntos 1387

Sus datos pueden ser como

  name1 name2 correlation
1    V1    V2         0.2
2    V2    V3         0.4

Puedes reorganizar tu mesa larga en una ancha con el siguiente código R

d = structure(list(name1 = c("V1", "V2"), name2 = c("V2", "V3"), 
    correlation = c(0.2, 0.4)), .Names = c("name1", "name2", 
    "correlation"), row.names = 1:2, class = "data.frame")
k = d[, c(2, 1, 3)]
names(k) = names(d)
e = rbind(d, k)
x = with(e, reshape(e[order(name2),], v.names="correlation", 
  idvar="name1", timevar="name2", direction="wide"))
x[order(x$name1),]

Usted obtiene

  name1 correlation.V1 correlation.V2 correlation.V3
1    V1             NA            0.2             NA
3    V2            0.2             NA            0.4
4    V3             NA            0.4             NA

Ahora puede utilizar técnicas para visualizar matrices de correlación (por lo menos las que pueden hacer frente a los valores perdidos).

7voto

DavLink Puntos 101

Basándome en la respuesta de @GaBorgulya, sugeriría probar la fluctuación o el gráfico de nivel (también conocido como mapa de calor).

Por ejemplo, utilizando ggplot2 :

library(ggplot2, quietly=TRUE)
k <- 100
rvals <- sample(seq(-1,1,by=.001), k, replace=TRUE)
rvals[sample(1:k, 10)] <- NA
cc <- matrix(rvals, nr=10)
ggfluctuation(as.table(cc)) + opts(legend.position="none") + 
  labs(x="", y="")

(Aquí, las entradas que faltan se muestran en gris claro, pero se puede cambiar el esquema de colores por defecto, y también se puede poner "NA" en la leyenda).

enter image description here

o

ggfluctuation(as.table(cc), type="color") + labs(x="", y="") +
  scale_fill_gradient(low = "red",  high = "blue")

(Aquí, los valores perdidos simplemente no se muestran. Sin embargo, puede agregar un geom_text() y mostrar algo como "NA" en la celda vacía).

enter image description here

7voto

Yochai Timmer Puntos 116

El corrplot es una función útil para visualizar las matrices de correlación. Acepta una matriz de correlación como objeto de entrada y tiene varias opciones para visualizar la propia matriz. Una buena característica es que puede reordenar sus variables usando métodos de clustering jerárquico o PCA.

Vea la respuesta aceptada en este hilo para una visualización de ejemplo.

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