Как я могу рассчитать эксцесс уже собранных данных?
Кто-нибудь знает, как рассчитать эксцесс распределения из одних только двоичных данных, используя Python?
У меня есть гистограмма распределения, но не сырые данные. Есть две колонки; один с номером корзины и один с номером счета. Мне нужно рассчитать эксцесс распределения.
Если бы у меня были необработанные данные, я мог бы использовать функцию scipy для вычисления эксцесса. Я не вижу ничего в этой документации для расчета с использованием данных в двоичном виде. https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.kurtosis.html
Опция binned statistics с scipy позволяет вам вычислить эксцесс в пределах bin, но только с использованием необработанных данных и только внутри bin. 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 ответ
Вы можете просто рассчитать статистику напрямую. Если 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)
Обратите внимание, что куртоз и избыточный куртоз - это не одно и то же.