numpy.average()
有权重选项,但 numpy.std()
没有。有没有人有解决方法的建议?
原文由 YGA 发布,翻译遵循 CC BY-SA 4.0 许可协议
numpy.average()
有权重选项,但 numpy.std()
没有。有没有人有解决方法的建议?
原文由 YGA 发布,翻译遵循 CC BY-SA 4.0 许可协议
statsmodels
中有一个类可以轻松计算加权统计信息: statsmodels.stats.weightstats.DescrStatsW
。
假设此数据集和权重:
import numpy as np
from statsmodels.stats.weightstats import DescrStatsW
array = np.array([1,2,1,2,1,2,1,3])
weights = np.ones_like(array)
weights[3] = 100
您初始化类(请注意,您必须传入校正因子,此时 的自由度 增量):
weighted_stats = DescrStatsW(array, weights=weights, ddof=0)
然后你可以计算:
.mean
加权平均值: >>> weighted_stats.mean
1.97196261682243
.std
加权标准差: >>> weighted_stats.std
0.21434289609681711
.var
加权方差: >>> weighted_stats.var
0.045942877107170932
>>> weighted_stats.std_mean
0.020818822467555047
以防万一您对标准误差和标准偏差之间的关系感兴趣:标准误差是(对于 ddof == 0
)计算为加权标准偏差除以权重总和的平方根负 1( GitHub 上 statsmodels
版本 0.9 的相应来源):
standard_error = standard_deviation / sqrt(sum(weights) - 1)
原文由 MSeifert 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
下面这个简短的“手工计算”怎么样?