2016-10-08 3 views
3

Ich verwende lowess Funktion, um eine Regression zwischen zwei Variablen x und y anzupassen. Jetzt möchte ich den angepassten Wert bei einem neuen Wert von x wissen. Wie finde ich beispielsweise den angepassten Wert unter x=2.5 im folgenden Beispiel. Ich weiß, loess kann das tun, aber ich möchte jemandes Grundstück reproduzieren und er verwendete lowess.Vorhersage bei einem neuen Wert mit Lowess-Funktion in R

set.seed(1) 
x <- 1:10 
y <- x + rnorm(x) 
fit <- lowess(x, y) 
plot(x, y) 
lines(fit) 

enter image description here

Antwort

2

Lokale Regression (Lowess) ist ein nicht-parametrisches statistisches Verfahren, es ist nicht lineare Regression wie ein, wo Sie das Modell direkt neue Werte zu schätzen, verwenden können.

Sie müssen die Werte von der Funktion nehmen (deshalb gibt es nur eine Liste für Sie zurück) und wählen Sie Ihr eigenes Interpolationsschema. Verwenden Sie das Schema, um Ihre neuen Punkte vorherzusagen.

übliche Technik ist die Spline-Interpolation (aber es sind andere):

https://www.r-bloggers.com/interpolation-and-smoothing-functions-in-base-r/

EDIT: Ich bin ziemlich sicher, dass die predict Funktion, um die Interpolation für Sie tut. Ich kann auch keine Informationen darüber finden, was genau predict verwendet, also habe ich versucht, den Quellcode zu verfolgen.

https://github.com/wch/r-source/blob/af7f52f70101960861e5d995d3a4bec010bc89e6/src/library/stats/R/loess.R

else { ## interpolate 
## need to eliminate points outside original range - not in pred_ 

Ich bin der R-Code sicher, die zugrunde liegenden C-Implementierung ruft, aber es ist nicht gut dokumentiert, damit ich weiß nicht, was Algorithmus verwendet es.

Mein Vorschlag ist: Vertrauen Sie entweder der predict Funktion oder rollen Sie Ihren eigenen Interpolationsalgorithmus aus.

+0

Danke. In 'Löss' können Sie' cars.lo <- Löss (dist ~ speed, autos) verwenden; vorhersagen (cars.lo, data.frame (speed = seq (5, 30, 1)), se = TRUE) 'um die Vorhersage auf einen neuen Wert' x' zu bekommen. Wissen Sie, welche Interpolationsmethode hier verwendet wird? Ich kann es nicht in seiner Hilfedatei finden. –

+0

@PatrickLi Wie ich bereits erklärt habe, interpoliert die Funktion für Sie. Ich schaue, welches Schema es verwendet, sobald ich es gefunden habe, werde ich die Antwort aktualisieren. – SmallChess

+0

@PatrickLi Ich habe versucht, es zu verfolgen, aber nicht vollständig erfolgreich. Schau dir meine EDITED an. – SmallChess

Verwandte Themen