8 votos

Trazado Matriz de Correlación a través del tiempo

Desde su experiencia, ¿tienes alguna sugerencia para representar en cuanto a tiempo de cambiar matrices de correlación? Me miró http://quant.stackexchange.com/questions/1565/how-do-i-graphically-represent-the-evolution-of-a-covariance-matrix-over-timepero no podía encontrar ningún buen artículo. Estoy haciendo esta pregunta porque soy bastante nuevo en el campo del análisis de datos, y el único libro que he leído hasta ahora es Wickham s ggplot2. Así que, he pensado en pedirle expertos sobre ella.

Me gustaría sinceramente agradezco cualquier ayuda.

3voto

Sean Hanley Puntos 2428

Hay una serie de cuestiones que aquí (y si se usa ggplot2 me parece totalmente ortogonal a ellos). En primer lugar, reconocer que las correlaciones no necesariamente escala en una interfaz intuitiva, 'lineal' (en gran parte debido a su posible alcance es limitado). Vale la pena pensar acerca de cómo usted quiere para representar los valores. Por ejemplo, usted podría usar:

  1. el original de correlaciones (r-resultados)
  2. los coeficientes de determinación (r2's)
  3. z-puntaje basado en los resultados de Fisher 'r z' transformación:
    zr=.5ln(1+r1r)

Realmente no sé nada acerca de su situación, por lo que es difícil para mí decirlo, pero mi defecto sería el uso de las puntuaciones transformadas (zr).

Después, usted necesita decidir qué acerca de los datos que desea incluir (en absoluto, o más o menos prominente). Por ejemplo, ¿desea incluir las magnitudes absolutas de los valores, o sólo sus cambios (cf., los niveles de frente los cambios en la economía)? Principalmente la atención acerca de las magnitudes de los cambios (es decir, en valores absolutos), si se aumenta o disminuye (los signos, ya sea en un sentido absoluto, o hacia o lejos de la que no hay correlación), o ambos?

Dado que desee para visualizar la correlación de la matriz (es decir, un conjunto de correlaciones), vale la pena recordar que no van a ser independiente. Considere la posibilidad de que un cambio de sólo una variable tendrá un efecto en las correlaciones múltiples, incluso si el resto de variables se mantienen constantes a lo largo del tiempo. Así que, de nuevo, depende de si lo que importa para usted.

En otras palabras, averiguar exactamente lo que realmente importa es vital. No habrá una visualización que va a captar todas estas facetas.


A partir de tu comentario, deduzco que usted sólo tendrá dos matrices de correlación, antes y después. Que simplifica las cosas. De nuevo, sin ningún tipo de información acerca de su situación, de datos, o metas, probablemente voy a hacer un diagrama de dispersión con el antes y el después en el eje X, y zr sobre el eje y, y los dos puntos que representan la misma correlación se unió por un segmento de línea. Considere este ejemplo, el código en R:

library(MASS)   # we'll use these packages
library(psych)
set.seed(541)   # this makes the example exactly reproducible
bef = mvrnorm(100, mu=rep(0, 5), Sigma=rbind(c(1.0, 0.0, 0.0, 0.0, 0.0),
                                             c(0.0, 1.0, 0.4, 0.0, 0.5),
                                             c(0.0, 0.4, 1.0, 0.1, 0.0),
                                             c(0.0, 0.0, 0.1, 1.0, 0.8),
                                             c(0.0, 0.5, 0.0, 0.8, 1.0) ))
aft = mvrnorm(100, mu=rep(0, 5), Sigma=rbind(c(1.0, 0.0, 0.0, 0.0, 0.0),
                                             c(0.0, 1.0, 0.4, 0.0, 0.5),
                                             c(0.0, 0.4, 1.0, 0.1, 0.0),
                                             c(0.0, 0.0, 0.1, 1.0, 0.8),
                                             c(0.0, 0.5, 0.0, 0.8, 1.0) ))
aft[,5] = rnorm(100)  # above I generate data 2x from the same population, 
b.c = cor(bef)        #  here I change just 1 variable
a.c = cor(aft)        # then I make cor matrices, & extract the rs into a vector
b.v = b.c[upper.tri(b.c)]
a.v = a.c[upper.tri(a.c)]
d   = stack(list(bef=b.v, aft=a.v))
d$ind = relevel(d$ind, ref="bef")
windows(width=7, height=4)
  layout(matrix(1:2, nrow=1))
  plot(as.numeric(d$ind), fisherz(d$values), main="Fisher's z",
       axes=F, xlab="time", ylab=expression(z [r]), xlim=c(.5,2.5))
  box()
  axis(side=1, at=1:2, labels=c("before","after"))
  axis(side=2, at=seq(-.2,1.5, by=.2), cex.axis=.8, las=1)
  for(i in 1:10){ lines(1:2, matrix(fisherz(d$values), nrow=10, ncol=2)[i,]) }

  plot(as.numeric(d$ind), d$values, main="Raw rs",
       axes=F, xlab="time", ylab="r", xlim=c(.5,2.5))
  box()
  axis(side=1, at=1:2, labels=c("before","after"))
  axis(side=2, at=seq(-.2,1.0, by=.2), cex.axis=.8, las=1)
  for(i in 1:10){ lines(1:2, matrix(d$values, nrow=10, ncol=2)[i,]) }; rm(i)

fdif       = abs(fisherz(a.c)-fisherz(b.c))
diag(fdif) = 0
windows()
  image(1:5, 1:5, z=fdif, 
        xlab="", ylab="", col=gray.colors(8)[8:3])
  for(i in 1:5){ for(j in 1:5){ text(i,j,round(fdif,2)[i,j]) }}

enter image description here

Las cifras de arriba de la pantalla tanto en los niveles de las correlaciones y la cantidad de cambio. Usted puede ver varias características, tales como la convergencia hacia la r=0. La diferencia entre el uso de zr r es que el r-las puntuaciones son más uniformemente distribuidos de antemano. La distancia entre la 0 .4 es la misma que la distancia entre el.4.8, por ejemplo. Por otro lado, para zr, las correlaciones que se encuentran cerca a 0 están agrupadas y la fuerte correlación es mucho más entre el resto. Lo que esas cifras no captura es de la no-independencia de las líneas. Se puede ver en el mapa de calor de abajo (usando valores absolutos de las diferencias en el zr's) que los grandes cambios están asociados con la variable de 5.

enter image description here

2voto

Owen Fraser-Green Puntos 642

En mi opinión es mejor para cuantificar el efecto de los cambios en los parámetros ( un proxy local correlaciones ) en lugar de intentar un visual como intentos de comparación visual puede ser muy subjetivo Tu pregunta es similar a "¿Cómo puedo comprobar si los parámetros de mi cambio de modelo en el tiempo" . Lo que he hecho es el programa de la prueba de Chow para determinar en qué momento los parámetros tienen la mayor divergencia. Encontrar esto conduce a una prueba directa de la importancia, posiblemente, dando lugar a la conclusión de que "los datos anteriores" debe ser puesto a un lado.

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