मैं सेगमेंट किए गए पैकेज के साथ काम कर रहा हूं और किसी फ़ंक्शन के भीतर davies.test()
पर कॉल करते समय समस्या का सामना करना पड़ा है।पर्यावरण को संलग्न करने से डेटा तक पहुंचने का कार्य
library(segmented)
data = data.frame(x = 1:21, y = c(10:1, 0:10))
fit = lm(y ~ x, data = data)
fit.seg = segmented(fit, seg.Z = ~ x)
davies.test(fit.seg, seg.Z = ~ x, alternative = "greater")
कि पूरी तरह से काम करता है और पता चलता है कि खंडित प्रतिगमन दो सांख्यिकीय अलग ढलानों है:
निम्नलिखित स्थिति पर विचार करें।
अब अगर मैं इस तरह एक समारोह में यह सब पैकेज:
testit <- function() {
data = data.frame(x = 1:21, y = c(10:1, 0:10))
fit = lm(y ~ x, data)
fit.seg = segmented(fit, seg.Z = ~ x)
davies.test(fit.seg, seg.Z = ~ x, alternative = "greater")$p.value
}
testit()
तो यह ठीक काम करता है ...
लेकिन अगर मैं वैश्विक वातावरण से fit
हटाना तो यह विफल रहता है।
> rm(fit)
> testit()
Error in eval(expr, envir, enclos) : object 'fit' not found
समस्या
तरीका है कि davies.test
डेटा fit
में समझाया का उपयोग करने की कोशिश कर रहा है के साथ हो रहा है: यह enclosing दायरे में fit
देखने के लिए (जो इस मामले में testit
समारोह है) नहीं लगता है , लेकिन सीधे वैश्विक दायरे में छोड़ देता है।
मुझे यकीन है कि समस्या आर के स्कॉइंग नियमों के साथ कुछ सूक्ष्मता से संबंधित है। अगर मुझे एक त्वरित फिक्स मिल सकता है जो मुझे इस एज केस के साथ पैकेज लेखक को परेशान करने से रोक देगा, तो यह बहुत अच्छा होगा।
धन्यवाद, एंड्रयू।
धन्यवाद। यह चेतावनी सिर्फ उस तरीके के कारण है जिस पर परीक्षण डेटा बनाया गया है। कोई संबंधित मुद्दा नहीं है। – DataWookie