Hi Rich, If I understand your comment about "uniformly distributed along the log=x 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 <j...@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 > Hamilton, Ontario, Canada > Web: socserv.mcmaster.ca/jfox > > > > > > -----Original Message----- > > From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of Evans, > > Richard K. (GRC-H000) > > Sent: Monday, September 25, 2017 3:28 PM > > To: r-help@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@r-project.org mailing list -- To UNSUBSCRIBE and more, see > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide http://www.R-project.org/posting- > > guide.html > > and provide commented, minimal, self-contained, reproducible code. > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/ > posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.