2013-04-22 9 views
14

Sto provando a disegnare una linea di regressione dei minimi quadrati usando abline(lm(...)) che è anche costretto a passare attraverso un punto particolare. Vedo che lo this question è correlato, ma non proprio quello che voglio. Ecco un esempio:R draw (abline + lm) line-of-best-fit attraverso il punto arbitrario

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

Questo appare come:

enter image description here

Ora come potrei fare per forzare una linea attraverso il punto arbitrario marcata di (x=10,y=50), pur riducendo al minimo la distanza per gli altri punti?

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

risposta

13

Una soluzione di massima sarebbe quella di spostare l'origine per il modello a quel punto e creare un modello senza intercetta

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

Nizza. Non sembra una soluzione approssimativa. – thelatemail

+0

Rough? Non dal punto di vista del calcolo, ma piuttosto da un punto di vista statistico. Troverete alcune invenzioni sull'argomento da parte di Bill Venables (come da Venables/Ripley MASS) –

+0

Ecco cosa intendevo. – mnel

3

È possibile modificare la formula per lm() e offset i dati:

p=10 
q=50 

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

Sì. Modificato ora. – Nishanth