Hier gibt es eine Reihe von Problemen (und ob Sie sie verwenden, ggplot2
scheint mir völlig orthogonal zu ihnen zu sein). Erkennen Sie zunächst, dass Korrelationen nicht unbedingt intuitiv und linear skaliert werden müssen (zum großen Teil, weil ihr möglicher Bereich begrenzt ist). Es lohnt sich darüber nachzudenken, wie Sie die Werte darstellen möchten. Zum Beispiel könnten Sie verwenden:
- die ursprünglichen Korrelationen ( Punkte)r
- Bestimmungskoeffizienten ( 's)r2
- z Punkte basierend auf den Ergebnissen der Fisher- Transformationrz von ' nach ' :
zr=.5ln(1+r1−r)
Ich weiß nicht wirklich etwas über Ihre Situation, daher fällt es mir schwer zu sagen, aber meine Standardeinstellung wäre die Verwendung der transformierten Scores ( ). zr
Als nächstes müssen Sie entscheiden, was mit den Daten geschehen soll (überhaupt oder mehr oder weniger prominent). Möchten Sie beispielsweise die absoluten Größen der Werte oder nur deren Änderungen einbeziehen (vgl. Niveaus vs. Änderungen in der Wirtschaft)? Interessieren Sie sich hauptsächlich für die Größenordnungen der Änderungen (dh Absolutwerte), ob sie zunehmen oder abnehmen (die Vorzeichen, entweder im absoluten Sinne oder in Richtung oder weg von keiner Korrelation) oder beides?
Vorausgesetzt , dass Sie eine Korrelation visualisieren möchten Matrix (dh ein Satz von Korrelationen), ist es zu bedenken , dass sie nicht sein wird , unabhängig . Beachten Sie, dass eine Änderung nur einer Variablen Auswirkungen auf mehrere Korrelationen hat, selbst wenn die anderen Variablen über die Zeit konstant sind. Es kommt also wieder darauf an, ob das für Sie wichtig ist.
Mit anderen Worten, es ist wichtig , genau herauszufinden, was Ihnen wirklich wichtig ist. Es wird keine Visualisierung geben, die alle diese Facetten erfasst.
Aus Ihrem Kommentar geht hervor, dass Sie vorher und nachher nur zwei Korrelationsmatrizen haben werden. Das vereinfacht die Dinge. Ohne Informationen über Ihre Situation, Daten oder Ziele würde ich wahrscheinlich ein Streudiagramm mit vorher und nachher auf der X-Achse und auf der Y-Achse und den beiden Punkten , die dieselbe Korrelation darstellen, die durch eine Linie verbunden sind Segment. Betrachten Sie dieses in R codierte Beispiel: 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]) }}
Die obigen Abbildungen zeigen sowohl die Ebenen der Korrelationen als auch das Ausmaß der Änderung. Sie können verschiedene Merkmale sehen, z. B. eine Konvergenz in Richtung . Der Unterschied zwischen der Verwendung von und besteht darin, dass die Punkte vorher gleichmäßiger verteilt sind. Der Abstand zwischen und beispielsweise dem Abstand zwischen und . Andererseits sind für die Korrelationen naher=0zrrr0.4.4.8zr0sind zusammengeklumpt und die starke Korrelation ist viel weiter vom Rest entfernt. Was diese Zahlen nicht erfassen, ist die Nichtunabhängigkeit dieser Linien. Sie können in der Heatmap unten sehen (unter Verwendung der absoluten Werte der Unterschiede in ), dass die größeren Änderungen mit Variable 5 verbunden sind. zr