В этом посте:
Это объяснение работы функции quantile (), данное @perl:
df = pd.DataFrame([5,7,10,15,19,21,21,22,22,23,23,23,23,23,24,24,24,24,25], columns=['val'])
Давайте рассмотрим 0,25 (та же логика с 0,75, конечно): номер элемента должен быть (len(df)-1)*0.25 = (19 - 1)*0.25 = 4.5
, поэтому мы между элементом 4 (который равен 19 - мы начинаем отсчет с 0) и элементом 5 (который равен 21). Итак, мы имеем i = 19, j = 21, дробь = 0,5 и i + (j - i) * дробь = 20
Я до сих пор не могу понять, как работает функция quantile ().
Все формулы для квантилей предполагают, что мы должны взять q * (n + 1), где q - квантиль, который нужно вычислить. Однако в объяснении @perl используется формула q * (n-1). Почему (n-1) вместо (n + 1)?
Во-вторых, почему дробь 0,5 используется @perl?
Есть ли разница в методе расчета квантилей, если общие точки данных четные или нечетные? *
если взять два фрейма данных:
df1 = pd.DataFrame([2,4,6,8,10,12]) # n=6 (even)
df2 = pd.DataFrame([1,3,5,7,9]) # n=5 (odd)
их соответствующие квантили указаны под диаграммой квантилей (рисунок прилагается):
Я не могу узнать, как рассчитываются квантили в двух вышеупомянутых случаях.
q -> df1 -> df2
0.2 -> 4.0 -> 2.6
0.25 -> 4.5 -> 3.0
0.5 -> 7.0 -> 5.0
0.75 -> 9.5 -> 7.0
0.8 -> 10.0 -> 7.4
Кто-нибудь может объяснить, пожалуйста? Буду очень благодарен.
Заранее спасибо.
Винит