小编SES*_*man的帖子

为什么摘要会使用“非拦截”模型公式高估R平方

我想创建一个lm()没有截距系数的简单线性模型(),所以我将-1模型公式输入如下例所示。问题在于R平方的回报summary(myModel)似乎被高估了。lm()summary()并且-1是R中非常经典的函数/功能之一。因此,我有些惊讶,我想知道这是否是一个错误,或者是否有任何这种行为的原因。

这是一个例子:

x <- rnorm(1000, 3, 1)
mydf <- data.frame(x=x, y=1+x+rnorm(1000, 0, 1))
plot(y ~ x, mydf, xlim=c(-2, 10), ylim=c(-2, 10))

mylm1 <- lm(y ~ x, mydf)
mylm2 <- lm(y ~ x - 1, mydf)

abline(mylm1, col="blue") ; abline(mylm2, col="red")
abline(h=0, lty=2) ; abline(v=0, lty=2)

r2.1 <- 1 - var(residuals(mylm1))/var(mydf$y)
r2.2 <- 1 - var(residuals(mylm2))/var(mydf$y)
r2 <- c(paste0("Intercept - r2: ", format(summary(mylm1)$r.squared, digits=4)),
        paste0("Intercept - manual r2: ", …
Run Code Online (Sandbox Code Playgroud)

r summary intercept lm

4
推荐指数
2
解决办法
6469
查看次数

标签 统计

intercept ×1

lm ×1

r ×1

summary ×1