7

昨日、通常の最小二乗法 (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")

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

代替テキスト

4

2 に答える 2

9

?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])
于 2010-09-17T16:31:06.783 に答える
7

ジョシュア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

于 2010-09-21T17:44:29.710 に答える