具有指定斜率的线性回归

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 &lt;- 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] = aE[ϵ] = 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 轴截距和斜率,并将截距和斜率值传递给数据框

使用 R 中另一个变量的线性回归的斜率来估算单个变量的缺失数据

关于梯度下降 - 线性回归的

如何用Python进行线性回归以及误差分析