Wskazanie statystycznie istotnej różnicy w wykresie słupkowym za pomocą R

Jest to powtórzenie pytania pierwotnie zadanego tutaj: wskazujące statystycznie istotną różnicę w wykresie słupkowym , ale zapytane o R zamiast Pythona.

Moje pytanie jest bardzo proste. Chcę produkować pręty w R, używając ggplot2, jeśli to możliwe, ze wskazaniem znaczącej różnicy między różnymi prętami, np. produkować coś takiego. Szukałem w okolicy, ale nie mogę znaleźć innego pytania zadającego dokładnie to samo.

Wykres bar pokazujący paski błędów i sig. diff marking beween bars

Author: Community, 2013-02-19

3 answers

Możesz użyć geom_path() i annotate(), aby uzyskać podobny wynik. W tym przykładzie musisz samodzielnie określić odpowiednią pozycję. W geom_path() podano cztery liczby, aby uzyskać te małe kleszcze dla linii łączących.

df<-data.frame(group=c("A","B","C","D"),numb=c(12,24,36,48))
g<-ggplot(df,aes(group,numb))+geom_bar(stat="identity")
g+geom_path(x=c(1,1,2,2),y=c(25,26,26,25))+
  geom_path(x=c(2,2,3,3),y=c(37,38,38,37))+
  geom_path(x=c(3,3,4,4),y=c(49,50,50,49))+
  annotate("text",x=1.5,y=27,label="p=0.012")+
  annotate("text",x=2.5,y=39,label="p<0.0001")+
  annotate("text",x=3.5,y=51,label="p<0.0001")

Tutaj wpisz opis obrazka

 15
Author: Didzis Elferts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-19 13:18:52

Wiem, że to stare pytanie, a odpowiedź Didzisa Elfertsa dostarcza już jednego rozwiązania problemu. Ale ostatnio stworzyłem rozszerzenie ggplot, które upraszcza cały proces dodawania pasków znaczenia: ggsignif

Zamiast żmudnie dodawać geom_path i annotate do wykresu wystarczy dodać jedną warstwę geom_signif:

library(ggplot2)
library(ggsignif)

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

Boxplot z paskiem

PEŁNA DOKUMENTACJA pakietu jest dostępna na stronie CRAN .

 13
Author: Artjom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-05 12:39:09

Użyłem sugerowanej metody z góry, ale stwierdziłem, że funkcja adnotacji jest łatwiejsza do tworzenia linii niż funkcja geom_path. Wystarczy użyć "segment" zamiast "tekst". Musisz podzielić rzeczy na segmenty i zdefiniować początkowe i końcowe wartości x i y dla każdego segmentu linii.

Przykład wykonania 3 odcinków linii:

annotate("segment", x=c(1,1,2),xend=c(1,2,2), y= c(125,130,130), yend=c(130,130,125))
 3
Author: Jenny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-17 20:57:01