다음 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을 모르기 때문에 진행 상황을 이해하는 데 도움이되지 않았습니다. 또 다른 질문 에서 부동 소수점 기계 공차 오류는 0에 가깝지 않지만 X에 가까운 계수에 대한 책임이 있다고 대답했습니다.
의 값 coef(example(n))["X"]이 0에 가까울수록 가 더 큽니다. 그러나 ...
- 왜 값이 있습니까?
- 무엇을 결정 하는가?
- 겉보기에 질서 정연한
NaN결과가 나타나는 이유는 무엇 입니까? - 왜 그 진행을 위반합니까?
- 이 중 '예상'동작은 무엇입니까?
Y <- rep(1,n)+runif(n)*ynoise) 흥미로운 점이 있습니다 :-)
apply(as.matrix(2:17), 1, function(n){example(n)$coefficients[-1]}). (Win 7 x64 Xeon에서 내 결과는 -8e-17에서 + 3e-16까지이며 약 절반은 0입니다.) BTW, Fortran 소스는 도움이되지 않습니다 .dqrdc의 래퍼 일뿐입니다. 그것이 당신이보고자하는 코드입니다.