2013-06-12 10 views
6

में हासिल नहीं की जा सकती है, मैं एक पीसी पर आर संस्करण 2.14.0 चला रहा हूं जो विंडोज 7 अल्टीमेट (इंटेल कोर i5-2400 3GHz प्रोसेसर 8.00 जीबी रैम) का उपयोग करता है। अगर मुझे अन्य चश्मे की आवश्यकता है तो मुझे बताएं।पूर्ण परिशुद्धता 'qbeta'

मैं सहसंबंधित बीटा वितरित डेटा अनुकरण करने की कोशिश कर रहा हूं।

http://onlinelibrary.wiley.com/doi/10.1002/asmb.901/pdf

  1. असल में, मैं मल्टीवेरिएट सामान्य डेटा का अनुकरण करके शुरू (मास से mvrnorm() समारोह का उपयोग कर): विधि मैं उपयोग कर रहा हूँ क्या इस पत्र में लिखा है की एक विस्तार है।
  2. फिर मैं इन डेटा में प्रोबिट ट्रांसफॉर्म लागू करने के लिए pnorm() का उपयोग करता हूं जैसे कि मेरा नया डेटा वेक्टर (0,1) रहता है। और अभी भी पिछले बयान के अनुसार सहसंबंधित हैं।
  3. फिर इन प्रोबिट ट्रांसफॉर्म किए गए डेटा को देखते हुए मैं कुछ आकार और फैलाव गुणों के साथ सहसंबंधित बीटा डेटा वापस पाने के लिए qbeta() फ़ंक्शन को कुछ आकार 1 और आकार 2 पैरामीटर के साथ लागू करता हूं।

मैं सहसंबंधित बीटा डेटा उत्पन्न करने के लिए अन्य विधियों को जानता हूं। मुझे दिलचस्पी है क्यों qbeta() इस विधि को कुछ "बीज" के लिए विफल होने का कारण बनता है। नीचे मुझे मिला त्रुटि संदेश है।

Warning message: 
In qbeta(probit_y0, shape1 = a0, shape2 = b0) : 
    full precision may not have been achieved in 'qbeta' 

इसका क्या अर्थ है? इसे कैसे टाला जा सकता है? जब यह एक बड़े सिमुलेशन के संदर्भ में होता है तो यह सुनिश्चित करने का सबसे अच्छा तरीका क्या है कि यह समस्या संपूर्ण सोर्स (स्रोत()) सिमुलेशन कोड को समाप्त नहीं करती है?

मैंने 1: 1000 से पूर्णांक बीज के लिए निम्न कोड चलाया। बीज = 89 9 एकमात्र मूल्य था जिसने मुझे समस्याएं दीं। यद्यपि यहां इसकी समस्याग्रस्त है, लेकिन यह अनिवार्य रूप से अन्य बीजों के लिए भी समस्याग्रस्त हो जाएगा।

library(MASS) 
set.seed(899) 
n0 <- 25 
n1 <- 25  
a0 <- 0.25  
b0 <- 4.75  
a1 <- 0.25  
b1 <- 4.75  
varcov_mat <- matrix(rep(0.25,n0*n0),ncol=n0) 
diag(varcov_mat) <- 1 
y0 <- mvrnorm(1,mu=rep(0,n0),Sigma=varcov_mat) 
y1 <- mvrnorm(1,mu=rep(0,n1),Sigma=varcov_mat) 
probit_y0 <- pnorm(y0) 
probit_y1 <- pnorm(y1) 
beta_y0 <- qbeta(probit_y0, shape1=a0, shape2=b0) 
beta_y1 <- qbeta(probit_y1, shape1=a1, shape2=b1) 

उपरोक्त कोड एक बड़े सिमुलेशन प्रोजेक्ट के टुकड़े का एक टुकड़ा है। लेकिन qbeta() चेतावनी संदेश वह है जो मुझे अब सिरदर्द दे रहा है।

समूह द्वारा प्रदान की जाने वाली कोई भी सहायता की सराहना की जाएगी।

चीयर्स क्रिस

+0

मुझे आर 3.0.1 के साथ चेतावनी नहीं मिली है। आर – Roland

+0

अद्यतन करने पर विचार करें 2.1 2.1.1 – eddi

+0

पर कोई चेतावनी धन्यवाद @ रोलैंड। मैंने आर 3.0.1 (32 बिट) का नवीनतम संस्करण डाउनलोड किया। मैंने उपरोक्त के समान कोड चलाया ... set.seed (216) और एक ही त्रुटि प्राप्त करें: चेतावनी संदेश: qbeta (probit_y1, shape1 = a1, shape2 = b1) में: पूर्ण परिशुद्धता ' qbeta ' – Chris

उत्तर

2

त्रुटि के लिए कारण यह है कि qbeta गणना के लिए इस्तेमाल एल्गोरिथ्म मापदंडों के उन मूल्यों के लिए अभिसरण नहीं किया है।

आर qbeta गणना करने के लिए 109 के रूप में उपयोग करता है (Cran, गिनीकृमि, के.जे. मार्टिन और जीई थॉमस (1977)। टिप्पणी R19 और एल्गोरिथ्म 109 के रूप में, एप्लाइड सांख्यिकी, 26, 111-114 के रूप में, और बाद में टिप्पणी (AS83 और सुधार) ।)। आर 1000 पुनरावृत्तियों में मूल्य की गणना करने की कोशिश करता है। यदि यह 1000 पुनरावृत्तियों में नहीं हो सकता है, तो आपको दिखाई देने वाला त्रुटि संदेश मिलता है।

यहां qbeta के लिए कोड है।

संबंधित मुद्दे