Czy planujesz statystyki podsumowujące ze średnimi, sd, min i max?

10

Pochodzę ze środowisk ekonomicznych i zazwyczaj w tej dyscyplinie statystyki podsumowujące zmienne są przedstawione w tabeli. Chciałbym je jednak nakreślić.

Mógłbym zmodyfikować wykres pudełkowy, aby wyświetlał średnią, odchylenie standardowe, minimum i maksimum, ale nie chcę tego robić, ponieważ wykresy pudełkowe są tradycyjnie używane do wyświetlania median oraz Q1 i Q3.

Wszystkie moje zmienne mają różne skale. Byłoby wspaniale, gdyby ktoś mógł zasugerować sensowny sposób, w jaki mógłbym wykreślić te podsumowujące statystyki. Mogę pracować z R lub Statą.

Ridhima
źródło
1
Witamy na liście Jeśli pytasz o Rpolecenia, to pytanie jest tutaj nie na temat. Ale wydaje się, że pytasz przede wszystkim o to, jak wyglądałaby dobra fabuła, a po drugie o to, jak ją stworzyć. Jeśli tak, sugeruję usunięcie „z R” z tytułu i być może stwierdzenie w treści, że masz Rdostępne.
Peter Flom

Odpowiedzi:

16

Istnieje powód, dla którego wykres pudełkowy Tukeya jest uniwersalny, można go stosować do danych pochodzących z różnych rozkładów, od Gaussa do Poissona itp. Mediana, MAD (mediana bezwzględnego odchylenia) lub IQR (zakres międzykwartylowy) są bardziej miarodajnymi miarami, gdy dane odbiegają od normalność. Jednak średnie i SD są bardziej podatne na wartości odstające i należy je interpretować w odniesieniu do rozkładu podstawowego. Poniższe rozwiązanie jest bardziej odpowiednie dla danych normalnych lub logarytmicznych. Możesz przeglądać wybór solidnych środków tutaj i odkrywania pakiet WRS R tutaj .

# simulating dataset
set.seed(12)
d1 <- rnorm(100, sd=30)
d2 <- rnorm(100, sd=10)
d <- data.frame(value=c(d1,d2), condition=rep(c("A","B"),each=100))

# function to produce summary statistics (mean and +/- sd), as required for ggplot2
data_summary <- function(x) {
   mu <- mean(x)
   sigma1 <- mu-sd(x)
   sigma2 <- mu+sd(x)
   return(c(y=mu,ymin=sigma1,ymax=sigma2))
}

# require(ggplot2)
ggplot(data=d, aes(x=condition, y=value, fill=condition)) + 
geom_crossbar(stat="summary", fun.y=data_summary, fun.ymax=max, fun.ymin=min)

Dodatkowo, dodając + geom_jitter()lub + geom_point()do powyższego kodu, możesz jednocześnie wizualizować wartości surowych danych.


Podziękowania dla @Roland za wskazanie fabuły skrzypiec . Ma to tę zaletę, że wizualizuje gęstość prawdopodobieństwa w tym samym czasie, co statystyka podsumowująca:

# require(ggplot2)
ggplot(data=d, aes(x=condition, y=value, fill=condition)) + 
geom_violin() + stat_summary(fun.data=data_summary)

Oba przykłady pokazano poniżej.

wprowadź opis zdjęcia tutaj

TWL
źródło
2
Wolałbym od tego spisek skrzypcowy.
Roland
1
W zależności od celu analizy średnie i standardowe odchylenie jest dokładnie tym, czego potrzebujesz. Nie rozumiem jednak niespójności w streszczeniu.data.frame R. Pokazuje środki, ale nie ma SD. Nie mogę sobie wyobrazić wielu sytuacji, w których środki są użyteczne, ale standardowe odchylenia wprowadzają w błąd.
Michael M
Rzeczywiście, czasami trzeba zobaczyć średnią i SD, aby ocenić, czy są one przydatne ....
Nick Cox
1
@TWL: Temat jest o wiele za szeroki, aby o tym dyskutować. Ale weźmy na przykład oceny ekonomiczne leków: dla pacjenta być może ważna jest znajomość mediany czasu leczenia, podczas gdy dla towarzystwa ubezpieczeń zdrowotnych jest to średni czas trwania leczenia, ponieważ muszą zapłacić za każdego pacjenta. Ciekawy fakt: w przypadku rozkładu wykładniczego średnia +/- 1 odchylenie standardowe obejmuje 68% całej masy, średnia +/- 2 sds obejmuje około 95% całej masy. Co do normalności. (Ale to tylko przypadek;))
Michael M
1
Dziękuję wszystkim, podoba mi się proponowana
fabuła
9

