Python SciPy Stats

Рассмотрим следующий код Python:

In [1]: import numpy as np
In [2]: import scipy.stats as stats
In [3]: ar = np.array([0.8389, 0.5176, 0.1867, 0.1953, 0.4153, 0.6036, 0.2497, 0.5188, 0.4723, 0.3963])
In [4]: x = ar[-1]
In [5]: stats.percentileofscore(ar, x, kind='strict')
Out[5]: 30.0
In [6]: stats.percentileofscore(ar, x, kind='rank')
Out[6]: 40.0
In [7]: stats.percentileofscore(ar, x, kind='weak')
Out[7]: 40.0
In [8]: stats.percentileofscore(ar, x, kind='mean')
Out[8]: 35.0

Аргумент типа представляет интерпретацию полученной оценки.

Теперь, когда я использую функцию PERCENTRANK в Excel с теми же данными, я получаю 0.3333. Это кажется правильным, так как есть 3 значения меньше, чем х =0,3963.

Может кто-нибудь объяснить, почему я получаю противоречивые результаты?

2 ответа

Решение

Когда я переписал эту функцию в scipy.stats, я нашел много разных определений, некоторые из них включены.

Основной пример - когда я хочу оценивать студентов по баллам. В этом случае оценка включает в себя всех студентов, а процентиль баллов дает ранг среди всех студентов. Главное отличие в том, как справляться со связями.

Кажется, в Excel используется то, как вы оцениваете ученика относительно существующей шкалы, например, каков балл по исторической шкале GRE. Я понятия не имею, отбрасывает ли Excel одну запись, если оценка отсутствует в существующем списке.

Аналогичная проблема в статистике - это "построение позиций" для квантилей. Я не нахожу хорошую ссылку в Интернете. Вот одна общая формула http://amsglossary.allenpress.com/glossary/search?id=plotting-position1 Википедии есть только короткий параграф: http://en.wikipedia.org/wiki/Q-Q_plot

В литературе имеется большое количество случаев различного выбора b (или даже выбора второго параметра a), которые соответствуют различным аппроксимациям для разных распределений. Некоторые из них реализованы в scipy.stats.mstats.

Я не думаю, что это вопрос, который является правильным. Это то, что вы хотите использовать для этого? И каково общее определение вашей проблемы или вашей области?

Это странно, поскольку, насколько я могу судить, они делают разные вычисления, Сципи воспроизведет результат Excel, если его так назвать.

In [1]: import numpy as np
In [2]: In [2]: import scipy.stats as stats
In [3]: In [3]: ar = np.array([0.8389, 0.5176, 0.1867, 0.1953, 0.4153, 0.6036, 0.2497, 0.5188, 0.4723, 0.3963])
In [4]: In [4]: x = ar[-1]
In [5]: stats.percentileofscore(ar[:-1], x, kind='mean')
Out[5]: 33.333333333333336

используя любое из ключевых слов, я получаю тот же ответ. Это исключает значение в данных, которое точно равно запросу. Взгляните на этот алгоритм PercentRank в VBA, так как он может иметь немного понимания.

Так что правильно? Excel или Scipy?

Другие вопросы по тегам