我正在尝试使用scipy的interpolate.splrep
将三次样条拟合到时间序列。但是,我无法确定如何确定有效的平滑条件,而无需通过眼睛手动调整。似乎应该有办法计算这个条件。
根据docs,平滑条件应以这种方式确定:
s的推荐值取决于权重w。如果权重代表y的标准偏差的倒数,那么应该在范围内找到一个好的s值(m-sqrt(2 * m),m + sqrt(2 * m))其中m是数量x,y和w中的数据点。默认值:如果提供了权重,则s = m-sqrt(2 * m)。如果没有提供权重,则s = 0.0(插值)。
然而,经过大量测试后,我无法使其工作(平滑非零)。 “拟合”通常最终看起来像任意的3次多项式。我正在处理一个数据集,当正确拟合时,该数据集应该是高次多项式。只是摆弄平滑条件,我发现s = 1E-9平衡接近度和平滑(我使用权重与数据)。
有没有人有任何想法发生了什么?
有理由我使用立方样条而不是其他插值方法,但我想知道我是否应该在别处寻找...