2012-07-24 3 views
6

Wenn ich ein facet_grid in ggplot2 verwende, würde ich gerne in der Lage sein, den Wert der Korrelation für die Teilmengen für jede Rasterzelle in der oberen rechten Ecke des spezifischen Diagramms zu haben.Korrelationswerte in einem Facettenraster von ggplot2

z.B. wenn läuft:

p <- ggplot(mtcars, aes(mpg, wt)) + geom_point() 
p + facet_grid(vs ~ am, margins=TRUE) 

Ich würde gerne den Wert für die Korrelation für jeden der 9 Diagramme im Raster irgendwo sehen. In diesem speziellen Fall aus dem Beispiel würde ich erwarten, dass jeder von ungefähr -0.9 oder so von der Sichtprüfung ist.

Oder vielleicht eine Ausgabetabelle, um mit dem Plot zu gehen, der die Korrelationswerte für jede der Zellen in der Tabelle gibt, die mit dem facet_grid zusammenpasst ... (dies ist weniger wünschenswert, aber auch eine Option).

Idealerweise möchte ich dies auf jede andere Funktion, die ich auswähle, so erweitern, dass es eine oder beide der beiden Variablen verwenden kann, um Statistiken zu berechnen.

Ist das möglich?

Vielen Dank im Voraus

Antwort

3

Winston Chang, eine Antwort auf die ggplot2 Gruppe vorgeschlagen ... das ist, was er gesagt ... es ist keine schlechte Antwort ...

Sie könnten etwas tun:

p <- ggplot(mtcars, aes(mpg, wt)) + geom_point() 

# Calculate correlation for each group 
cors <- ddply(mtcars, c("vs", "am"), summarise, cor = round(cor(mpg, wt), 2)) 

p + facet_grid(vs ~ am) + 
geom_text(data=cors, aes(label=paste("r=", cor, sep="")), x=30, y=4) 

Ich glaube nicht, dass es möglich ist, dies richtig mit Margen = TRUE, obwohl. Wenn Sie die Ränder möchten, müssen Sie möglicherweise Ihre Daten vorverarbeiten, um einen ALL-Wert für jede facettierende Variable hinzuzufügen.

-Winston

4

Ich würde eher ein (lineares) glatter zu den Daten hinzuzufügen. Es gibt Ihnen viel mehr Informationen als eine Korrelation.

ggplot(mtcars, aes(mpg, wt)) + 
    geom_smooth(method = "loess", colour = "red", fill = "red") + 
    geom_smooth(method = "lm", colour = "blue", fill = "blue") + 
    geom_point() + facet_grid(vs ~ am, margins=TRUE) 

enter image description here

ggplot(mtcars, aes(mpg, wt)) + geom_smooth(method = "lm") + geom_point() + 
    facet_grid(vs ~ am, margins=TRUE) 

enter image description here