2016-11-16 21 views
5

mamdolny i górny kwartyl w boxplot w R

X=c(20 ,18, 34, 45, 30, 51, 63, 52, 29, 36, 27, 24) 

Z boxplot, staram się wykreślić quantile(X,0.25) i quantile(X,0.75) ale to nie jest naprawdę takie same dolnych i górnych kwartyle w boxplot w R

boxplot(X) 
abline(h=quantile(X,0.25),col="red",lty=2) 
abline(h=quantile(X,0.75),col="red",lty=2) 

enter image description here Czy wiesz, dlaczego?

+0

btw, 'boxplot' zwraca obiekt, który może być użyty w razie potrzeby:' bX = boxplot (X); abline (h = bX $ stats [c (2, 4), 1], col = "czerwony", lty = 2) –

Odpowiedz

7

Wartości tego pola są nazywane zawiasami i mogą pokrywać się z kwartylami (obliczonymi przez quantile(x, c(0.25, .075))), ale są obliczane inaczej.

Z ?boxplot.stats:

dwóch „zawiasy” są wersje pierwszy i trzeci kwartyl, to znaczy w pobliżu kwantylu (x, c (1,3)/4). Zawiasy są równe kwartylowi dla nieparzystej n (gdzie n < - długość (x)) i różnią się dla parzystości n. Podczas gdy kwartyle są równe obserwacjom dla n %% 4 == 1 (n = 1 mod 4), zawiasy robią to dodatkowo dla n %% 4 == 2 (n = 2 mod 4) i są w środku dwóch uwagi w innych przypadkach.

Aby zobaczyć, że wartości pokrywają się z nieparzystej liczby obserwacji, spróbuj następujący kod:

set.seed(1234) 
x <- rnorm(9) 

boxplot(x) 
abline(h=quantile(x, c(0.25, 0.75)), col="red") 

enter image description here

3

Rozbieżność wynika z niejasności definicji kwantyli. Żadna pojedyncza metoda nie jest ściśle poprawna lub niepoprawna - istnieją po prostu różne sposoby szacowania kwantyli w sytuacjach (takich jak parzysta liczba punktów danych), gdy nie są one dokładnie zbieżne z określonym punktem danych i muszą być interpolowane. Nieco niepokojąco, boxplot i quantile (i inne funkcje, które dostarczają statystyki podsumowania) stosują różne metody domyślne obliczyć quantiles, choć wartości te mogą być nadmiernie jeździł pomocą type = argumentu quantile

Widzimy te różnice jaśniej w akcji patrząc na kilka różnych sposobów, aby wygenerować statystyki kwantyl w R.

Zarówno boxplot i fivenum dają te same wartości:

boxplot.stats(X)$stats 
# [1] 18.0 25.5 32.0 48.0 63.0 
fivenum(X) 
# [1] 18.0 25.5 32.0 48.0 63.0 

W boxplot i fivenum, dolny (górny) kwartyl odpowiada mediany dolnego (górnego) połowa danych (w tym mediany kompletnych danych):

c(median(X[ X <= median(X) ]), median(X[ X >= median(X) ])) 
# [1] 25.5 48.0 

Ale quartile i summary robić rzeczy inaczej:

summary(X) 
# Min. 1st Qu. Median Mean 3rd Qu. Max. 
# 18.00 26.25 32.00 35.75 46.50 63.00 

quantile(X, c(0.25,0.5,0.75)) 
# 25% 50% 75% 
# 26.25 32.00 46.50 

różnica między tym a wynikami boxplot i fivenum zależy od tego, jak funkcje interpolacji pomiędzy danymi. quartile próbuje interpolować przez oszacowanie kształtu dystrybuanty.Według ?quantile:

kwantyli zwraca szacunki bazowych kwantyli dystrybucyjnych opartych na jednym lub dwóch statystyk Zamówienie z dostarczonych elementów w X w prawdopodobieństw w probs. Wykorzystano jeden z dziewięciu algorytmów kwantylowych omówionych pod nazwami w Hyndman i Fan (1996), wybranych według typu.

Pełne szczegóły dziewięciu różnych metod quantile zatrudnia oszacować funkcja dystrybucja danych można znaleźć w ?quantile i są zbyt długie, aby odtworzyć w całości tutaj. Ważne jest, aby pamiętać, że 9 metod pochodzi od Hyndmana i Fana (1996), którzy zalecili typ 8. Domyślna metoda używana przez quantile to typ 7, z historycznych powodów zgodności z S. Widzimy szacunki Ćwiartki wykonywane przez różnych metod kwantylu pomocą:

quantile_methods = data.frame(q25 = sapply(1:9, function(method) quantile(X, 0.25, type = method)), 
      q50 = sapply(1:9, function(method) quantile(X, 0.50, type = method)), 
      q75 = sapply(1:9, function(method) quantile(X, 0.75, type = method))) 
#  q25 q50 q75 
# 1 24.0000 30 45.000 
# 2 25.5000 32 48.000 
# 3 24.0000 30 45.000 
# 4 24.0000 30 45.000 
# 5 25.5000 32 48.000 
# 6 24.7500 32 49.500 
# 7 26.2500 32 46.500 
# 8 25.2500 32 48.500 
# 9 25.3125 32 48.375 

w takim type = 5 zapewnia takie same oszacowane wartości kwartyle podobnie jak boxplot. Jednak w przypadku nieparzystej liczby danych, jest to type=7, które zbiegnie się ze statystykami boxplot.

Możemy pokazać te prace, automatycznie wybierając typ na 5 lub 7 w zależności od tego, czy dane są nieparzyste czy parzyste. Boxplot w obrazek poniżej przedstawiają kwantyli dla zestawów danych z 1 do 30 wartości, z boxplot i quantile podając te same wartości zarówno dla parzystych i nieparzystych n:

layout(matrix(1:30,5,6, byrow = T), respect = T) 
par(mar=c(0.2,0.2,0.2,0.2), bty="n", yaxt="n", xaxt="n") 

for (N in 1:30){ 
    X = sample(100, N) 
    boxplot(X) 
    abline(h=quantile(X, c(0.25, 0.5, 0.75), type=c(5,7)[(N %% 2) + 1]), col="red", lty=2) 
} 

enter image description here


Hyndman, RJ i wentylator , Y. (1996) Przykładowe kwantyle w pakietach statystycznych, American Statistician 50, 361-365

Powiązane problemy