考虑以下 R 代码:
example <- function(n) {
X <- 1:n
Y <- rep(1,n)
return(lm(Y~X))
}
#(2.13.0, i386-pc-mingw32)
summary(example(7)) #R^2 = .1963
summary(example(62)) #R^2 = .4529
summary(example(4540)) #R^2 = .7832
summary(example(104))) #R^2 = 0
#I did a search for n 6:10000, the result for R^2 is NaN for
#n = 2, 4, 16, 64, 256, 1024, 2085 (not a typo), 4096, 6175 (not a typo), and 8340 (not a typo)
查看http://svn.r-project.org/R/trunk/src/appl/dqrls.f)并没有帮助我理解发生了什么,因为我不知道 Fortran。在另一个问题中,有人回答说,浮点机器容差误差应归咎于 X 的系数接近但不完全为 0。
coef(example(n))["X"]当 for 的值接近 0更大。但是......
- 为什么有一个值呢?
- 是什么(具体)决定了它?
- 为什么结果看似有序的进展
NaN? - 为什么违反该进展?
- 这是什么“预期”行为?