W moim obszarze badań popularnym sposobem wyświetlania danych jest użycie kombinacji wykresu słupkowego z „uchwytami”. Na przykład,
„Kierownice” zmieniają się pomiędzy standardowymi błędami i standardowymi odchyleniami w zależności od autora. Zazwyczaj rozmiary próbek dla każdego „słupka” są dość małe - około sześciu.
Te wykresy wydają się być szczególnie popularne w naukach biologicznych - przykłady można znaleźć w kilku pierwszych artykułach BMC Biology, tom 3 .
Jak więc przedstawiłbyś te dane?
Dlaczego nie lubię tych fabuł
Osobiście nie lubię tych fabuł.
- Jeśli wielkość próbki jest niewielka, dlaczego nie wyświetlić pojedynczych punktów danych.
- Czy wyświetla się SD lub SE? Nikt nie zgadza się, którego użyć.
- Po co w ogóle używać pasków. Dane nie (zwykle) nie zaczynają się od 0, ale sugeruje to pierwszy przebieg na wykresie.
- Wykresy nie dają wyobrażenia o zakresie lub wielkości próbki danych.
Skrypt R.
To jest kod R, którego użyłem do wygenerowania wykresu. W ten sposób możesz (jeśli chcesz) korzystać z tych samych danych.
#Generate the data
set.seed(1)
names = c("A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3")
prevs = c(38, 37, 31, 31, 29, 26, 40, 32, 39)
n=6; se = numeric(length(prevs))
for(i in 1:length(prevs))
se[i] = sd(rnorm(n, prevs, 15))/n
#Basic plot
par(fin=c(6,6), pin=c(6,6), mai=c(0.8,1.0,0.0,0.125), cex.axis=0.8)
barplot(prevs,space=c(0,0,0,3,0,0, 3,0,0), names.arg=NULL, horiz=FALSE,
axes=FALSE, ylab="Percent", col=c(2,3,4), width=5, ylim=range(0,50))
#Add in the CIs
xx = c(2.5, 7.5, 12.5, 32.5, 37.5, 42.5, 62.5, 67.5, 72.5)
for (i in 1:length(prevs)) {
lines(rep(xx[i], 2), c(prevs[i], prevs[i]+se[i]))
lines(c(xx[i]+1/2, xx[i]-1/2), rep(prevs[i]+se[i], 2))
}
#Add the axis
axis(2, tick=TRUE, xaxp=c(0, 50, 5))
axis(1, at=xx+0.1, labels=names, font=1,
tck=0, tcl=0, las=1, padj=0, col=0, cex=0.1)
data-visualization
csgillespie
źródło
źródło
Odpowiedzi:
Dziękuję za wszystkie odpowiedzi. Dla kompletności pomyślałem, że powinienem uwzględnić to, co zwykle robię. Zazwyczaj robię kombinację podanych sugestii: kropki, wykresy pudełkowe (gdy n jest duże) i zakresy se (lub sd).
( Usunięty przez moderatora, ponieważ witryna, na której znajduje się obraz, nie działa już poprawnie ).
Z wykresu punktowego jasno wynika, że dane są znacznie bardziej rozłożone, jak sugerują wykresy „paska uchwytów”. W rzeczywistości w A3 występuje wartość ujemna!
Uczyniłem tę odpowiedź CW, więc nie zyskuję rep
źródło
Keynote Franka Harrella (najdoskonalsza) zatytułowane „Alergia informacyjna” w useR! ostatni miesiąc pokazał alternatywy dla nich: zamiast ukrywać surowe dane poprzez agregację, którą zapewniają paski, surowe dane są również wyświetlane jako kropki (lub punkty). „Po co ukrywać dane?” był komentarz Franka.
Biorąc pod uwagę mieszanie alpy, jest to najbardziej sensowna sugestia (i cała rozmowa najbardziej pełna dobrych i ważnych samorodków).
źródło
jitter
jest również zwykły R.Z psychologicznego punktu widzenia zalecam wykreślanie danych plus twoją niepewność co do danych. Dlatego na wykresie takim, jak pokazujesz, nigdy nie zawracałbym sobie głowy przedłużeniem słupków do zera, co służy jedynie zminimalizowaniu zdolności oka do rozróżniania różnic w zakresie danych.
Poza tym jestem szczerze przeciwny bargrafowi; wykresy słupkowe odwzorowują dwie zmienne na ten sam atrybut estetyczny (położenie na osi x), co może powodować zamieszanie. Lepszym podejściem jest uniknięcie zbędnego mapowania estetycznego poprzez mapowanie jednej zmiennej na oś x, a innej zmiennej na inny atrybut estetyczny (np. Kształt lub kolor punktu lub oba).
Wreszcie na powyższym wykresie uwzględniane są tylko słupki błędów powyżej wartości, co utrudnia zdolność do porównywania przedziałów niepewności względem słupków powyżej i poniżej wartości.
Oto, jak wykreślam dane (za pośrednictwem pakietu ggplot2). Zauważ, że dodaję linie łączące punkty w tej samej serii; niektórzy twierdzą, że jest to właściwe tylko wtedy, gdy szeregi, przez które linie są połączone, są numeryczne (jak wydaje się w tym przypadku), jednak dopóki istnieje jakakolwiek uzasadniona zależność porządkowa między poziomami zmiennej osi x, myślę linie łączące są przydatne do wspomagania oka w kojarzeniu punktów na osi x. Może to stać się szczególnie przydatne do wykrywania interakcji, które naprawdę wyróżniają się liniami.
źródło
geom_ribbon()
wskazaniem błędu. Jeśli nie lubisz generować szacunkowych oszacowań dla regionów od 1 do 2, przynajmniej zmniejsz szerokość paska błędów.Jestem ciekawy, dlaczego nie lubisz tych fabuł. Używam ich cały czas. Nie chcąc stwierdzić, że kwitnienie jest oczywiste, pozwalają ci porównać średnie różnych grup i sprawdzić, czy ich 95% CI pokrywają się (tj. Prawdziwa średnia prawdopodobnie będzie inna).
Wydaje mi się, że ważna jest równowaga prostoty i informacji do różnych celów. Ale kiedy używam tych fabuł, mówię: „te dwie grupy różnią się między sobą w jakiś ważny sposób” [lub nie].
Wydaje mi się to świetne, ale chciałbym usłyszeć kontrprzykłady. Podejrzewam, że domyślnie w użyciu fabuły dane nie mają dziwnego rozkładu, co czyni średnią nieważną lub wprowadzającą w błąd.
źródło
Jeśli dane są stawkami : to jest liczba sukcesów podzielona przez liczbę prób, wówczas bardzo elegancką metodą jest wykres lejek. Na przykład zobacz http://qshc.bmj.com/content/11/4/390.2.full (przepraszam, jeśli link wymaga subskrypcji - daj mi znać, a ja znajdę inną).
Może być możliwe dostosowanie go do innych typów danych, ale nie widziałem żadnych przykładów.
AKTUALIZACJA:
Oto link do przykładu, który nie wymaga subskrypcji (i ma dobre wyjaśnienie, w jaki sposób można z nich korzystać): http://understandinguncertainty.org/fertility
Można ich użyć do danych innych niż stawki, po prostu wykreślając średnią ze standardowego błędu, jednak mogą stracić część swojej prostoty.
Artykuł w Wikipedii nie jest świetny, ponieważ omawia tylko ich zastosowanie w metaanalizach. Twierdziłbym, że mogą być przydatne w wielu innych kontekstach.
źródło
Użyłbym tu wykresów pudełkowych; czysty, znaczący, nieparametryczny ... Lub vioplot, jeśli rozkład jest bardziej interesujący.
źródło
Uproszczenie wspaniałego kodu @ csgillespie z góry:
źródło
Wolę geom_pointrange niż pasek błędów i uważam, że linie są bardziej rozpraszające niż pomocne. Oto wersja, którą uważam za znacznie czystszą niż wersja @James lub @csgillespie:
źródło