我想将具有指定斜率的线性回归线拟合到数据集。我阅读this thread关于使用明确的拦截做同样的事情。
0+
抑制了截距的拟合;斜坡的相应技巧是什么?
例如,为了拟合斜率为1.5的线,我尝试了以下
set.seed(6)
x <- runif(100, -3, 3)
y <- 2 + x + rnorm(100)
model1<-lm(y ~ x)
plot(x,y)
abline(model1,col="red")
abline(coef(model1),1.5,col="dark green")
但是第二个abline函数只接受了model1和slope 1.5的截距。虽然我希望回归线的斜率为1.5,找到最适合数据点,然后从该回归线计算截距。
答案 0 :(得分:7)
我认为一种方法是从1.5*x
中减去y
,然后仅使用拦截术语使y
符合:
mod2 <- lm(I(y-1.5*x)~1)
plot(x, y)
abline(mod2$coefficients, 1.5)
这表示具有固定斜率1.5的最佳线性拟合。当然,这种拟合在视觉上并不十分吸引人,因为模拟斜率为1而固定斜率为1.5。
答案 1 :(得分:7)
要查找拦截的值,您实际上不需要回归。自Y = a + b * X + ϵ
,然后E[Y - b * X] = E[a] + E[ϵ]
以及假设E[a] = a
和E[ϵ] = 0
开始,其中E[]
是期望运算符。因此,a = E[Y - b * X]
。
转换为R,这意味着拦截a
是:
b1 <- 1.5
a <- mean(y - b1 * x)
这受到对this question的评论的启发。