Istnieją niezliczone możliwości.

Jedną z używanych przeze mnie opcji, która pozwala uniknąć pomyłek ze wykresami pudełkowymi (przy założeniu, że masz mediany lub oryginalne dane), jest wykreślenie wykresu pudełkowego i dodanie symbolu, który oznacza średnią (mam nadzieję, że z legendą, aby to wyraźnie zaznaczyć). Wspomniana jest ta wersja wykresu pudełkowego, która dodaje znacznik średniej, na przykład w Frigge i wsp. (1989) [1]:

Wykresy pokazujące również zaznaczoną średnią

Lewy wykres pokazuje symbol + jako znacznik średni, a prawy wykres wykorzystuje trójkąt na krawędzi, dostosowując średni znacznik z wykresu wiązki i podparcia Doane & Tracy [2].

Zobacz także ten post SO i ten

Jeśli nie masz (lub naprawdę nie chcesz pokazać) mediany, potrzebny będzie nowy wykres, a wtedy dobrze byłoby, aby był wizualnie odmienny od wykresu pudełkowego.

Być może coś takiego:

wprowadź opis zdjęcia tutaj

... która rysuje minimum, maksimum, średnią i średnią sd dla każdej próbki przy użyciu różnych symboli, a następnie rysuje prostokąt, a może lepiej, coś takiego:±

wprowadź opis zdjęcia tutaj

... która rysuje minimum, maksimum, średnią i średnią sd dla każdej próbki za pomocą różnych symboli, a następnie rysuje linię (w rzeczywistości jest to obecnie prostokąt, jak poprzednio, ale narysowany wąsko; należy go zmienić na rysunek linia)±

Jeśli twoje liczby są w bardzo różnych skalach, ale wszystkie są dodatnie, możesz rozważyć pracę z logami lub możesz zrobić małe wielokrotności z różnymi (ale wyraźnie zaznaczonymi) skalami

Kod (obecnie niezbyt „miły” kod, ale w tej chwili to tylko odkrywanie pomysłów, nie jest to samouczek na temat pisania dobrego kodu R):

fivenum.ms=function(x) {r=range(x);m=mean(x);s=sd(x);c(r[1],m-s,m,m+s,r[2])}
eps=.015

plot(factor(c(1,2)),range(c(A,B)),type="n",border=0)
points((rep(c(1,2),each=5)),c(fivenum.ms(A),fivenum.ms(B)),col=rep(c(2,4),each=5),pch=rep(c(1,16,9,16,1),2),ylim=c(range(A,B)),cex=1.2,lwd=2,xlim=c(0.5,2.5),ylab="",xlab="")
rect(1-1.2*eps,fivenum.ms(A)[2],1+1.4*eps,fivenum.ms(A)[4],lwd=2,col=2,den=0)
rect(2-1.2*eps,fivenum.ms(B)[2],2+1.4*eps,fivenum.ms(B)[4],lwd=2,col=4,den=0)

plot(factor(c(1,2)),range(c(A,B)),type="n",border=0)
points((rep(c(1,2),each=5)),c(fivenum.ms(A),fivenum.ms(B)),col=rep(c(2,4),each=5),pch=rep(c(1,16,9,16,1),2),ylim=c(range(A,B)),cex=1.2,lwd=2,xlim=c(0.5,2.5),ylab="",xlab="")
rect(1-eps/9,fivenum.ms(A)[2],1+eps/3,fivenum.ms(A)[4],lwd=2,col=2,den=0)
rect(2-eps/9,fivenum.ms(B)[2],2+eps/3,fivenum.ms(B)[4],lwd=2,col=4,den=0)

[1] Frigge, M., DC Hoaglin i B. Iglewicz (1989),
„Niektóre realizacje fabuły pudełkowej”.
American Statistician , 43 (luty): 50-54.

[2] Doane DP i RL Tracy (2000),
„Korzystanie z wyświetlaczy Beam i Fulcrum do badania danych”
American Statistician , 54 (4): 289–290, listopad

Glen_b - Przywróć Monikę
źródło