Я искал функцию или пакет, который позволил бы мне вычислить перекос и эксцесс распределения взвешенным способом, поскольку у меня есть данные гистограммы.
Например, у меня есть данные
import numpy as np
np.array([[1, 2],
[2, 5],
[3, 6],
[4,12],
[5, 1])
где первый столбец [1,2,3,4,5]
- значения, а второй столбец [2,5,6,12,1]
- частоты значений.
Я выяснил, как сделать первые два момента (среднее, стандартное отклонение) взвешенным способом, используя функцию weighted_avg_and_std
, указанную в эту ветку, но я не совсем понимал, как я могу распространить это на перекос и эксцесс, или даже на n-й статистический момент.
Я нашел сами определения здесь и мог бы вручную написать функции для реализации этого с нуля, но прежде чем я пойду и сделать это. Мне было интересно, существуют ли какие-либо существующие пакеты или функции, которые могли бы это сделать.
Спасибо
РЕДАКТИРОВАТЬ: я понял это, следующий код работает (обратите внимание, что это для моментов населения)
skewnewss = np.average(((values-average)/np.sqrt(variance))**3, weights=weights)
и
kurtosis=np.average(((values-average)/np.sqrt(variance))**4-3, weights=weights)