Aquí hay un código / ejemplo R que le permitirá comparar los ajustes para un ajuste de loess y un ajuste de spline:
library(TeachingDemos)
library(splines)
tmpfun <- function(x,y,span=.75,df=3) {
plot(x,y)
fit1 <- lm(y ~ ns(x,df))
xx <- seq( min(x), max(x), length.out=250 )
yy <- predict(fit1, data.frame(x=xx))
lines(xx,yy, col='blue')
fit2 <- loess(y~x, span=span)
yy <- predict(fit2, data.frame(x=xx))
lines(xx,yy, col='green')
invisible(NULL)
}
tmplst <- list(
span=list('slider', from=0.1, to=1.5, resolution=0.05, init=0.75),
df=list('slider', from=3, to=25, resolution=1, init=3))
tkexamp( tmpfun(ethanol$E, ethanol$NOx), tmplst )
Puede probarlo con sus datos y cambiar el código para probar otros tipos u opciones. También es posible que desee ver la loess.demofunción en el paquete TeachingDemos para comprender mejor qué hace el algoritmo loess. Tenga en cuenta que lo que ve de loess es a menudo una combinación de loess con un segundo suavizado de interpolación (a veces en sí mismo una spline), la loess.demofunción en realidad muestra el ajuste de loess suavizado y sin procesar.
Teóricamente, siempre puede encontrar una spline que se aproxime a otra función continua tan cerca como desee, pero es poco probable que haya una elección simple de nudos que brinden una aproximación cercana a un ajuste de loess para cualquier conjunto de datos.