Considere el siguiente código 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)
Mirar http://svn.r-project.org/R/trunk/src/appl/dqrls.f ) no me ayudó a entender lo que está sucediendo, porque no conozco Fortran. En otra pregunta , se respondió que los errores de tolerancia de máquina de coma flotante eran los culpables de los coeficientes para X que están cerca, pero no del todo 0.
es mayor cuando el valor deestá más cerca de 0. Pero ...coef(example(n))["X"]
- ¿Por qué hay un valor ?
- ¿Qué (específicamente) lo está determinando?
- ¿Por qué la progresión aparentemente ordenada de los
NaNresultados? - ¿Por qué las violaciones de esa progresión?
- ¿Qué de esto es el comportamiento 'esperado'?
Y <- rep(1,n)+runif(n)*ynoise), eso sería interesante :-)
apply(as.matrix(2:17), 1, function(n){example(n)$coefficients[-1]}). (Mis resultados, en un Win 7 x64 Xeon, varían de -8e-17 a + 3e-16; aproximadamente la mitad son ceros verdaderos). Por cierto, la fuente Fortran no es de ayuda: es solo un contenedor para dqrdc; ese es el código que quieres mirar.