我一直在寻找一种函数或包,可以让我以加权的方式计算分布的偏度和峰度,因为我有直方图数据。
例如,我有以下数据
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)