如何让拟合函数定义拟合范围?

时间:2019-02-11 11:10:26

标签: python curve-fitting lmfit

我想使用lmfit使用python来拟合我的部分数据(这不是必须的!)。我想动态拟合数据范围,这意味着有两个拟合参数定义了我要拟合的数据部分(我们称其上下边界)。 原因是我有很多数据集。每个拟合范围都不同,因此我无法定义一个模型来拟合整个数据范围。另一方面,我无法遍历每个数据集并定义拟合范围。 有可能吗?我想到将脉冲函数乘以我的模型,这也会影响原始数据。尽管据我了解,我无法告诉lmfit将其乘以数据。所以我不知道了!

orange line is the fit, blue dots are the fitted data, and the light green dots are the excluded data

1 个答案:

答案 0 :(得分:2)

由模型函数或要最小化的函数返回的观测值(数据点或残差数组的长度)的数量在整个拟合过程中必须相同。当然,这可以在连续拟合之间改变。因此,您可以为每个具有不同范围的数据集尝试多个拟合,这些拟合可能基于先前的拟合。

我认为您使用“合适的位置不好”来确定不适合的位置的想法有些可疑,并且您将要确保避免那导致荒谬结果的想法。例如,如果范围自动缩小得如此之大,以至于Ndata = Nvariables + 1,则与Ndata = 100 * Nvariables相比,您可能会得到非常低的卡方。

在不了解细节的情况下,我认为您最好提出选择标准的标准,该标准仅取决于数据,而不适合数据。