Python:加权变异系数


问题内容

如何在Python中的NumPy数组上计算 加权
变异系数
(CV)?为此,可以使用任何流行的第三方Python软件包。

我可以使用来计算CV
scipy.stats.variation,但未加权。

import numpy as np
from scipy.stats import variation

arr = np.arange(-5, 5)
weights = np.arange(9, -1, -1)  # Same size as arr
cv = abs(variation(arr))  # Isn't weighted

问题答案:

可以使用包中的statsmodels.stats.weightstats.DescrStatsWstatsmodels来计算加权统计信息

from statsmodels.stats.weightstats import DescrStatsW

arr = np.arange(-5, 5)
weights = np.arange(9, -1, -1)  # Same size as arr

dsw = DescrStatsW(arr, weights)
cv = dsw.std / abs(dsw.mean)  # weighted std / abs of weighted mean

print(cv)
1.6583123951777001

有关相关统计信息(即加权基尼),请参见此答案


信用:这个答案是由一个在计算加权标准差时得出的。