我正在对一些数据进行最小二乘回归,该函数的形式为
y ~ a + b*x
我希望回归线通过特定的点P(x,y)(不是原点),请问如何实现?
我正在使用R中的lm命令和Matlab中的基本拟合GUI。我认为可以使用constrOptim命令(在R中)或将原点转换为点P,但我想知道是否有一个特定的命令来实现这一目标。
我只需要其中一个程序的解决方案,然后可以在另一个程序中使用系数。
我正在对一些数据进行最小二乘回归,该函数的形式为
y ~ a + b*x
将数据适当居中,强制回归通过“原点”:
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)))
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