【问题标题】:Different R-squared for equivalent models等效模型的不同 R 平方
【发布时间】:2022-12-20 21:15:28
【问题描述】:

为什么我得到这两个模型的不同 R 平方值,这应该是等效的(在第二个模型中,截距项被 z 水平代替)?这是一个错误还是我遗漏了什么?

set.seed(42)

N=100

# intercepts
iA = 3
iB = 3.5
# slopes
sA = 1.5
sB = 0.5
# xs
xA = runif(0,1, n=N)
xB = runif(0,1, n=N)
# ys
yA = sA*xA + iA + rnorm(n=N)/10
yB = sB*xB + iB + rnorm(n=N)/10

data = data.frame(x=c(xA, xB), y=c(yA, yB), z=c(rep("A", times=N), rep("B", times=N)))

lm1 = lm(data=data, formula = y ~ x + z)
lm2 = lm(data=data, formula = y ~ x + z -1)

coef(lm1)
coef(lm2)

summary(lm1)$r.squared
summary(lm2)$r.squared

输出:

> coef(lm1)
(Intercept)           x          zB 
 3.23590275  1.03353472 -0.01435266 
> coef(lm2)
       x       zA       zB 
1.033535 3.235903 3.221550 
> 
> summary(lm1)$r.squared
[1] 0.7552991
> summary(lm2)$r.squared
[1] 0.9979477

【问题讨论】:

    标签: r lm


    【解决方案1】:

    来自help("summary.lm")(强调):

    R²,“模型解释的方差分数”,

    R^2 = 1 - rac{sum_i{R_i^2}}{sum_i(y_i- y^*)^2},

    其中 y^* 是 y_i 的平均值如果有截距,否则为零.

    如果您删除截距,则 R² 的定义会有所不同(从统计学家的角度来看这是明智的)。

    【讨论】:

      猜你喜欢
      • 2015-06-25
      • 2018-01-01
      • 2017-05-20
      • 2020-11-02
      • 1970-01-01
      • 2022-06-29
      • 2021-02-15
      • 2011-06-03
      • 2020-02-12
      相关资源
      最近更新 更多