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

R 当预测值没有变化时,为什么lm返回值?,r,statistics,linear-regression,lm,R,Statistics,Linear Regression,Lm,考虑下面的R代码(我认为它最终调用了一些Fortran): X我相信这只是因为QR分解是用浮点算法实现的 singular.ok参数实际上是指设计矩阵(即仅X)。试一试 vs 我同意这个问题可能是浮点数的问题。但我不认为这是奇点 如果使用solve(t(x1)%%*%x1)%%*%(t(x1)%%*%Y)而不是QR进行检查,(t(x1)%%*%x1)不是单数 使用x1=cbind(rep(11000,X),因为lm(Y~X)包括截距。从统计学上讲,我们应该预期什么(我想说“expect”,但这是

考虑下面的R代码(我认为它最终调用了一些Fortran):


X我相信这只是因为QR分解是用浮点算法实现的

singular.ok
参数实际上是指设计矩阵(即仅X)。试一试

vs


我同意这个问题可能是浮点数的问题。但我不认为这是奇点

如果使用
solve(t(x1)%%*%x1)%%*%(t(x1)%%*%Y)
而不是QR进行检查,
(t(x1)%%*%x1)
不是单数


使用
x1=cbind(rep(11000,X)
,因为
lm(Y~X)
包括截距。

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

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


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

我明白你的观点。对于较小的N问题,机器公差更接近1E-17,但仍然“可忽略不计”。我想我预期函数会像N=4时那样失败(但(对我来说)奇怪的是,N=3时不会失败)。啊,0.5的R^2是一个非常有趣的问题。我想我会把它作为一个单独的问题来讨论。。。
X <- 1:1000
Y <- rep(1,1000)
summary(lm(Y~X))
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")
lm.fit(cbind(X, X), Y)
lm.fit(cbind(X, X), Y, singular.ok=F)