【发布时间】: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
【问题讨论】: