[R] Forcing best-fit lines to go through the origin
Henric Nilsson
henric.nilsson at statisticon.se
Mon Apr 18 08:04:12 CEST 2005
Jim Milks said the following on 2005-04-18 03:08:
> Dear All,
>
> I have a rather unusual problem. I have a set of data for a class in
> subsurface processes. From that dataset, I must calculate the slope of
> the best-fit line (which is the parameter of interest). The problem I
> have is twofold: 1) for the purposes of the exercise, I must force my
> best-fit line to go through the origin (0,0), and 2) the line must be
> linear, even though the data is not. I would like to use R to help me
> calculate the line, but am unaware of any code or packages that will
> allow me to force the line through the origin.
>
> The dataset is as follows:
>
> C C*
> 4.1 17.4
> 6.2 24.9
> 27.9 39.5
> 91.1 57.4
> 168.0 75.5
Depending on your definition of `best-fit', you may use the `lm'
function where `best-fit' corresponds to solving a least-squares
problem. Try ?lm at the R prompt.
Not that I know if you want to regress C on C*, or the other way
around.. Let's do both:
> (dta <- read.table("clipboard", header = TRUE))
C C.
1 4.1 17.4
2 6.2 24.9
3 27.9 39.5
4 91.1 57.4
5 168.0 75.5
> fit1 <- lm(C ~ C. -1 , data = dta)
> coef(fit1)
C.
1.676325
> fit2 <- lm(C. ~ C -1, data = dta)
> coef(fit2)
C
0.5150568
To convince yourself, take a look at the data with the least-squares
line superimposed:
> plot(C ~ C., data = dta, xlim = c(0, 200), ylim = c(0, 100))
> abline(fit1)
Plotting `fit2' is left as an exercise... ;-)
HTH,
Henric
>
> Thank you in advance for any advice you can give me.
>
> Sincerely,
>
> Jim Milks
> Graduate Student
> Environmental Sciences Ph.D. Program
> Wright State University
> 3640 Colonel Glenn Hwy
> Dayton, OH 45435
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
More information about the R-help
mailing list