rの実際のポイントからモデルポイントにラインをドロップします

StackOverflow https://stackoverflow.com/questions/3737165

  •  03-10-2019
  •  | 
  •  

質問

昨日私 の例を作成しました 通常の最小二乗(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")

次に、次のように黄色い線を手動で追加しました。

alt text

役に立ちましたか?

解決

?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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top