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.demo
funció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.demo
funció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.