2016-12-19 11 views
5

मुझे निम्नलिखित चेतावनियां दिखाई देती हैं। क्या किसी को पता है कि इस तथ्य के बावजूद ऐसी चेतावनियां क्यों हैं कि फिट ठीक काम करने लगता है? क्या अनुकूलन को बेहतर तरीके से काम करने का कोई तरीका है ताकि यह इन चेतावनियों को उत्पन्न न करे?फिटडिस्टर() डबेटा के साथ चेतावनी: "डेंसफुन (एक्स, पार्म [1], पार्म [2], ...): NaNs ने उत्पादित किया"

R> library(MASS) 
R> set.seed(0) 
R> x=rbeta(1000, shape1=1, shape2=1) 
R> fitdistr(x, dbeta, list(shape1=1,shape2=1)) 
    shape1  shape2 
    1.00959537 0.99603351 
(0.04183720) (0.04116276) 
Warning messages: 
1: In densfun(x, parm[1], parm[2], ...) : NaNs produced 
2: In densfun(x, parm[1], parm[2], ...) : NaNs produced 
R> x=rbeta(1000, shape1=10, shape2=10) 
R> fitdistr(x, dbeta, list(shape1=1,shape2=1)) 
    shape1  shape2 
    8.5038157 8.5794416 
(0.3749814) (0.3784147) 

उत्तर

4

समस्या यह है कि fitdistr आकार और पैमाने विवश नहीं है सकारात्मक हो रहा है।

library(MASS) 
set.seed(0) 
x <- rbeta(1000, shape1=1, shape2=1) 
f1 <- fitdistr(x, dbeta, list(shape1=1,shape2=1)) 

यह आमतौर पर नहीं एक समस्या है, तो अनुकूलन एल्गोरिथ्म एक व्यवहार्य समाधान है कि सीमा पर नहीं है के रास्ते पर कुछ अव्यवहार्य पैरामीटर मान की कोशिश करता है, लेकिन मैं इस बात से सहमत है कि यह चेतावनी से बचने के लिए जहां भी संभव प्रयास करने के लिए बेहतर है।

आप कम सीमा अपने आप को निर्दिष्ट कर सकते हैं:

...: अतिरिक्त पैरामीटर 'densfun', या तो के लिए या 'optim' के लिए। विशेष रूप से, इसका उपयोग 'निचला' या 'ऊपरी' या दोनों के माध्यम से सीमा निर्दिष्ट करने के लिए किया जा सकता है।

f2 <- fitdistr(x, dbeta, list(shape1=1,shape2=1), 
       lower=c(0,0)) 

(कोई चेतावनी)। जवाब बिल्कुल समान नहीं हैं, लेकिन वे बहुत करीब हैं (यह संख्यात्मक अनुकूलन परिणामों से अपेक्षित है)।

all.equal(coef(f1),coef(f2),tol=1e-6) 
संबंधित मुद्दे