【发布时间】:2021-03-29 11:10:56
【问题描述】:
我使用我的实验数据的 matplotlib 创建了一个直方图,其中包括测量值和重量。使用 plt.hist 的 weights 参数将事件加权在一起没有问题,但是当我查看错误栏的选项时,似乎没有考虑到事件权重。这个问题的解决方案是泊松错误或到处都使用相同的错误,比如this one,但这并不能解决我的问题。
一个 bin 的误差应在数学上计算为 err(bin) = sqrt( sum {w_i^2} ) 其中 w_i 是属于该 bin 的事件的各个权重。
下面给出了我的直方图的简化示例。
import matplotlib.pyplot as plt
data=[1,8,5,4,1,10,8,3,6,7]
weights=[1.3,0.2,0.01,0.9,0.4,1.05,0.6,0.6,0.8,1.8]
plt.hist(data, bins = [0.0,2.5,5.0,7.5,10.0], weights=weights)
plt.show()
【问题讨论】:
-
您想将每个 bin 的加权标准差绘制为误差?
-
不,权重不是 stddev 而是重要性,其中权重越高意味着对最终结果越重要。
-
是的,我的意思是使用权重来计算标准差?像
sum [(bin_center-x)**2 * weight for x in data_in_bin] / total_bin_weights这样的东西? (在 cmets 中格式化数学很丑,但我希望你明白了) -
好吧,编辑简化了事情(加权标准差相当棘手)。
-
我想你是对的,我可以做到。我已经添加了关于如何在不通过 stddev 的情况下对重要性进行加权的数学。
标签: python matplotlib