【发布时间】:2014-01-30 14:01:16
【问题描述】:
我知道如何使用 SCipy 库 (Fitting a histogram with python) 将输入直方图的数据拟合成正态分布,但如果在数据之上我还有一组具有相同维度的权重,我怎么能做到这一点。是否有合适的功能,或者我应该创建第二个由数据提供的数组并自己加权?
干杯。
编辑:
这几乎已经在这里回答了:
【问题讨论】:
我知道如何使用 SCipy 库 (Fitting a histogram with python) 将输入直方图的数据拟合成正态分布,但如果在数据之上我还有一组具有相同维度的权重,我怎么能做到这一点。是否有合适的功能,或者我应该创建第二个由数据提供的数组并自己加权?
干杯。
编辑:
这几乎已经在这里回答了:
【问题讨论】:
如果您正在寻找正态分布 N(mu, sigma) 您可以根据输入数据准确计算出 mu 和 sigma。
例如:X = x1,...,xN 是值,W = w1,...,wN 是它们的权重
mu = sum (X * W) / sum(W)
sigma = np.sqrt (sum (W * (X- mu)**2) / sum(W))
如果您要适应另一种分布,我建议使用 OpenTURNS 库回答here。
【讨论】:
只需使用scipy.histogram 上的权重参数并传入您的权重数组:
scipy.stats.histogram(a, numbins=10, defaultlimits=None, weights=None, printextras=False)
来自文档:
weights : array_like, optional a 中每个值的权重。 默认为无,即为每个值赋予 1.0 的权重
注意:自 v1.0 起,scipy does not have the function histogram,但自 v1.11 起 histogram appears in numpy,具有相似(但不相同)的调用签名,包括 weights= 参数:
numpy.histogram(a, bins=10, range=None, normed=False, weights=None, density=None)
【讨论】: