2017-05-16 4 views
1

Das Paket ggsignif ist sehr nützlich, um schnell und einfach signifikante Vergleiche in ggplot Graphen anzuzeigen. Der Aufruf comparisons erfordert jedoch die manuelle Eingabe jedes zu vergleichenden Wertepaars.Mehrere Vergleiche mit der Funktion geom_signif, R

ZB.

library(ggplot2) 
library(ggsignif) 

data(iris) 

ggplot(iris, aes(x=Species, y=Sepal.Length)) + 
    geom_boxplot() + 
    geom_signif(comparisons = list(c("versicolor", "virginica"),c('versicolor','setosa')), 
       map_signif_level=TRUE) 

enter image description here

Ich frage mich, wie dies unter Bezugnahme auf alle möglichen Kombinationen auf einmal umgangen werden könnten? Zum Beispiel expand.grid(x = levels(iris$Species), y = levels(iris$Species)), gibt alle Kombinationen

  x   y 
1  setosa  setosa 
2 versicolor  setosa 
3 virginica  setosa 
4  setosa versicolor 
5 versicolor versicolor 
6 virginica versicolor 
7  setosa virginica 
8 versicolor virginica 
9 virginica virginica 

Aber wie dies durch geom_signif(comparisons=... akzeptiert haben?

Paketinformationen finden Sie hier https://cran.r-project.org/web/packages/ggsignif/index.html

+3

'combn (levels (iris $ Species), 2) 'gibt Ihnen alle drei paarweisen Kombinationen –

+0

@AdamQuek mit dem ohne' list() 'gibt den Fehler,' Warnmeldung: Berechnung fehlgeschlagen in stat_ signif(): nicht genug "y" Beobachtungen. Die Verwendung von 'list()' fügt nur den ersten Vergleich zum Plot hinzu. –

+0

Keine Antwort auf 'geom_signif' (nie benutzt und nicht beabsichtigt). Ich schlage nur vor, dass "combn" der sinnvollere Weg ist, eine paarweise Kombination anstelle von "expand.grid" zu erhalten. –

Antwort

1

Aufbauend auf den Kommentar von Adam Quek Sie müssen nur die erstellte Matrix transponieren und jede Zeile in eine Liste drehen:

split(t(combn(levels(iris$Species), 2)), seq(nrow(t(combn(levels(iris$Species), 2))))) 

$`1` 
[1] "setosa"  "versicolor" 

$`2` 
[1] "setosa" "virginica" 

$`3` 
[1] "versicolor" "virginica" 

ggplot(iris, aes(x = Species, y = Sepal.Length)) + 
    geom_boxplot() + 
    geom_signif(comparisons = split(t(combn(levels(iris$Species), 2)), seq(nrow(t(combn(levels(iris$Species), 2))))), 
       map_signif_level = TRUE) 

enter image description here

+1

Ausgezeichnet! Vielen Dank. Könnte ich Sie bitten zu fragen, wie Sie diesen Linien ausweichen könnten? –

+1

Ah, ich sehe 'step_increase ='. –

Verwandte Themen