Há várias questões aqui (e se você ggplot2
me parece inteiramente ortogonal a elas). Primeiro, reconheça que essas correlações não necessariamente se dimensionam de uma maneira intuitiva e "linear" (em grande parte porque seu alcance possível é limitado). Vale a pena pensar em como você deseja representar os valores. Por exemplo, você pode usar:
- as correlações originais ( escores)r
- coeficientes de determinação ( 's)r2
- z escores com base nos resultados da transformação de ' em 'rz de Fisher :
zr=.5ln(1+r1−r)
Eu realmente não sei nada sobre a sua situação, por isso é difícil para mim dizer, mas meu padrão seria usar as pontuações transformadas ( ). zr
Em seguida, você precisa decidir o que dizer dos dados que deseja incluir (de todo ou com mais ou menos destaque). Por exemplo, você deseja incluir as magnitudes absolutas dos valores, ou apenas suas mudanças (cf. níveis x mudanças na economia)? Você se preocupa principalmente com as magnitudes das mudanças (isto é, valores absolutos), sejam elas aumentos ou diminuições (os sinais, em sentido absoluto, ou em direção ou longe de nenhuma correlação), ou ambas?
Dado que você deseja visualizar uma matriz de correlação (ou seja, um conjunto de correlações), vale lembrar que elas não serão independentes . Considere que uma mudança em apenas uma variável terá efeito em várias correlações, mesmo que as outras variáveis sejam constantes ao longo do tempo. Então, novamente, depende se isso importa para você.
Em outras palavras, descobrir exatamente com o que você realmente se importa é vital. Não haverá uma visualização que capture todas essas facetas.
Pelo seu comentário , deduzo que você terá apenas duas matrizes de correlação, antes e depois. Isso simplifica as coisas. Novamente, sem nenhuma informação sobre sua situação, dados ou objetivos, eu provavelmente faria um gráfico de dispersão com antes e depois no eixo X, e no eixo Y, e os dois pontos representando a mesma correlação unida por uma linha segmento. Considere este exemplo, codificado em R: zr
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]) }}
As figuras acima exibem os níveis das correlações e a quantidade de alteração. Você pode ver vários recursos, como uma convergência para . A diferença entre a utilização de e é que as -scores são mais uniformemente distribuídos de antemão. A distância entre e é igual à distância entre e , por exemplo. Por outro lado, para , as correlações próximas ar=0zrrr0.4.4.8zr0são agrupados e a forte correlação está muito mais distante do resto. O que esses números não capturam é a não independência dessas linhas. Você pode ver no mapa de calor abaixo (usando valores absolutos das diferenças em 's) que as alterações maiores estão associadas à variável 5. zr