Определения квантилей в 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

Также см. обсуждение здесь.