4

我正在对某些数据进行最小二乘回归,该函数具有以下形式

y ~ a + b*x

并且我希望回归线通过特定点 P(x,y) (这不是原点)。我怎样才能做到这一点?

我在 R 中使用 lm 命令,在 Matlab 中使用基本拟合 GUI。我认为我可以使用 constrOptim 命令(在 R 中)或将原点转换为点 P,但我想知道是否有特定的命令可以做到这一点。

我只需要其中一个程序的解决方案,然后我可以使用另一个程序中的系数。

4

1 回答 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)

于 2013-06-03T13:34:44.110 回答