Oto kod R / przykład, który pozwoli ci porównać pasowanie dla dopasowania mniejszego i dopasowania do splajnu:
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 )
Możesz spróbować z danymi i zmienić kod, aby wypróbować inne typy lub opcje. Możesz także przyjrzeć się loess.demo
funkcji w pakiecie TeachingDemos, aby lepiej zrozumieć, co robi algorytm lessa. Zauważ, że to, co widzisz z lessu, jest często kombinacją lessa z drugim wygładzaniem interpolacji (czasem sam splajn), loess.demo
funkcja faktycznie pokazuje zarówno wygładzone, jak i surowe dopasowanie lessa.
Teoretycznie zawsze można znaleźć splajn, który przybliża inną funkcję ciągłą tak blisko, jak chcesz, ale jest mało prawdopodobne, aby istniał prosty wybór węzłów, który niezawodnie zapewni ścisłe przybliżenie mniejszego dopasowania dla dowolnego zestawu danych.