R_User - 13 days ago 7x
R Question

# Linear Regression with a known fixed intercept in R

I want to calculate a linear regression using the lm() function in R. Additionally I want to get the slope of a regression, where I explicitly give the intercept to

`lm()`
.

I found an example on the internet and I tried to read the R-help "?lm" (unfortunately I'm not able to understand it), but I did not succeed. Can anyone tell me where my mistake is?

``````lin <- data.frame(x = c(0:6), y = c(0.3, 0.1, 0.9, 3.1, 5, 4.9, 6.2))
plot (lin\$x, lin\$y)

regImp = lm(formula = lin\$x ~ lin\$y)
abline(regImp, col="blue")

# Does not work:
# Use 1 as intercept
explicitIntercept = rep(1, length(lin\$x))
regExp = lm(formula = lin\$x ~ lin\$y + explicitIntercept)
abline(regExp, col="green")
``````

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).