具有指定斜率的线性回归
Posted
技术标签:
【中文标题】具有指定斜率的线性回归【英文标题】:Linear regression with specified slope 【发布时间】:2016-01-22 10:29:10 【问题描述】:我想将线拟合到数据集。我阅读了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,找到与数据点的最佳拟合,然后从该回归线计算截距。
【问题讨论】:
一种方法是使用偏移量...model2 <- lm(y ~ 1 + offset(1.5*x)) ; abline(coef(model2)[1], 1.5, col="red")
(您仍然不能只将模型对象传递给 abline)
【参考方案1】:
要找到截距的值,实际上不需要回归。由于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 的 cmets 的启发。
【讨论】:
【参考方案2】:我想一种方法是从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。
【讨论】:
以上是关于具有指定斜率的线性回归的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 中统计比较两种不同线性回归模型的截距和斜率?
我想在 GEKKO 数据的非线性回归中的给定点施加值和斜率约束,请帮助我
从多个数据的线性回归中获取 y 轴截距和斜率,并将截距和斜率值传递给数据框