Python: Weighted coefficient of variation

独自空忆成欢 提交于 2019-12-01 11:19:53

问题


How can I calculate the weighted coefficient of variation (CV) over a NumPy array in Python? It's okay to use any popular third-party Python package for this purpose.

I can calculate the CV using scipy.stats.variation, but it's not weighted.

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

回答1:


This can be done using the statsmodels.stats.weightstats.DescrStatsW class in the statsmodels package for calculating weighted statistics.

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

For a related statistic, i.e. the weighted gini, see this answer.


Credit: This answer is motivated by one on calculating the weighted standard deviation.



来源:https://stackoverflow.com/questions/53748540/python-weighted-coefficient-of-variation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!