Ich brauche Hilfe bei der Anpassung der Glättung an meine Zeitreihendaten. Der folgende Code glättet die Daten unter Verwendung der Funktionen sm.regression
und approx
, aber der Grad der Glättung wird nicht vom Benutzer gesteuert, d. H. Durch Änderung von Funktionsparametern möchte ich steuern können, ob die geglättete Kurve den zugrunde liegenden Daten näher oder weniger nahe kommt.Kontrollieren Sie den Grad der Glättung in meinem einfachen Kernel Smoothing Code
find.extrema <- function(x)
{
if(is.xts(x)) {
y = as.vector(Cl(x))
} else {
y = x
}
n = len(y)
t = 1:n
h = h.select(t, y, method = 'cv')
temp = sm.regression(t, y, h=h, display = 'none')
mhat = approx(temp$eval.points, temp$estimate, t, method='linear')$y
#mhat = y #to exactly match underlying data
return (mhat)
}
Jede Hilfe wäre willkommen.
Danke.
Woher kommt 'sm.regression'? Warum verwenden Sie nicht eine der vielen R-Optionen von 'smooth.spline' und' löß' für alle GAMs, die Sie sich ausdenken können? – alistaire
@ZheyuanLi: Danke, mir ging die Zeit knapp, und habe keine Erfahrung in R. Deshalb habe ich meine vorherige Frage gelöscht, bearbeitet, um es so klar wie möglich zu machen, mit meiner begrenzten Kenntnis von R. – user1517108