Hier ist ein R-Code / Beispiel, mit dem Sie die Passungen für eine Löß-Passung und eine Spline-Passung vergleichen können:
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 )
Sie können es mit Ihren Daten versuchen und den Code ändern, um andere Typen oder Optionen auszuprobieren. Sie können sich auch die loess.demo
Funktion im TeachingDemos-Paket ansehen, um besser zu verstehen, was der Löß-Algorithmus tut. Beachten Sie, dass das, was Sie von Löß sehen, häufig eine Kombination von Löß mit einer zweiten Interpolationsglättung ist (manchmal selbst ein Spline). Die loess.demo
Funktion zeigt tatsächlich sowohl die geglättete als auch die rohe Lößanpassung an.
Theoretisch können Sie immer einen Spline finden, der einer anderen stetigen Funktion so nahe kommt, wie Sie möchten, aber es ist unwahrscheinlich, dass es eine einfache Auswahl von Knoten gibt, die zuverlässig eine enge Annäherung an eine Lößanpassung für einen beliebigen Datensatz ergibt.