Расхождение возникает неоднозначности в определении квантилей. Ни один метод не является строго правильным или неправильным - есть просто разные способы оценки квантилей в ситуациях (например, четное количество точек данных), когда они не аккуратно совпадают с конкретной точкой данных и должны быть интерполированы. Несколько обескураживающе, boxplot
и quantile
(и другие функции, которые предоставляют сводные статистические данные) используются различными стандартные методы для расчета квантилей, хотя эти значения могут быть подавляться с помощью type =
аргумента в quantile
Мы можем увидеть эти различия более четко в действии глядя на некоторых из различных способов генерации квантилей статистики в R.
Оба boxplot
и fivenum
дают одни и то же значение:
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
В boxplot
и fivenum
, нижняя (верхняя) квартиль эквивалентно средней нижней (верхней) половины данных (в том числе медианы полных данных):
c(median(X[ X <= median(X) ]), median(X[ X >= median(X) ]))
# [1] 25.5 48.0
Но quartile
и summary
делать вещи разному:
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
разница между этим и результатами boxplot
и fivenum
зависит от того, как функционирует интерполировать между данными. quartile
пытается интерполировать, оценивая форму кумулятивной функции распределения.В соответствии с ?quantile
:
квантильные возвращает оценки основных квантилей распределения на основе на одной или двух порядковых статистик из поставляемых элементов х на вероятностей в Probs. Используется один из девяти квантильных алгоритмов, обсуждаемых в Hyndman and Fan (1996), выбранный по типу.
Полные детали из девяти различных методов quantile
используется для оценки функции распределения данных можно найти в ?quantile
, и слишком длинны, чтобы воспроизвести в полном объеме здесь. Важно отметить, что 9 методов взяты из Hyndman and Fan (1996), которые рекомендовали тип 8. Метод по умолчанию, используемый quantile
, относится к типу 7 по историческим причинам совместимости с S. . Мы можем видеть оценки квартили, предоставляемые различными методами в квантиль с помощью:
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
В которой type = 5
обеспечивает те же расчетные значения квартили как это делает boxplot
. Однако, когда есть нечетное количество данных, это type=7
, что будет совпадать с статистикой boxplot.
Мы можем показать это, автоматически выбрав тип 5 или 7 в зависимости от наличия четного или четного количества данных. Boxplot в изображении ниже показывают квантили для наборов данных с 1 до 30 значений, с boxplot
и quantile
дают то же значение, как для нечетных и четных 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 и вентилятором , Y. (1996) Примеры квантилей в статистических пакетах, американский статистик 50, 361-365
btw, 'boxplot' возвращает объект, который может использоваться по мере необходимости:' bX = boxplot (X); abline (h = bX $ stats [c (2, 4), 1], col = "red", lty = 2) ' –