2

我一直在使用 R 和 lm 函数进行线性回归并报告 R2。

y  = c(1,2,3,4)
x  = c(1,2,3,4)
f  = lm(y~x)
r2 = summary(f)$r.squared

然而,有人给了我这个案子——

y = c(1,1,1,1,1)
x = c(75,33,50,33,50)

Excel 报告截距为 1,系数为 0,倍数 R 和 r2 为 1。R 报告截距为 1,系数为 01e-17,倍数 R 平方为 0.3392

不是统计学家,我不明白lm()多重 R 平方的数字是从哪里得到的。有人可以帮我解释一下吗?

如果我将数据更改为

y = c(1,1,1,1,1)
x = c(1,1,1,1,1)

Excel 仍然给出 y = 1 + 0 * x r2 = 1

lm()将斜率报告为 NA 并且不报告多重 R 平方。

虽然这似乎是一个独特的案例,但我仍然被告知我的程序调用lm()不起作用,因为它没有通过这些测试并且 Excel 给出了“预期”的答案。

谢谢

4

1 回答 1

2

我想我会总结与我最初的问题相关的非常有用但很长的一系列评论,我将重申:当 y 不变时,r2 的适当值是多少,即 y 数据可以完全适合方程y = c?

一个。Excel 报告的 r2 为 1。这是我的用户想要的,因为数据完全吻合。

湾。r2 值应反映模型与零假设(即平均值)相比的变异比例。方程是

R2 = 1 - SSR/SST

其中 SSR 是实际值和模型(预测)值之间的平方距离之和,SST 是实际值和平均值之间的平方距离之和。

当数据完全符合水平线时,与平均值没有偏差。因此,询问模型占偏差的比例实际上是没有意义的。从等式中,1 是 0 除以 0。

因此,R 报告的值很可能只是实际上为零的值的舍入误差。

因此,我应该检查这种情况,而不是报告 R2,而不是报告来自 R (lm) 的数字或报告 Excel 给出的值 (1)。

于 2013-05-01T21:03:45.607 回答