我怎样才能找到曲线的最佳拟合,其中一个参数在 Python 中具有对数正态分布

How can I find the best fit of a curve where one of the paramters has a Lognormal distribution in Python

在我一直从事的一个项目中,我一直在使用 SciPy 的 optimize.curve_fit() 函数将曲线拟合到图形中改变 3 个参数。正如您在图表 here 中看到的那样,其中一个参数 (c) 需要根据另一个参数 (Mhalo) 限制在限制范围内。

作为项目的下一步,我想更改此关系,而不是在基于 Mhalo 的限制范围内改变 c,如图所示,c 参数在 Mhalo-c 关系周围呈对数正态分布。

当我尝试通过从 optimize.curve_fit() 函数中的变量中取出 c 并将随机对数正态计算放入函数中时相反,我正在拟合,程序根本无法拟合曲线(可能是因为随机元素)。

有什么方法可以使用 optimize.curve_fit() 或 Python 中的不同函数来完成我在此处描述的内容?

这与 . It is not quite a duplicate. As mentioned there, it would definitely help to give more details of what you're trying to do. Post example code, following the guidelines at https://whosebug.com/help/mcve 有关。否则,我们真的不知道您要做什么。

例如,我不知道应该在图表中看到什么。就像 cMhalo 意味着拟合参数?

如前一个问题中所述,您可能会发现 lmfit 有帮助。它可以允许将一个参数定义为其他参数的简单(或可能不那么简单)数学表达式。例如,您想要做的可能是将 c 约束为 Mhalo 的某个函数加上某个具有有限边界的项。这可能在 lmfit 中用

之类的东西完成
 from lmfit import Parameters

 params = Parameters()
 params.add('mhalo', value=100, vary=True)
 params.add('c_offset', value=0, min=-1, max=1, vary=True) 

 params.add('c', expr='log10(mhalo) + c_offset')

这将允许 mhalo 自由变化,允许 c_offset 在范围内变化,并将 c 约束为这两个参数的函数,这意味着 c 可以在拟合中改变,但不能独立于 mhaloc_offset

这就是您想要做的事情吗?真的,我不知道。要获得更具体的答案,您必须提出更具体的问题。