首页 > 解决方案 > 可能性适合使用 scipy.stats 和 iminuit

问题描述

我需要用似然法拟合一些实验数据,并生成一些随机数据来检查该技术。我对(v 2.7.0)有一些经验,iminuit看起来scipy.stats有许多应该有用的现有发行版,提供 pdf/cds 和随机变量(我使用 scipy 1.5.2)。通常,我需要现有分布的组合,例如平坦分布、指数分布和三个高斯分布,全部截断。到目前为止,我正在做的是:

m = Minuit(ExtendedBinnedNLL(binnedData, binEdges, 
     lambda x, nu, a, b, c, ...: nu * td.truncFEGGG.cdf(x, a, b, c, ...)), 
     **pars)

这最后一步是目前给我带来麻烦的一步;因为我需要使用几种不同的模型,所以我lambda每次都需要编写一个不同的函数(一个容易出错的过程),如果我可以scipy.stats一劳永逸地将累积计数添加到所有分布中,那就容易多了通过该功能:truncFEGGG.cntsCumul(x, nu, a, b, c, d...). 这似乎不可行(向 scipy.stats.rv_continuous 添加方法,rv_frozen 存在问题),所以我想知道其他人将如何解决这个问题。有什么建议么?

标签: pythonscipyscipy.statsiminuit

解决方案


推荐阅读