Linear Regression with a known fixed intercept in R
You could subtract the explicit intercept from the regressand and then fit the intercept-free model:
> intercept <- 1.0> fit <- lm(I(x - intercept) ~ 0 + y, lin)> summary(fit)
The 0 +
suppresses the fitting of the intercept by lm
.
edit To plot the fit, use
> abline(intercept, coef(fit))
P.S. The variables in your model look the wrong way round: it's usually y ~ x
, not x ~ y
(i.e. the regressand should go on the left and the regressor(s) on the right).
I see that you have accepted a solution using I(). I had thought that an offset() based solution would have been more obvious, but tastes vary and after working through the offset solution I can appreciate the economy of the I() solution:
with(lin, plot(y,x) )lm_shift_up <- lm(x ~ y +0 + offset(rep(1, nrow(lin))), data=lin)abline(1,coef(lm_shift_up))
I have used both offset and I(). I also find offset easier to work with (like BondedDust) since you can set your intercept.
Assuming Intercept is 10.
plot (lin$x, lin$y)fit <-lm(lin$y~0 +lin$x,offset=rep(10,length(lin$x)))abline(fit,col="blue")