निम्नलिखित आर कोड पर विचार करें:
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 ) को देखकर मुझे यह समझने में मदद नहीं मिली कि क्या चल रहा है, क्योंकि मैं फोरट्रान को नहीं जानता। एक अन्य प्रश्न में यह उत्तर दिया गया था कि फ्लोटिंग पॉइंट मशीन टॉलरेंस त्रुटियां एक्स के लिए गुणांक के लिए दोषी हैं जो कि करीब हैं, लेकिन काफी 0 नहीं हैं।
अधिक है जब मान0 के करीब होता है लेकिन ...coef(example(n))["X"]
- मान क्यों है ?
- क्या (विशेष रूप से) यह निर्धारित कर रहा है?
NaN
परिणामों की क्रमबद्ध प्रगति क्यों प्रतीत होती है ?- उस प्रगति के उल्लंघन क्यों?
- यह 'अपेक्षित' व्यवहार क्या है?
Y <- rep(1,n)+runif(n)*ynoise
), यह दिलचस्प होगा :-)
apply(as.matrix(2:17), 1, function(n){example(n)$coefficients[-1]})
। (मेरे परिणाम, एक जीत 7 x64 Xeon पर, -8e-17 से + 3e-16 तक, लगभग आधा सच शून्य हैं।) BTW, फोरट्रान स्रोत से कोई मदद नहीं मिलती है: यह सिर्फ drrdc के लिए एक आवरण है; वह कोड जिसे आप देखना चाहते हैं।