[R] Controlling the length of line with abline(lm())
Rolf Turner
r.turner at auckland.ac.nz
Thu Jun 19 07:01:50 CEST 2008
On 19/06/2008, at 2:09 PM, Tariq Perwez wrote:
> Hi
> I just realized that when I use linear regression to draw a line
> through my
> data points with something like the following:
>
> abline(lm(y ~ x))
>
>
> the length of the line is infinite, i.e., the line goes beyond the
> smallest
> and the largest data values. This seems not very right to me (not
> to mention
> it looks unaesthetic). I do not mean to imply that the straight-line
> behavior of my system is maintained throughout. I would like to
> limit the
> length of this line to the range of my data. However, I have not
> been able
> to figure out how to. Very disconcertingly, I found out that all
> the books
> that teach statistics using R seem to be drawing such infinite
> length-lines.
> I would appreciate any advice or suggestions.
As things stand, I don't think you can do it in one hit. You have to go
through something like
fit <- lm(y~x)
z <- predict(fit,data.frame(x=range(x)))
lines(range(x),z)
I guess one could ``automate'' this via something like:
fline <- function(object) {
# ``fline'' <--> fitted line.
r <- range(object$model[,2])
d <- data.frame(r)
names(d) <- attr(object$terms,"term.labels")
y <- predict(object,d)
lines(r,y)
}
(There may well be a cleverer way to do this .....)
And then execute
fline(lm(y~x))
Howzat?
cheers,
Rolf Turner
######################################################################
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}
More information about the R-help
mailing list