Python: непонятный перцентиль - PullRequest
0 голосов
/ 19 июня 2019

При использовании Python Numpy для вычисления квантиля / процентиля, результаты немного странные, как показано ниже. Я очень смущен этим, кто-нибудь может объяснить, почему?

import numpy as np

x = range(1,1031)
x = np.array(x)

np.percentile(x,1,interpolation='lower')
# 11
np.percentile(x,1,interpolation='higher')
# 12

np.percentile(x,0.972,interpolation='lower')
# 11
np.percentile(x,0.972,interpolation='higher')
# 12

np.percentile(x,0.971,interpolation='lower')
# 10
np.percentile(x,0.971,interpolation='higher')
# 11

Я ожидаю, что нижний и верхний 1% квантили чисел от 1 до 1030 будут 10 и 11, но фактические результаты - 11 и 12.

1 Ответ

1 голос
/ 19 июня 2019

Представьте себе на некоторое время, что ваш массив был x = range(1,1002) (т.е. от 1 до 1001 включительно).Тогда 1 - это процентиль 0%, а 1001 - 100%.Медиана будет 501, и это должен быть 50% процентиль.Из этого паттерна вы, вероятно, можете интерполировать, чтобы получить, что p% процентиль должен быть 10p + 1.В частности, процентиль 1% должен составлять 11.

Теперь, поскольку ваш фактический массив равен range(1,1031), разве процентиль 1% не должна быть немного выше?

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