约束最小二乘回归 - Matlab或R.

时间:2013-06-03 13:28:51

标签: r matlab linear-regression

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

y ~ a + b*x

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

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

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

1 个答案:

答案 0 :(得分: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)