rの実際のポイントからモデルポイントにラインをドロップします
質問
昨日私 の例を作成しました 通常の最小二乗(OLS)と主成分分析(PCA)の違い。そのイラストのために、OLSとPCAによって最小化されたエラーを表示したかったので、実際のラインをプロットし、予測ラインをプロットしました。その後、(GIMPで)ドロップラインで手動で描画して、エラー用語のいくつかを説明しました。 rのエラーラインの作成をコーディングするにはどうすればよいですか?これが私の例で使用したコードです:
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")
次に、次のように黄色い線を手動で追加しました。
解決
?segments
私は例を提供しますが、今日はかなり忙しく、ポイントを選ぶのはそれほど複雑ではありません。 ;-)
さて、私はそうではありません それ 忙しい...
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])
他のヒント
ジョシュアが言及したように、 segments()
ここに行く方法です。そして、それは完全にベクトル化されているので、あなたの例から続くすべてのエラーを一度に追加することができます
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")
いくつかのエラーを強調したい場合は、Joshuaが与えた例を変更します。
n <- c(58,65)
segments(x[n], y[n], x[n], fitted(yx.lm)[n], col = "orange", lwd = 3)
Hth
g
所属していません StackOverflow