Linear Regression with a known fixed intercept in R

前端 未结 3 1578
花落未央
花落未央 2020-11-29 20:51

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

相关标签:
3条回答
  • 2020-11-29 20:59

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

    0 讨论(0)
  • 2020-11-29 21:03

    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))
    
    0 讨论(0)
  • 2020-11-29 21:08

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

    0 讨论(0)
提交回复
热议问题