r - 当预测值没有变化时,为什么 lm 会返回值?

标签 r statistics linear-regression lm

考虑以下 R 代码(我认为最终会调用一些 Fortran):

X <- 1:1000
Y <- rep(1,1000)
summary(lm(Y~X))

为什么摘要返回值?由于 Y 没有变化,这个模型不应该不适合吗?更重要的是,为什么模型 R^2 ~= .5?

编辑

我跟踪了从 lm 到 lm.fit 的代码,可以看到这个调用:
z <- .Fortran("dqrls", qr = x, n = n, p = p, y = y, ny = ny,
   tol = as.double(tol), coefficients = mat.or.vec(p, ny), residuals = y,
   effects = y, rank = integer(1L), pivot = 1L:p, qraux = double(p),
   work = double(2 * p), PACKAGE = "base")

这就是实际拟合似乎发生的地方。看着 http://svn.r-project.org/R/trunk/src/appl/dqrls.f ) 没有帮助我理解发生了什么,因为我不知道 fortran。

最佳答案

从统计上讲,我们应该期待什么(我想说“期望”,但这是一个非常具体的术语 ;-))?系数应该是 (0,1),而不是“无法拟合”。假设 (X,Y) 的协方差与 X 的方差成正比,而不是相反。由于 X 具有非零方差,因此没有问题。由于协方差为 0,因此 X 的估计系数应为 0。因此,在机器容差范围内,这就是您得到的答案。

这里没有统计异常。可能存在统计上的误解。还有机器容差问题,但考虑到预测变量和响应值的规模,1E-19 数量级的系数可以忽略不计。

更新 1:可以在 this Wikipedia page 上找到简单线性回归的快速回顾.要注意的关键是Var(x)是分母,Cov(x,y)在分子中。在这种情况下,分子为 0,分母为非零,因此没有理由期望 NaNNA .然而,人们可能会问为什么 x 的结果系数不是0 ,这与 QR 分解的数值精度问题有关。

关于r - 当预测值没有变化时,为什么 lm 会返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9245045/

相关文章:

R 基础知识 : working with multiple variables at once and their output

python - 尝试构建一个程序来组织安全数据并将其显示在图表中

r - 分类变量的多重共线性

python - 如何对某些十进制数据应用 scikit-learn 逻辑回归?

r - 选择字符串的多种模式

r - 如何使用 devtools install_github 从私有(private)仓库安装 R 包?

r - nlme 和 lme4 忽略平方项

r - 使用 R 将列表转换为 csv 文件

r - 总结 R 中特定列的总数

python - R lm 与 Python sklearn linear_model