[R] abline() or predict.lm() when log="x"

Richard Chandler rchandler at forwild.umass.edu
Sat Jan 21 15:18:13 CET 2006


Sorry that was a typo when I said 'resposnse'... I meant predictor. I 
want to fit lm(y ~ log(x)) and plot the line with confidence 
intervals on a log="x" plot so that I can see the real units of x 
rather than the log(x) units. I can't get the real line using 
predict.lm() without removing the log() from the formula. Thanks 
again.

Quoting Peter Dalgaard <p.dalgaard at biostat.ku.dk>:

> Richard Chandler <rchandler at forwild.umass.edu> writes:
> 
> > Thanks for the reply though I don't think your suggestion worked.
> I 
> > have found a way to get the correct line though it is not 
> > convenient.  
> > 
> > x <- 1:100
> > y <- 1:100
> > plot(y ~ x, log="x")
> > 
> > #The only way I can get the correct line is to drop the log():
> > abline(lm(y ~ x), untf=T, lwd=2) #or
> > lines(x, predict(lm(y ~ x)), col=2) 
> > 
> > #Neither of these work
> > abline(lm(y ~ log10(x))) #or
> > abline(lm(y ~ log10(x)), untf=T)
> > 
> > What I really would like to do is plot fitted lines and 95% 
> > confidence intervals using predict.lm, as in shown in the
> example, 
> > but when the predictor is log transformed and log="x". I can't
> figure 
> > out how to do this without removing the log() from the response
> part 
> > of the formula and this isn't helpful because I'm generally
> trying to 
> > give predict() a fitted object rather than a lm() formula. I
> still 
> > think I'm probably missing something simple but are there any
> other 
> > suggestions? Thanks.
> > 
> 
> First decide what you really want. I see log() hopping all over
> the
> place. Is it on the response or the predictor? Do you want a
> straight
> line on an x-logged plot or an x-logged plot of a straight line?
> Do
> you intend to fit y~x or y~log(x) ?
> 
> 
> 
> > Richard
> > 
> > 
> > Quoting Peter Dalgaard <p.dalgaard at biostat.ku.dk>:
> > 
> > > Richard Chandler <rchandler at forwild.umass.edu> writes:
> > > 
> > > > Hello,
> > > > 
> > > > I'm trying to plot a fitted lm() line on a plot when the one
> > > > explanatory variable is log transformed and log="x". I get
> > > different
> > > > lines using abline and predict.lm(). 
> > > > 
> > > > #Example
> > > > x <- 1:100
> > > > y <- rnorm(100)
> > > > plot(y ~ x, log="x")
> > > > abline(lm(y ~ log(x)))
> > > > lines(x, predict(lm(y ~ log(x))), lwd=2)
> > > > 
> > > > I'm sure I'm missing something but could someone tell me
> which
> > > line is
> > > > correct? Thanks.
> > > 
> > > Base 10 is what you're missing.
> > > 
> > > The latter form is agnostic with respect to base, the former
> is
> > > not
> > > (since the fitted values are the same, but regression
> coefficients
> > > differ). So you need to know to use abline(lm(y ~ log10(x))).
> > > 
> > > You don't really notice which kind of log is being used until
> you
> > > look
> > > at par(usr) for a plot with logged axes.
> > > 
> > > -- 
> > >    O__  ---- Peter Dalgaard             Øster Farimagsgade 5,
> > > Entr.B
> > >   c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph.
> K
> > >  (*) \(*) -- University of Copenhagen   Denmark          Ph: 
> (+45)
> > > 35327918
> > > ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)                  FAX:
> (+45)
> > > 35327907
> > > 
> > 
> > 
> > -- 
> > Richard Chandler, M.S. candidate
> > Department of Natural Resources Conservation
> > UMass Amherst
> > (413)545-1237
> > 
> 
> -- 
>    O__  ---- Peter Dalgaard             Øster Farimagsgade 5,
> Entr.B
>   c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
>  (*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45)
> 35327918
> ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)                  FAX: (+45)
> 35327907
> 


-- 
Richard Chandler, M.S. candidate
Department of Natural Resources Conservation
UMass Amherst
(413)545-1237




More information about the R-help mailing list