Python 中的曲线拟合用于外推、回归分析

Curve Fitting in Python for extrapolation, Regression analysis

这个问题是关于 python 中的曲线拟合的。

首先,我想说我不知道​​要插入scipy库中的"curve_fit"函数的曲线拟合函数;因此,我正在尝试使用 polyfit,如果我对插值感兴趣,这是可以的,但我的目标是预测未来点的值,换句话说就是外推。

我附上了原始信号的屏幕截图,经过平滑处理及其 polyfit 结果。 它具有正确的多边形顺序,但外推时仍然失败。我的结论是 poly fit 在这里不是正确的方法,但我无法估计曲线函数。你有什么想法?

请注意,这不是分布,因为 y 值可能会无限缓慢地下降,甚至低于 0。

我会说该函数看起来像指数高斯函数,但它又不是分布,所以不想那样做。

我最后的想法是将图一分为二,第一个模型当然可以建模为多项式,第二个模型可以建模为指数。 (值与第一个 png 不同,因为它具有不同的信号)。 然后,也许将两者结合起来。你怎么看待这件事? 附件也是这个的截图。

由于许多曲线可以拟合数据并进行不同的推断,因此您需要选择正确的基函数以获得所需的行为。

到目前为止,您已经尝试过多项式,例如,这些趋向于 +- 无穷大,这可能不是您想要的。

我会尝试对 Hermite 多项式或 Laguerre 多项式求和使用 curve_fit。例如,对于拉盖尔多项式,您可以尝试

a + b*exp(-k x) + c*(1-x)*exp(-k x) + d*(x^2 - 4*x + 2)*exp(-k x) + ...

Python 有很多内置的便利功能,参见例如https://docs.scipy.org/doc/numpy-1.13.0/reference/routines.polynomials.laguerre.html

但是请注意,您还应该将 k 拟合到您的数据中,您可以使用 curve_fit