R中lm函数的细节

5

如果在R中使用以下代码:

linear <- lm(y~x-1)

R将会找到一个通过原点的回归线。

我的问题是,原点是否是x=0或者x值最小的那个数?

举例来说,如果我的x值范围是从1998到2011年,那么拟合的直线会经过1998年还是第0年?


4
如果你希望拟合的直线穿过1998年,你可以尝试使用 lm(y~I(x-1998)-1) - Ben Bolker
2个回答

10

在方程中加入"-1",斜率将穿过原点。你可以通过预测x=0时的值来看到这一点:

x <- 1998:2011
y <- 3*x+rnorm(length(x))
fit <- lm(y~x-1)
summary(fit)
newdata <- data.frame(x=0:10)
predict(fit,newdata)

4

正如@Marcinthebox指出的那样,它将穿过原点。为了以图形方式看到它:

x <- seq(-5,5)
y <- 3*x+rnorm(length(x))
fit.int <- lm(y~x)
fit <- lm(y~x-1)
summary(fit)

plot(y~x,xlim=c(-.1,.1),ylim=c(-.1,.1))
abline(fit,col="red")
abline(fit.int,col="blue")
abline(h=0)
abline(v=0)

plot of origin


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