Ось декілька код / приклад R, який дозволить вам порівняти пристосування для лесса і шпонки:
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 )
Ви можете спробувати його зі своїми даними та змінити код, щоб спробувати інші типи чи параметри. Ви також можете переглянути loess.demo
функцію в пакеті TeachingDemos для кращого розуміння того, що робить алгоритм льосу. Зауважте, що те, що ви бачите з льосу, - це часто комбінація льосу з другим згладжуванням інтерполяції (іноді сама сплайн), loess.demo
функція фактично показує як згладжений, так і сирий лесовий придатність.
Теоретично ви завжди можете знайти сплайн, який наближає іншу безперервну функцію так близько, як вам захочеться, але навряд чи знайдеться простий вибір вузлів, який надійно дасть близьке наближення до льосового розміру для будь-якого набору даних.