Question

Hier, je énerver un exemple de la différence entre les moindres carrés ordinaires (OLS) par rapport analyse en composantes principales (ACP). Pour cette illustration que je voulais montrer les erreurs minimisés par OLS et PCA donc je tracé les chiffres réels, la ligne prévue et je manuellement (avec GIMP) dessiné dans une ligne de chute pour illustrer quelques-uns des termes d'erreur. Comment puis-je coder la création des lignes d'erreur dans R? Voici le code que j'utilisé pour mon exemple:

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

Ensuite, j'ai ajouté manuellement les lignes jaunes pour produire ce qui suit:

text alt

Était-ce utile?

La solution

?segments

Je vous donner un exemple, mais je suis très occupé aujourd'hui et ce n'est pas compliqué de prendre les points. ; -)

Ok, donc je ne suis pas que occupé ...

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

Autres conseils

Comme mentionné Joshua, segments() est la voie à suivre ici. Et comme il est tout à fait vectorisé, nous pouvons ajouter à toutes les erreurs à la fois, à la suite de votre exemple

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

Si vous voulez seulement mettre en évidence quelques erreurs, puis de modifier l'exemple Joshua a donné:

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

HTH

G

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top