Как я могу рассчитать эксцесс уже собранных данных? - PullRequest
0 голосов
/ 29 января 2019

Кто-нибудь знает, как рассчитать эксцесс распределения из одних только двоичных данных, используя Python?

У меня есть гистограмма распределения, но нет необработанных данных.Есть две колонки;один с номером корзины и один с номером счета.Мне нужно вычислить эксцесс распределения.

Если бы у меня были необработанные данные, я мог бы использовать функцию scipy для вычисления эксцесса.Я не вижу ничего в этой документации для расчета с использованием данных в двоичном виде.https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.kurtosis.html

Параметр статистики binned с помощью scipy позволяет рассчитывать эксцесс в бине, но только с использованием необработанных данных и только в бинах.https://docs.scipy.org/doc/scipy-0.16.0/reference/generated/scipy.stats.binned_statistic.html

Редактировать: Пример данных.Я мог бы попытаться повторить выборку из этого, чтобы создать свои собственные фиктивные необработанные данные, но у меня есть около 140 тыс. Таких данных для работы каждый день, и я надеялся на что-то встроенное.

Index,Bin,Count
 0, 730, 30
 1, 735, 45
 2, 740, 41
 3, 745, 62
 4, 750, 80
 5, 755, 96
 6, 760, 94
 7, 765, 90
 8, 770, 103
 9, 775, 96
10, 780, 95
11, 785, 109
12, 790, 102
13, 795, 99
14, 800, 93
15, 805, 101
16, 810, 109
17, 815, 98
18, 820, 89
19, 825, 62
20, 830, 71
21, 835, 69
22, 840, 58
23, 845, 50
24, 850, 42

1 Ответ

0 голосов
/ 30 января 2019

Вы можете просто рассчитать статистику напрямую.Если x - это номера ваших бинов, а y - это количество для каждого бина, то ожидаемое значение f(x) равно np.sum(y*f(x))/np.sum(y).Мы можем использовать это, чтобы перевести формулу для куртоза в следующий код:

total = np.sum(y)
mean = np.sum(y * x) / total
variance = np.sum(y * (x - mean)**2) / total
kurtosis = np.sum(y * (x - mean)**4) / (variance**2 * total)

Обратите внимание, что куртоз и избыточный куртоз - это не одно и то же.

...