Drop-Linien von den tatsächlichen modelliert Punkte in R
Frage
Gestern habe ich arbeitete ein Beispiel der Unterschied zwischen Ordinary Least Squares (OLS) vs. Hauptkomponentenanalyse (PCA) auf. Für diese Darstellung wollte ich die Fehler von OLS und PCA minimiert zeigen, damit ich die Istdaten aufgetragen, um die vorhergesagte Linie und dann manuell I (mit GIMP) zog in einer Drop-Leitung ein paar der Fehler Begriffe zu erläutern. Wie kann ich die Erstellung der Fehlerzeilen in R-Code? Hier ist der Code, den ich für mein Beispiel verwendet:
set.seed(2)
x <- 1:100
y <- 20 + 3 * x
e <- rnorm(100, 0, 60)
y <- 20 + 3 * x + e
plot(x,y)
yx.lm <- lm(y ~ x)
lines(x, predict(yx.lm), col="red")
Dann manuell hinzugefügt ich die gelben Linien die folgenden erzeugen:
Lösung
?segments
würde ich ein Beispiel nennen, aber ich bin heute ziemlich beschäftigt und es ist nicht, dass die Punkte holen kompliziert. ; -)
Okay, also bin ich nicht , die beschäftigt ...
n=58; segments(x[n],y[n],x[n],predict(yx.lm)[n])
n=65; segments(x[n],y[n],x[n],predict(yx.lm)[n])
Andere Tipps
Als Joshua erwähnt, ist segments()
der Weg hier zu gehen. Und wie es total vektorisiert ist, können wir in allen Fehlern auf einmal hinzufügen, im Anschluss an Ihrem Beispiel
set.seed(2)
x <- 1:100
y <- 20 + 3 * x
e <- rnorm(100, 0, 60)
y <- 20 + 3 * x + e
plot(x,y)
yx.lm <- lm(y ~ x)
lines(x, predict(yx.lm), col="red")
## Add segments
segments(x, y, x, fitted(yx.lm), col = "blue")
Wenn Sie nur ein paar der Fehler hervorheben möchten, dann das Beispiel zu ändern Joshua gab:
n <- c(58,65)
segments(x[n], y[n], x[n], fitted(yx.lm)[n], col = "orange", lwd = 3)
HTH
G