我想将单调增加的平滑样条拟合到单调增加的数据,同时指定结数并给出起点和终点。
这个问题(如何使用 smooth.spline() 函数制作单调(递增)平滑样条线?)解释了如何制作单调递增样条线,但在指定节点或端点的数量时不解释。
函数
bs
和 smooth.spline
使我能够充分控制样条函数,但不会产生单调递增的样条曲线。
函数
spline
和 splinefun
,通过海曼滤波,可以产生单调递增的样条曲线,但不允许控制结的数量。
出于复制目的,代码
y <- 1 - (1 / cumsum(abs(rnorm(25))))
生成的数据与我的数据类似。
我最终在这个有用的要点中找到了答案:https://gist.github.com/jnpaulson/c47f9bd3246f1121ad3a911e5f707355