2017-08-12 6 views
2
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) 

enter image description hereComment ajuster la douceur de spline

Est-il possible d'ajuster la finesse de la spline? Surtout à partir de -0,5 et au-delà, il y a des parties mobiles qui pourraient être plus lisses. J'ai regardé la documentation mais il ne semble pas y avoir un paramètre simple qui fait cela (quelque chose comme spar dans smooth.spline).

Répondre

1

loess est une méthode, mais si vous souhaitez utiliser splines, utilisez smooth.spline, pas interpolent 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") 

smoothing splines

Il y a un problème avec cette solution: noter que, dans la région négative où les points sont moins denses, l'ajustement n'est pas si bon. loess est plus local (c'est ce que le l représente), donc ça pourrait être mieux.

0

J'utiliser LOESS pour le lissage:

lines(loess.smooth(y=spl[["y"]], x=spl[["x"]], span = 0.05), col=2) 

Régler la durée au besoin.