具有指定斜率的线性回归
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] = a
和 E[ϵ] = 0
,其中 E[]
是期望算子。因此,a = E[Y - b * X]
.
翻译成R,这意味着截距a
是:
b1 <- 1.5
a <- mean(y - b1 * x)
这是受到 this question 评论的启发。
我想将具有指定斜率的线性回归线拟合到数据集。我阅读了 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] = a
和 E[ϵ] = 0
,其中 E[]
是期望算子。因此,a = E[Y - b * X]
.
翻译成R,这意味着截距a
是:
b1 <- 1.5
a <- mean(y - b1 * x)
这是受到 this question 评论的启发。