Определения квантилей в R
главный вопрос: предположим, что у вас есть дискретный, конечный набор данных $d$. Затем команда summary (d) возвращает Min, 1-й квартиль, медиану, среднее, 3-й квартиль и max. Мой вопрос: какую формулу R использует для вычисления 1-го квартиля?
фон: мой набор данных: d=c(1,2,3,3,4,9)
. summary(d)
возвращает 2.25
как первый квартиль. Теперь один из способов вычисления первого квартиля-выбрать значение q1 таким образом, чтобы 25% набора данных было меньше, чем равно q1. Ясно, что это не то, что R использует. Итак, мне было интересно, какую формулу R использует для вычисления первого квартиля?
поиск Google по этой теме оставил еще более озадаченным, и я не мог найти формулу, которую использует R. Набрав help(summary)
в R мне тоже не помогло.
1 ответов
общие обсуждения:
существует множество различных возможностей для выборочных квантильных функций; мы хотим, чтобы они имели различные свойства (включая простоту понимания и объяснения!), и в зависимости от того, какие свойства мы хотим больше всего, мы можем предпочесть разные определения.
в результате, большое разнообразие пакетов между ними использует много различных определений.
статьи Хиндман и вентилятор [1] дает шесть желательных свойств для выборочной функции квантиля, перечисляет девять существующих определений для функции квантиля и упоминает, какие (из ряда общих) пакетов используют какие определения. Его введение говорит (Извините, математика в этой цитате больше не отображается должным образом, так как она была перемещена в SO):
квантили выборки, используемые в статистике все пакеты основаны на статистике одного или двух заказов, и можно написать как
\hat{Q}_i (p) = (1 - γ) X_ {(j)} + γ X_ {(j+1)}\,,
где \фрац{в J-м}{н}\leq и пдля некоторых m\in \mathbb{R} и 0\leq\gamma\leq 1.
то есть, в общем случае, квантили выборки могут быть записаны как своего рода средневзвешенное значение статистики двух смежных порядков (хотя может быть, что есть только вес на одном из них).
В R:
в частности, R предлагает все девять определений, упомянутых в Hyndman & Fan (с $7$ по умолчанию). Из Hyndman & Fan мы видим:
определение 7. Гумбель (1939) также рассмотрел модальное положение $p_k = \text{mode}\, F(X_ {(k)}) = (k-l)/(n-1)$. Одним из приятных свойств является то, что вершины $Q_7(p)$ делят диапазон на интервалы $n-1$, и ровно $100p\%$ интервалов лежат слева от $Q_7 (p$) и $100 (1-p)\%$ интервалов лежат справа от $Q_7 (p)$.
что это значит? Считать n=9
. Тогда для (k-1)/(n-1) = 0.25
необходимо k = 1+(9-1)/4 = 3
. То есть, нижняя квартиль-это 3-е наблюдение из 9.
мы видим это в R:
quantile(1:9)
0% 25% 50% 75% 100%
1 3 5 7 9
за его поведение, когда n
не имеет формы 4k+1
, самое простое, что нужно сделать, это попробовать:
> quantile(1:10)
0% 25% 50% 75% 100%
1.00 3.25 5.50 7.75 10.00
> quantile(1:11)
0% 25% 50% 75% 100%
1.0 3.5 6.0 8.5 11.0
> quantile(1:12)
0% 25% 50% 75% 100%
1.00 3.75 6.50 9.25 12.00
, когда k
не является целым числом, он принимает средневзвешенное значение статистики смежного порядка, пропорционально доле его между ними (то есть, это линейная интерполяция).
хорошо то, что в среднем вы получаете в 3 раза больше наблюдений над первым квартилем, чем ниже. Так, например, для 9 наблюдений вы получаете 6 выше и 2 ниже третьего наблюдения, которое делит их на соотношение 3:1.
что происходит с вашими образцами данных
вы d=c(1,2,3,3,4,9)
, так что n
в 6. Вам нужно (k-1)/(n-1)
будет 0.25
, так что k = 1 + 5/4 = 2.25
. То есть, он занимает 25% пути между вторым и третьим наблюдением (которые по совпадению сами являются 2 и 3), поэтому нижний квартиль 2+0.25*(3-2) = 2.25
.
под капотом: некоторые детали R:
когда вы называете summary
на фрейме данных, в результате summary.data.frame
применяется к фрейму данных (т. е. соответствующий summary
для класса, на который вы его вызвали). Его существование упоминается в справке по summary
.
на summary.data.frame
функция (в конечном счете -- via summary.default
применяется к каждому столбцу) вызовы quantile
для вычисления квартилей (вы не увидите этого в справке, к сожалению, так как ?summary.data.frame
простая summary
помощь, и это не дает вам никаких подробностей о том, что происходит, когда summary
применяется к числовому вектору - это одно из тех действительно плохих мест в справке).
так ?quantile
(или help(quantile)
) описывает, что R делает.
здесь две вещи, которые он говорит (на основе непосредственно от Hyndman & Fan). Во-первых, он дает общую информацию:
All sample quantiles are defined as weighted averages of consecutive order statistics. Sample quantiles of type i are defined by:
Q[i](p) = (1 - γ) x[j] + γ x[j+1],
where 1 ≤ i ≤ 9, (j-m)/n ≤ p < (j-m+1)/n, x[j] is the jth order statistic, n is the sample size, the value of γ is a function of j = floor(np + m) and g = np + m - j, and m is a constant determined by the sample quantile type.
во-вторых, есть конкретная информация о методе 7:
Type 7
m = 1-p
. p[k] = (k - 1) / (n - 1). In this case, p[k] = mode[F(x[k])]. This is used by S.
надеюсь, объяснение, которое я дал ранее, поможет понять, что это говорит. Этот помогите на quantile
в значительной степени просто цитирует Hyndman & Fan насколько определения идут, и его поведение довольно просто.
ссылка:
[1]: Rob J. Hyndman and Yanan Fan (1996),
"Выборка квантилей в статистических пакетах",
Американская Статистика, Vol. 50 г. № 4. (Ноябрь.), стр. 361-365
Также см. обсуждение здесь.