Domanda

Ieri ho lavorato l'esempio di la differenza tra i minimi quadrati ordinari (OLS) vs. analisi delle componenti principali (PCA). Per tale illustrazione ho voluto dimostrare gli errori minimizzati con OLS e PCA così ho tracciato valori effettivi, la linea prevista e poi manualmente (con GIMP) disegnato in una linea di discesa per illustrare un paio dei termini di errore. Come faccio a codificare la creazione delle linee di errore in R? Ecco il codice che ho usato per il mio esempio:

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")

Poi ho aggiunto manualmente le linee gialle per produrre la seguente:

alt text

È stato utile?

Soluzione

?segments

mi piacerebbe fornire un esempio, ma sono abbastanza occupato oggi e non è che complicato per raccogliere i punti. ; -)

Va bene, quindi non sono che occupato ...

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])

Altri suggerimenti

Come Joshua accennato, segments() è il modo di andare qui. E come è totalmente Vectorised, possiamo aggiungere a tutti gli errori in una sola volta, sulla scia vostro esempio

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")

Se si desidera solo evidenziare un paio di errori, quindi modificare l'esempio Joshua ha dato:

n <- c(58,65)
segments(x[n], y[n], x[n], fitted(yx.lm)[n], col = "orange", lwd = 3)

HTH

G

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top