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)
}

Hyndman, RJ i wentylator , Y. (1996) Przykładowe kwantyle w pakietach statystycznych, American Statistician 50, 361-365
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) –