2010-09-17 19 views
7

için satırları bırakın. Dün worked up an example of, Olağan En Küçük Kareler (OLS) ile Temel Bileşenler Analizi (PCA) arasındaki fark. Bu çizim için OLS ve PCA tarafından en aza indirilen hataları göstermek istedim, böylece gerçekleri, tahmin edilen çizgiyi çizdim ve daha sonra manuel olarak (GIMP ile) hata koşullarının bir çiftini göstermek için bir damla çizgisi çizdim. R'deki hata satırlarının oluşturulmasını nasıl kodlayabilirim? Elle aşağıdaki üretmek için sarı çizgiler eklendi SonraGeçerli satırlardan 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") 

: İşte benim örnekte kullanılan kod

alt text

cevap

8

?segments

Ben bir örnek oluşturmaktadır istiyorum, ama Bugün çok meşgulüm ve puanları almak o kadar da karmaşık değil. ;-)

Tamam, ben

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

! Beni işaret ettiğin için teşekkürler. –

+0

Rica ederim; ve bilgilendirici blog yazısı için teşekkür ederim. –

6

Joshua belirtildiği gibi, segments() buraya gitmek yoludur değil ... meşgul olduğunu değilim. tamamen vektörleştirilmiş gibi sadece hatalarını birkaç vurgulamak istiyorsanız, biz Joshua verdi örneğini değiştirmek için, sonra örnek

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

itibaren aşağıdaki kerede bütün hatalar ekleyebilirsiniz:

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

HTH

G

şimdiye `segments` komutu kullanılır olmasaydı
+0

-1 (benim için) vektörleştirilmiyor. Açıklama için teşekkürler! –