numpy. Квантиль и статистика. Квантили рассчитываются по-разному. какой из них является правдой? - PullRequest
0 голосов
/ 10 апреля 2020

Итак, предположим, что у нас есть такой массив: 4,6,9,10,2,25,12,6,9 И затем я пытаюсь вычислить квантили с помощью numpy .quantile и statistics.quantile

import numpy as np
from statistics import quantiles
arr = np.array([4,6,9,10,2,25,12,6,9,])
np.quantile(arr, (0.25, 0.50, 0.75))
quantiles(arr)

Когда я вычисляю с помощью numpy результат: array([ 6., 9., 10.])

Когда я вычисляю со статистикой результат: [5.0, 9.0, 11.0]

Так какая библиотека вычисляет правильно?

Ответы [ 2 ]

2 голосов
/ 10 апреля 2020

Встроенный метод statistics.quantiles' по умолчанию является «эксклюзивным», однако numpy.quantile включительно. Если вы напишите

quantiles(arr, method='inclusive')

, вы получите то же, что и ответ numpy. Вы должны прочитать документы, чтобы узнать, какой из них соответствует вашим потребностям.

0 голосов
/ 10 апреля 2020

Фактически, MATLAB даже возвращает третий вариант: [5.5 9.0 10.5] Ваш вопрос обоснован: Как это может быть?

Давайте сначала вспомним определение квантилей:

В статистике и квантилях вероятности - это точки среза, разделяющие диапазон распределения вероятности на непрерывные интервалы с равными вероятностями (...). q-квантили - это значения, которые разбивают конечный набор значений на q подмножеств (почти) равных размеров. С введением Википедии .

Проблема состоит в нечетном размере населения / групп. (Вот пример (Википедия) .) Вам нужно будет выбрать, что делать с дробями. Вопрос в том, стоит ли включать точку разделения или нет. По-видимому, numpy решил включить точку, приводящую к округлению вверх (ceil) для более высоких квантилей и округлению вниз (floor) для более низких квантилей; в то время как statistics решил не включать граничную точку; а MATLAB просто предоставляет точную границу - необязательно являющуюся частью набора.

Теперь реальный вопрос: что правильно? Все они. Разница будет незначительной в больших группах / группах населения, что типично для статистики;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...