# Re: [R] abline and linearity over groups

Date: Thu 04 Aug 2005 - 11:05:15 EST

I think ronggui is right and your example is just a coincidence. Here is my example in which case the intercept is hugely different (with slightly different style of coding).

set.seed(1) # for reproducibility
y <- c( rnorm(10, 0, 30), rnorm(10, 100, 30), rnorm(10, 200, 30) )   x <- rep( 1:3, each=10 )

df <- cbind.data.frame( y=y, x1=x, x2=factor(x) )   plot(df\$x2, df\$y)
points(df\$x1, df\$y, col=2, pch=2)

( fit1 <- lm( y ~ x1, data=df ) )

```      (Intercept)           x1
-89.55        96.01

( fit2 <- lm( y ~ x2, data=df ) )
(Intercept)          x22          x23
3.966      103.499      192.024

```

abline(fit1)
abline(fit2, col="red") # wrong

The line above is wrong because it is fitting

abline(3.966, 103.499, col="green", lty=3)

as documented in help(abline) and pointed out by ronggui.

Note that 'fit1' is a linear model for regression while 'fit2' is a linear model for ANOVA and that the documentation of help(abline) uses the word "regression". Perhaps

It is more reliable to plot the fitted or predicted values via

points( df\$x2, fit2\$fitted, col=4, pch=20 )

and this works regardless whether the linear model if for regression or ANOVA.

You could replace plot() with lines() but this is perhaps not appropriate with an ANOVA fit which may not have numerical values for x.

On Wed, 2005-08-03 at 16:33 +0100, Jabez Wilson wrote:
> But those two lines are almose identical The difference between i=0.4432, s=104.1688 and i=0.8776,s=108.1313 is almost negligible.
>
> What I see is that abline draws a line with a v.similar slope but intercept is about 90 instead of 0.8776. Try running the example to see what I mean.
>
> ronggui <0034058@fudan.edu.cn> wrote:>?abline
> and you can see
> ...
> 'reg' is a regression object which contains 'reg\$coef'. If it is
> of length 1 then the value is taken to be the slope of a line
> through the origin, otherwise, the first 2 values are taken to be
> the intercept and slope.
> ...
>
> and
> > plot(test\$l~test\$t)
> > abline(lm(test\$l~test\$t))
> > (lm(test\$l~test\$t))
>
> Call:
> lm(formula = test\$l ~ test\$t)
>
> Coefficients:
> (Intercept) test\$t
> 0.4432 104.1688
>
> > test\$tF=factor(test\$t)
> > plot(test\$l~test\$tF)
> > abline(lm(test\$l~test\$tF))
> > (lm(test\$l~test\$tF))
>
> Call:
> lm(formula = test\$l ~ test\$tF)
>
> Coefficients:
> (Intercept) test\$tF1 test\$tF2
> -0.8776 108.1313 208.3376
>
> when test\$tF is factor,these are 3 coef and the first two are used to drow the line,with Intercept = -0.8776 and slope= 108.1313 ,and abline(lm(test\$l~test\$tF)) is abline(-0.8776,108.1313)
>
>
> ======= 2005-08-03 22:23:57 ะด=======
>
> >
> >
> >Dear R users, please can you help me understand the behaviour of abline using function lm.
> >
> >I'm trying to learn linearity over groups. So I make three groups with 10 values each:
> >
> >test=data.frame(cbind(
> >l=c(rnorm(10,0,30),rnorm(10,100,30),rnorm(10,200,30)),
> >t = c(rep(0,10), rep(1,10), rep(2,10))
> >))
> >
> >when I do:
> >
> >plot(test\$l~test\$t)
> >abline(lm(test\$l~test\$t))
> >
> >
> >the abline is a straight line through the centre of the points of each of the groups.
> >
> >If, however, I factorise the groups (in order to do e.g. anova analysis) and then plot the data
> >
> >test\$tF=factor(test\$t)
> >plot(test\$l~test\$tF)
> >abline(lm(test\$l~test\$tF))
> >
> >
> >the abline is now shifted up and to the left of where I would expect the line to go (through the centre of the points of each of the groups).
> >
> >If there is a simple explanation, could someone tell me it?
> >
> >
> >
> >
> >---------------------------------
> >To help you stay safe and secure online, we've developed the all new Yahoo! Security Centre.
> > [[alternative HTML version deleted]]
> >
> >______________________________________________
> >R-help@stat.math.ethz.ch mailing list
> >https://stat.ethz.ch/mailman/listinfo/r-help
>
> = = = = = = = = = = = = = = = = = = = =
>
>
>
>
>
> 2005-08-03
>
> ------
> Deparment of Sociology
> Fudan University
>
> Blog:http://sociology.yculblog.com
>
>
>
> ---------------------------------
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help