具有指定斜率的线性回归

Linear regression with specified slope

我想将具有指定斜率的线性回归线拟合到数据集。我阅读了 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 函数只取模型 1 的截距和斜率 1.5。而我希望回归线的斜率为 1.5,找到最适合数据点的值,然后从该回归线计算截距。

我想一种方法是从 y 中减去 1.5*x,然后仅使用截距项拟合 y

mod2 <- lm(I(y-1.5*x)~1)
plot(x, y)
abline(mod2$coefficients, 1.5)

这表示具有固定斜率 1.5 的最佳线性拟合。当然,这种拟合在视觉上不是很吸引人,因为模拟斜率为1,而固定斜率为1.5。

要找到截距的值,您实际上不需要回归。由于 Y = a + b * X + ϵ,则 E[Y - b * X] = E[a] + E[ϵ],并通过假设 E[a] = aE[ϵ] = 0,其中 E[] 是期望算子。因此,a = E[Y - b * X].

翻译成R,这意味着截距a是:

b1 <- 1.5
a <- mean(y - b1 * x)

这是受到 this question 评论的启发。