Python 用正态分布拟合加权直方图
我知道如何使用SCipy库将进入直方图的数据拟合为正态分布,但如果在数据的基础上,我有一个具有相同维度的权重数组,我又怎么能做到同样的事情呢。是否有一个适当的函数,或者我应该创建一个由数据提供的第二个数组并自己对其进行加权 干杯 编辑: 这里已经回答了这个问题:Python 用正态分布拟合加权直方图,python,scipy,histogram,Python,Scipy,Histogram,我知道如何使用SCipy库将进入直方图的数据拟合为正态分布,但如果在数据的基础上,我有一个具有相同维度的权重数组,我又怎么能做到同样的事情呢。是否有一个适当的函数,或者我应该创建一个由数据提供的第二个数组并自己对其进行加权 干杯 编辑: 这里已经回答了这个问题: 只需打开“权重”参数并传入权重数组: scipy.stats.histogram(a, numbins=10, defaultlimits=None, weights=None, printextras=False) 从文档中: 权重
只需打开“权重”参数并传入权重数组:
scipy.stats.histogram(a, numbins=10, defaultlimits=None, weights=None, printextras=False)
从文档中:
权重:类似于数组,可选a中每个值的权重。
默认值为“无”,这使每个值的权重为1.0
注意:从v1.0开始,但从v1.11开始,具有类似但不完全相同的调用签名,其中包括weights=参数:
numpy.histogram(a, bins=10, range=None, normed=False, weights=None, density=None)
如果你正在寻找一个正态分布的Nmu,西格玛 您可以根据输入数据精确计算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库进行解答。Hum,我一直在使用它绘制加权数据,但我也想拟合它,同时考虑权重。虽然无法使用scipy.stats.norm.fit方法,但它似乎没有附加权重参数。如果您希望通过编程方式生成权重,也许可以看看这个,嗯,这似乎不是我想要的,我想要一个加权直方图的均值和方差的估计值,以及它看起来有多像正态分布而不是从中生成样本。它看起来有多像正态分布真的没有任何意义。检查样本的平均值及其方差,看它是否接近正常值,但这与直方图无关。直方图只是一种视觉表现。如果你想用一种比普通方法更容易的方式查看你的样本,你可以使用。至于计算加权平均值和方差,你的问题的关键似乎是,我相信你可以想象如何在python中实现它,有一个函数用于这样一个基本的计算。那就用一个