2011-11-10 13 views
5

Voglio tracciare una linea di regressione con (a = 0 eb = 1) e aggiungere le deviazioni punto individuali da questo insieme all'individuazione del punto dati con nome.Tracciamento di deviazioni dalla linea di regressione

set.seed(123) 
namelab <- paste ("ET", 1:10, sep = "") 
xvar <- 1:10 
yvar <- rnorm(10, 5, 5) 
myd <- data.frame(namelab, xvar, yvar) 
plot(xvar, yvar) 
abline (a= 0, b = 1, col = "red", lty = 2) 

Solo uno schizzo manuale delle mie intenzioni, ho appena etichettato un singolo punto, ad esempio. La linea disegnata ha bisogno di un sottile. enter image description here

+2

Eventuali duplicati: http://stackoverflow.com/questions/2639430/graphing-perpendicular-offsets-in-a-least-squares-regression-plot-in-r –

+2

Ma vuoi veramente tracciare * perpendicolarmente * compensa comunque? La regressione di solito riduce al minimo gli offset * verticali *. –

+0

@JohnColby Buona cattura – Andrie

risposta

13
dev.new(width=4, height=4) 
plot(xvar, yvar, asp=1) 

a = 0 
b = 1 

abline (a, b, col = "red", lty = 2) 

myd$xint = with(myd, (b*yvar + xvar - b*a)/(b^2 + 1)) 
myd$yint = with(myd, (b*yvar + b*xvar + a)/(b^2 + 1)) 

with(myd, segments(xvar, yvar, xint, yint)) 
with(myd, text(xvar, yvar, labels=namelab, pos=3, cex=0.5)) 

enter image description here

+1

Grazie per quello. Ho cercato un punto perpendicolari su una linea e ho potuto trovarlo. E mostra anche come ridimensionare le illustrazioni per SQ. Doubleplusgood. –

4

... e se si voleva verticale al contrario di offset perpendicolari, qui è una scelta abbastanza semplice:

set.seed(123) 
namelab <- paste ("ET", 1:10, sep = "") 
xvar <- 1:10 
yvar <- rnorm(10, 5, 5) 

plot(xvar, yvar) 
abline (a= 0, b = 1, col = "red", lty = 2) 
segments(xvar,yvar,xvar,xvar) 
text(xvar,yvar,namelab,pos=3) 

enter image description here

Per questo per lavorare per qualsiasi valore di aeb, utilizzare:

segments(xvar,yvar,xvar,((xvar*b)+a)) 
Problemi correlati