[R] Regression line limited by the rage of values

Andreas Svensson andreas.svensson at bio.ntnu.no
Wed May 24 18:51:42 CEST 2006


Hi

In R, using  plot(x,y)   followed by abline(lm(y~x)) produces a graph 
with a regression line spanning the whole plot . This means that the 
line extends beyond the swarm of data points to the defined of default  
plot region. With par(xpd=T) it will span the entire figure region. But 
how can I limit a regression line to the data range, i.e between  
(xmin,ymin) and  (xmax,ymax)?

Sorry for not knowing the lingo here. If you don't understand the 
question, please run the following script:

x1<-c(1,2,3,4)
x2<-c(5,6,7,8)
y1<-c(2,4,5,8)
y2<-c(10,11,12,16)
plot(x1,y1,xlim=c(0,10),ylim=c(0,20),col="blue")
points(x2,y2,col="red")
abline(lm(y1~x1),col="blue")
abline(lm(y2~x2),col="red")

The resulting plot isn't very informative. There is no overlap in the 
two groups of data, yet the two ablines overlap.
I instead  want the blue line to go from (1,2) to (4,8) and the red line 
from (5,10) to (8,16).

So, how can I constrain the abline to the relevant region, i.e stop 
abline from extrapolating beyond the actual range of data.
Or should I use a function line 'lines' to do this?

Cheers
Andres



More information about the R-help mailing list