受限最小二乘回归 - Matlab或R

4

我正在对一些数据进行最小二乘回归,该函数的形式为

y ~ a + b*x

我希望回归线通过特定的点P(x,y)(不是原点),请问如何实现?
我正在使用R中的lm命令和Matlab中的基本拟合GUI。我认为可以使用constrOptim命令(在R中)或将原点转换为点P,但我想知道是否有一个特定的命令来实现这一目标。
我只需要其中一个程序的解决方案,然后可以在另一个程序中使用系数。
1个回答

5

将数据适当居中,强制回归通过“原点”:

lm(y ~ I(x-x0)-1, offset=rep(y0,nrow(dat)) data=dat)

您可能需要相应地调整拦截系数。

编辑:offset需要是正确长度的向量。另一种方法是:

set.seed(1)
d <- data.frame(x=1:10,y=rnorm(10,mean=1:10,sd=0.1))
x0 <- 3
y0 <- 3
(lm1 <- lm(y ~ I(x-x0)-1, offset=y0, data=data.frame(d,y0)))

这个斜率是1.005。 截距应该是coef(lm1)*(-y0/x0),我认为。

我按照你说的方式尝试了 x0 <- 3.15 y0 <-283.56 regression <- lm(y ~ I(x-x0)-1, offset=y0) (我认为在这种情况下 data = dat 不是必要的),但我出现了如下错误: Error in model.frame.default(formula = y ~ I(x - x0) - 1, : variable lengths differ (found for '(offset)')。我不明白为什么会出现这个错误。 - ac2051
谢谢你的回答。我在另一个问题中问了_offset_如何工作。 - ac2051
非常感谢您编辑问题!您提出的两种解决方案都有效。 - ac2051

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接