# [R] bowed linear approximations

Eric Berger ericjberger at gmail.com
Tue Sep 26 09:27:20 CEST 2017

```Hi Rich,
axis" then I think John's (second) set of commands needs a change to the
definition of xx, as follows:

xx <- exp(seq(from=log(min(x)),to=log(max(x)),length=50))
m <- lm(y ~ log(x))
yy <- predict(m, data.frame(x=xx))
points(xx, yy, col="red")

HTH,

Eric

On Mon, Sep 25, 2017 at 11:36 PM, Fox, John <jfox at mcmaster.ca> wrote:

> Dear Rich,
>
> Assuming that I understand what you want to do, try adding the following
> to your script (which, by the way, is more complicated that it needs to be):
>
> xx <- 10:50
> m <- lm(y ~ x)
> yy <- predict(m, data.frame(x=xx))
> lines(spline(xx, yy), col="blue")
>
> m <- lm(y ~ log(x))
> yy <- predict(m, data.frame(x=xx))
> points(xx, yy, col="magenta")
>
> The first set of commands adds a line corresponding to the points that you
> plotted, which if I understand right, is *not* what you want. The second
> set of commands shows how to find points along the diagonal straight line
> that you plotted, given their x-values, which is what I think you want.
>
> If you examine the linear models fit, you'll see that they just
> interpolate between the two points, albeit differently.
>
> I hope this helps,
>  John
>
> -----------------------------
> John Fox, Professor Emeritus
> McMaster University
> Web: socserv.mcmaster.ca/jfox
>
>
>
>
> > -----Original Message-----
> > From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Evans,
> > Richard K. (GRC-H000)
> > Sent: Monday, September 25, 2017 3:28 PM
> > To: r-help at r-project.org
> > Subject: [R] bowed linear approximations
> >
> > Hello,
> >
> > Please run the following code snippet and note the resulting plot:
> >
> > x <- c(10, 50)
> > y <- c(0.9444483, 0.7680123)
> > plot(x,y,type="b",log="x")
> > for(i in 1:50){
> >  xx <- exp(runif(1,log(min(x)),log(max(x)) )) yy <- approx(x,y,xout=xx,
> method =
> > "linear")
> > points(xx,yy\$y)
> > }
> >
> > notice the "log=x" plot parameter and the resulting "bow" in the linear
> > approximation.
> >
> > This makes sense when I realized that the plot command is first making
> the
> > plot and then drawing straight lines between points on a log plot AFTER
> the
> > plot is generated and that that's why the line is straight. I get that.
> > .. and it also makes sense that the bowed points are a result of the
> linear
> > approximations being made BEFORE plotted in a logarithmic plot. I get
> that..
> >
> > My goal is to make approximations that lie on the line produced on the
> plot as
> > shown, so I realize that what I want to do is NOT linear approximations,
> but
> > maybe "log" approximations?
> > However, the approximation methods are only "linear" and "constant" ..
> there
> > isn't a "log" method to approximate with.
> >
> > So can anyone tell me how to fix the code such that he approximated
> points
> > DO lie on the line as plotted with the "log=x" plot parameter?
> > Oh, and they have to be uniformly distributed along the Log=x axis.. I
> think
> > that's the tricky part.
> >
> > Any help and/or insight would be greatly appreciated.
> >
> > Thank you!
> > -Rich
> >
> >
> >       [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > guide.html
> > and provide commented, minimal, self-contained, reproducible code.
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help