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

rus*_*rce 6 statistics r linear-regression lm

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

X <- 1:1000
Y <- rep(1,1000)
summary(lm(Y~X))
Run Code Online (Sandbox Code Playgroud)

为什么值汇总返回?这个模型不应该适合,因为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")
Run Code Online (Sandbox Code Playgroud)

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

Ite*_*tor 5

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

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

更新1:可以在此维基百科页面上找到简单线性回归的快速回顾.需要注意的关键Var(x)是分母Cov(x,y)中的分母.在这种情况下,分子为0,分母不为零,因此没有理由期望a NaNNA.然而,人们可能会问,为什么不为所产生的系数x一个0,并具有与QR分解的数值精度问题做.