【发布时间】:2020-04-25 17:41:13
【问题描述】:
我想将一些数据点拟合到正态分布,但我找不到可以让我输入数据点权重的函数。 scipy.stats.norm.fit 只需要一些数据,如有必要,loc 和 scale 参数用于平均值和标准差。
我的数据权重是浮点数,所以我不能使用Fit normal distribution to weighted list 中描述的解决方案,原因很明显。
values = [0, 1, 2, 3, ..., 44, 52]
weights = [0.06537925227866273, 0.9735569357920033, 3.1333312174908325, 5.558819116316957, ..., 0.0070813375592937555, 0.040237487324237445]
对我来说,将权重乘以 100 然后使用round() 并不是一个好的解决方案,因为权重可能会变得更小。
【问题讨论】:
-
您想“将一些数据点拟合到正态分布”,还是将正态分布的参数拟合到数据点?你试过scipy.optimize.minimize吗?
-
确实,我有数据点,我想对其进行正态分布。我没有尝试过 scipy.optimize.minimize,我不确定如何使用它:我是否必须实现一个使用卡方、2 个参数(avg 和 stdev)以及我的值和权重作为固定参数的函数?
-
您的函数应该有 2 个拟合参数(均值和 sigma)。您的
values和weights也必须通过。该函数计算values的概率并返回诊断结果这些与标准化weights的匹配程度。这个诊断可以是 chi2。
标签: python scipy curve-fitting