Я искал функцию или пакет, который позволил бы мне рассчитать асимметрию и скачок распределения взвешенным способом, поскольку у меня есть данные гистограммы.
Например, у меня есть данные
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-й статистический момент.
Я нашел сами определения здесь и мог бы вручную написать функции для реализации этого с нуля, но до того, как я go и сделал это, мне было интересно, существуют ли какие-либо существующие пакеты или функции который мог бы сделать это.
Спасибо
РЕДАКТИРОВАТЬ: я понял, следующий код работает (обратите внимание, что это для населения моменты)
skewnewss = np.average(((values-average)/np.sqrt(variance))**3, weights=weights)
и
kurtosis=np.average(((values-average)/np.sqrt(variance))**4-3, weights=weights)