2

我正在尝试使用 scipy's 将三次样条拟合到时间序列中interpolate.splrep。但是,如果不通过肉眼手动调整,我无法确定如何确定有效的平滑条件。似乎应该有一种方法来计算这个条件。

根据文档,平滑条件应以这种方式确定:

s 的推荐值取决于权重 w。如果权重表示 y 的标准差的倒数,则应在 (m-sqrt(2*m),m+sqrt(2*m)) 范围内找到一个好的 s 值,其中 m 是x、y 和 w 中的数据点。默认值:如果提供了权重,则为 s=m-sqrt(2*m)。如果没有提供权重,s = 0.0(插值)。

但是,经过大量测试,我无法让它工作(平滑不为零)。“拟合”通常最终看起来像一个任意的 3 次多项式。我正在处理一个数据集,该数据集在正确拟合时应该是一个高度多项式。仅仅通过摆弄平滑条件,我发现 s = 1E-9 可以很好地平衡接近度和平滑度(我正在对数据使用权重)。

有谁知道发生了什么?

我使用三次样条曲线而不是其他插值方法是有原因的,但我想知道我是否应该寻找其他地方......

4

0 回答 0