我有一个由
生成的加权直方图import numpy as np
import matplotlib.pyplot as plt
data = np.loadtxt('count_rate_data.txt')
hist_bin = [118,121,124,127,130,133,136,139,142,145,148,151,154,157,160,163,166,169,172,175,178,181,184,187,189]
weights=np.ones_like(data)/float(len(data))
plt.hist(data, hist_bin, weights=weights)
plt.grid()
plt.show()
我想拟合一个加权到相同程度的正态分布。我怎么做?我知道如何将正态分布拟合到未加权的直方图。但我不确定如何将正常直方图拟合到加权直方图。
答案 0 :(得分:0)
以下步骤对我有用。
获取加权和:
sums, bins = np.histogram(data, hist_bin, weights=weights)
从中进行连续分配:
hist_dist = scipy.stats.rv_histogram((sums, bins))
从此分布创建一个随机样本:
weighted_data = hist_dist.rvs(size=100000)
并适合您选择的另一种分布,例如正常分布:
mean, stdev = scipy.stats.norm.fit(weighted_data)