scipy 如何在Python中找到其中一个参数具有对数正态分布的曲线的最佳拟合

wtlkbnrh  于 12个月前  发布在  Python
关注(0)|答案(1)|浏览(103)

在我一直在做的一个项目中,我一直在使用SciPy的**optimize.curve_fit()函数,通过改变3个参数来拟合曲线。其中一个参数(c)需要根据另一个参数(Mhalo)限制在限制范围内,如图here所示。
作为项目的下一步,我想改变这个关系,这样c参数就不会在基于Mhalo的限制内变化,如图所示,c参数在Mhalo-c关系周围具有对数正态分布。
当我试图通过将c从
optimize.curve_fit()函数中的变量中取出,并将随机对数正态计算放在我要拟合的函数中来实现这一点时,程序根本无法拟合曲线(可能是因为随机元素)。
有没有什么方法可以实现我在这里描述的,使用
optimize.curve_fit()**或Python中的其他函数?

5lhxktic

5lhxktic1#

已锁定1天。此时有disputes about this answer’s content正在解决。它当前不接受新的交互。

这与我需要一个可以在参数空间内拟合曲线的Python函数有关。它不完全是重复的。
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

相关问题