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.