【发布时间】:2014-08-22 13:17:33
【问题描述】:
我有严格递增的数据,并且由于该函数易于使用,如果可能的话,我希望使用 smooth.spline() 函数拟合单调递增的平滑样条曲线。
比如我的数据可以通过例子有效复现:
testx <- 1:100
testy <- abs(rnorm(length(testx)))^3
testy <- cumsum(testy)
plot(testx,testy)
sspl <- smooth.spline(testx,testy)
lines(sspl,col="blue")
这不一定在所有地方都在增加。有什么建议吗?
【问题讨论】:
-
你可以改变一些参数来产生你想要的行为;这可能必须根据具体情况进行。
sspl <- smooth.spline(testx,testy,tol = 3)(或分箱)适用于这个特定的数据集。 -
谢谢!不幸的是,我正在寻找一个通用的解决方案。 IE。我的数据总是单调的,但每次运行样条曲线时都会有所不同。
-
鉴于数据是单调递增的,那么样条曲线真的最有意义吗?为什么不拟合单调递增函数?只是一个想法。
-
您也可以查看
lowess作为替代拟合方法。可以使用f参数调整粒度。概括地说,您可以将其包装在一个方法中以尝试参数选项并检查min(diff(sspl$y,1))以确保单调行为。