在lm回归中使用偏移 - R.

时间:2013-06-04 14:36:48

标签: r lm

我有这个程序

dens <- read.table('DensPiu.csv', header = FALSE)
fl <- read.table('FluxPiu.csv', header = FALSE)
mydata <- data.frame(c(dens),c(fl))

dat = subset(mydata, dens>=3.15)
colnames(dat) <- c("x", "y")
attach(dat)

我想对 dat 中包含的数据进行最小二乘回归,函数的格式为

y ~ a + b*x

我希望回归线通过特定点P(x0,y0)(不是原点)。

我正在尝试这样做

 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)').

我不知道为什么。我想我没有正确定义偏移值,但我在互联网上找不到任何例子。

有人可以解释 offset 的工作原理吗?

2 个答案:

答案 0 :(得分:10)

您的偏移字词必须是变量,例如xy,而不是数字常量。因此,您需要在数据集中使用适当的值创建一列。

dat$o <- 283.56
lm(y ~ I(x - x0) - 1, data=dat, offset=o)

答案 1 :(得分:2)

事实上,这里真正的问题是你应该用一个长度与行数相同的向量指定offset(或者如果数据组成为你的数据的矢量)。以下代码将按预期执行您的工作:

regression <- lm(y ~ I(x-x0)-1, offset = rep(y0, length(y))

对于有兴趣的人,这是一个很好的解释: http://rfunction.com/archives/223