2013-04-22 32 views
14

abline(lm(...))'u kullanarak belirli bir noktadan geçmeye zorlanan en küçük kareler regresyon çizgisini çizmeye çalışıyorum. Ben this question görüyorum, ama ne istediğimi değil. Bu gibi görünüyorR çizmek (abline + lm), rastgele bir noktadan en uygun çizgiye

test <- structure(list(x = c(0, 9, 27, 40, 52, 59, 76), y = c(50, 68, 
79, 186, 175, 271, 281)), .Names = c("x", "y")) 

# set up an example plot 
plot(test,pch=19,ylim=c(0,300), 
    panel.first=abline(h=c(0,50),v=c(0,10),lty=3,col="gray")) 

# standard line of best fit - black line 
abline(lm(y ~ x, data=test)) 

# force through [0,0] - blue line 
abline(lm(y ~ x + 0, data=test), col="blue") 

: İşte bir örnek

enter image description here

Şimdi nasıl hala diğer noktalara mesafe en aza indirirken (x=10,y=50) belirgin keyfi noktadan geçen bir doğru zorlayarak hakkında gitmek

?

# force through [10,50] - red line 
?? 

cevap

13

bir kaba çözüm bu noktaya modeliniz için menşeini değiştirmesi ve Sen lm() formülünü değiştirmek ve ofset olabilir

nmod <- (lm(I(y-50)~I(x-10) +0, test)) 

abline(predict(nmod, newdata = list(x=0))+50, coef(nmod), col='red') 

enter image description here

+0

Güzel. Bu zor bir çözüm gibi görünmüyor. – thelatemail

+0

Kaba mı? Bilgi işlem açısından değil, istatistiksel bir sonuçtan. Konu hakkında Bill Venables (Venables/Ripley MASS) –

+0

ile ilgili bir kaç bağış bulacaksınız. – mnel

3

hiçbir kesişmesine sahip bir model oluşturmak olacaktır veriler:

p=10 
q=50 

abline(lm(I(y-q) ~ I(x-p) + 0, data=test), col="red") 
+0

Evet. Şimdi düzenlenmiş. – Nishanth