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