如何调整样条曲线的平滑度
How to adjust smoothness of spline
set.seed(1); x <- round(rnorm(30), 1); y <- sin(pi * x) + rnorm(30)/10
plot(x, y, main = "spline(x,y) when x has ties")
lines(spline(x, y, n = 201), col = 2)
有没有办法调整样条曲线的平滑度?特别是从 -0.5 开始,有些摇摆不定的部分可能会更平滑。我查看了文档,但似乎没有一个简单的参数可以执行此操作(类似于 smooth.spline
中的 spar
)。
我会使用 LOESS 进行平滑处理:
lines(loess.smooth(y=spl[["y"]], x=spl[["x"]], span = 0.05), col=2)
根据需要调整跨度。
loess 是一种方法,但如果你想使用样条曲线,请使用 smooth.spline
,而不是插值 spline
set.seed(1);
x <- round(rnorm(30), 1);
y <- sin(pi * x) + rnorm(30)/10
plot(x, y, main = "spline(x,y) when x has ties")
sm <- smooth.spline(x, y, spar = 0.5) # play with spar
pred <- predict(sm, seq(-2, 2, by = 0.1))
lines(pred, col = "red")
此解决方案存在一个问题:请注意,在点密度较低的负区域中,拟合不是很好。 loess
更本地化(这就是 l 的意思),所以它可能会更好。
set.seed(1); x <- round(rnorm(30), 1); y <- sin(pi * x) + rnorm(30)/10
plot(x, y, main = "spline(x,y) when x has ties")
lines(spline(x, y, n = 201), col = 2)
有没有办法调整样条曲线的平滑度?特别是从 -0.5 开始,有些摇摆不定的部分可能会更平滑。我查看了文档,但似乎没有一个简单的参数可以执行此操作(类似于 smooth.spline
中的 spar
)。
我会使用 LOESS 进行平滑处理:
lines(loess.smooth(y=spl[["y"]], x=spl[["x"]], span = 0.05), col=2)
根据需要调整跨度。
loess 是一种方法,但如果你想使用样条曲线,请使用 smooth.spline
,而不是插值 spline
set.seed(1);
x <- round(rnorm(30), 1);
y <- sin(pi * x) + rnorm(30)/10
plot(x, y, main = "spline(x,y) when x has ties")
sm <- smooth.spline(x, y, spar = 0.5) # play with spar
pred <- predict(sm, seq(-2, 2, by = 0.1))
lines(pred, col = "red")
此解决方案存在一个问题:请注意,在点密度较低的负区域中,拟合不是很好。 loess
更本地化(这就是 l 的意思),所以它可能会更好。