考虑以下 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。