R_User - 8 months ago 63

R Question

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

Thanls for your help.

Answer

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

Source (Stackoverflow)