दिलचस्प पोस्ट
मैं जावा प्रिंट उद्धरण कैसे बना सकता हूं, जैसे "हैलो"? जन्म तिथि के आधार पर आयु की गणना करें इंटेल सिंटैक्स में विधानसभा कोड उत्पन्न करने के लिए आप जीसीसी का उपयोग कैसे करते हैं? Jquery ajax का उपयोग कर पीडीएफ फाइल डाउनलोड करें रिकॉर्ड किए गए वीडियो पर आईफोन वॉटरमार्क n कस्टम प्रकार के लिए मैपिंग हेइबरनेट करें PHP DomDocument UTF-8 वर्ण (☆) को संभालने में असफल रहा है फ़ायरफ़ॉक्स में फ्लेक्स आइटम पर पैडिंग / मार्जिन का प्रतिशत क्यों नहीं है? कई परीक्षणों के लिए सेट अप / टायर ड्यूउन को एकजुट करें स्थानीय एप्लिकेशन डेटा निर्देशिका के पथ को प्राप्त करने का क्रॉस-प्लेटफ़ॉर्म तरीका क्या है? क्या यह जांचना संभव है कि क्या कोई वस्तु पहले से इकाई मापदंड में डेटा संदर्भ से जुड़ी हुई है? एसिंक्रोनस / पृष्ठभूमि थ्रेड स्थिति की निगरानी कैसे करें और JSF घटक में नोटिफिकेशन प्राप्त करें sv3 के बाहर एक बटन से डी 3 में नोड पर क्लिक करना मैं अपनी बैच फ़ाइल को कैसे स्वत: बढ़ा सकता हूं, ताकि यह आवश्यक हो कि यूएए प्रशासक अधिकारों से अनुरोध करे? एक्लिप्स कंसोल दृश्य जो एएनएसआई रंग कोड का सम्मान करता है?

कर्व के तहत क्षेत्र की गणना करें

मैं एक वक्र के तहत क्षेत्र की गणना करना चाहूंगा ताकि एक समारोह को परिभाषित किए बिना integrate() जैसे integrate()

मेरा डेटा इस रूप में दिखता है:

 Date Strike Volatility 2003-01-01 20 0.2 2003-01-01 30 0.3 2003-01-01 40 0.4 etc. 

मैंने अस्थिरता मुस्कुराहट को देखने के लिए plot(strike, volatility) रची। क्या इस प्लॉट "वक्र" को एकीकृत करने का एक तरीका है?

वेब के समाधान से एकत्रित समाधान "कर्व के तहत क्षेत्र की गणना करें"

एयूसी बहुत सारे ट्रेपेज़ियम आंकड़े को देखकर बहुत आसानी से अनुमानित है, हर बार x_i , x_{i+1} , y{i+1} और y_i । चिड़ियाघर पैकेज के रोलमेन का उपयोग करके, आप यह कर सकते हैं:

 library(zoo) x <- 1:10 y <- 3*x+25 id <- order(x) AUC <- sum(diff(x[id])*rollmean(y[id],2)) 

सुनिश्चित करें कि आप x मानों को ऑर्डर करते हैं, या आपका परिणाम अर्थ नहीं होगा। यदि आपके पास y अक्ष के साथ कहीं नकारात्मक मान हैं, तो आपको यह पता लगाना होगा कि आप वक्र के नीचे क्षेत्र को किस प्रकार परिभाषित करना चाहते हैं, और तदनुसार समायोजित करें (जैसे abs() का प्रयोग करना)

आपके अनुवर्ती के बारे में: यदि आपके पास कोई औपचारिक कार्य नहीं है, तो आप इसे कैसे छान लेंगे? इसलिए यदि आपके पास केवल मान हैं, तो आप जिस चीज का अनुमान लगा सकते हैं वह एक निश्चित अभिन्न है यहां तक ​​कि अगर आपके पास आर में फ़ंक्शन है, तो आप केवल integrate() का उपयोग करके निश्चित समेकन की गणना कर सकते हैं। यदि आप इसे परिभाषित भी कर सकते हैं, तो औपचारिक कार्य केवल प्लॉट करना संभव है

बस अपने कार्यक्रम के लिए निम्नलिखित जोड़ें और आप वक्र के तहत क्षेत्र प्राप्त करेंगे:

 require(pracma) AUC = trapz(strike,volatility) 

से ?trapz :

यह दृष्टिकोण बेसपॉइंट x के साथ ट्रिपोज़ाइडल नियम का उपयोग करते हुए फ़ंक्शन को एकीकृत करने के लिए बिल्कुल सटीक मानता है।

तीन और विकल्प, जिनमें एक को एक पट्टी विधि का उपयोग कर और एक सिम्पसन के नियम का उपयोग कर शामिल है …

 # get data n <- 100 mean <- 50 sd <- 50 x <- seq(20, 80, length=n) y <- dnorm(x, mean, sd) *100 # using sintegral in Bolstad2 require(Bolstad2) sintegral(x,y)$int # using auc in MESS require(MESS) auc(x,y, type = 'spline') # using integrate.xy in sfsmisc require(sfsmisc) integrate.xy(x,y) 

ट्रेपेज़ोडायडल विधि स्पीन विधि से कम सटीक है, इसलिए MESS::auc ( Bolstad2::sintegral पद्धति का उपयोग करता है) या Bolstad2::sintegral (सिम्पसन के नियम का उपयोग करता है) संभवतः पसंदीदा होना चाहिए इन के DIY संस्करण (और क्वाड्रचर नियम का उपयोग करते हुए एक अतिरिक्त तरीका) यहां हैं: http://www.r-bloggers.com/one-dimensional-integrals/

ठीक है, तो मैं पार्टी में थोड़ी देर तक आती हूं लेकिन जवाबों से गुजर रहा हूं, समस्या के समाधान के लिए एक सादे हल। यहां, सरल और साफ हो जाता है:

 sum(diff(x) * (head(y,-1)+tail(y,-1)))/2 

ओपी के लिए समाधान तब पढ़ता है:

 sum(diff(strike) * (head(volatility,-1)+tail(volatility,-1)))/2 

यह प्रभावी रूप से "बाएं" और "दाएं" वाई-मानों की औसत ले कर trapezoidal विधि का उपयोग करके क्षेत्र की गणना करता है

एनबी: @जोरिस ने पहले ही बताई है कि आप एब्स abs(y) उपयोग कर सकते हैं यदि यह अधिक समझदारी पैदा करेगा

फार्माकोकाइनेटिक्स (पीके) की दुनिया में, विभिन्न प्रकार के एयूसी की गणना एक सामान्य और मौलिक काम है। फार्माकोटिक्स के लिए बहुत सारे एउसी गणनाएं हैं, जैसे कि

  • AUC0-t = AUC शून्य से समय तक टी
  • AUC0-last = AUC शून्य से अंतिम समय बिंदु तक (ऊपर के जैसा हो सकता है)
  • AUC0-inf = AUC शून्य से लेकर अनंत तक
  • AUCint = AUC एक समय अंतराल पर
  • AUCall = AUC पूरे समय अवधि के लिए जिसके लिए डेटा मौजूद है

फाइजर पर लोगों से अपेक्षाकृत नया पैकेज PKNCA है जो ये गणना करता है सबसे अच्छे पैकेज में से एक है। इसकी जांच – पड़ताल करें।

जॉरिस मेस का जवाब बहुत अच्छा था, लेकिन मैं अपने नमूनों से एनएएस को हटाने की कोशिश कर रहा था। यहाँ उनके साथ काम करने के लिए लिखा गया छोटा कार्य है:

 library(zoo) #for the rollmean function ###### #' Calculate the Area Under Curve of y~x #' #'@param y Your y values (measures ?) #'@param x Your x values (time ?) #'@param start : The first x value #'@param stop : The last x value #'@param na.stop : returns NA if one value is NA #'@param ex.na.stop : returns NA if the first or the last value is NA #' #'@examples #'myX = 1:5 #'myY = c(17, 25, NA, 35, 56) #'auc(myY, myX) #'auc(myY, myX, na.stop=TRUE) #'myY = c(17, 25, 28, 35, NA) #'auc(myY, myX, ex.na.stop=FALSE) auc = function(y, x, start=first(x), stop=last(x), na.stop=FALSE, ex.na.stop=TRUE){ if(all(is.na(y))) return(NA) bounds = which(x==start):which(x==stop) x=x[bounds] y=y[bounds] r = which(is.na(y)) if(length(r)>0){ if(na.stop==TRUE) return(NA) if(ex.na.stop==TRUE & (is.na(first(y)) | is.na(last(y)))) return(NA) if(is.na(last(y))) warning("Last value is NA, so this AUC is bad and you should feel bad", call. = FALSE) if(is.na(first(y))) warning("First value is NA, so this AUC is bad and you should feel bad", call. = FALSE) x = x[-r] y = y[-r] } sum(diff(x[order(x)])*rollmean(y[order(x)],2)) } 

तो मैं इसे अपने myDF$auc = apply(myDF, MARGIN=1, FUN=auc, x=c(0,5,10,15,20)) पर लागू होने के साथ प्रयोग करता हूं: myDF$auc = apply(myDF, MARGIN=1, FUN=auc, x=c(0,5,10,15,20))

आशा है कि यह मेरे जैसे noobs मदद कर सकते हैं 🙂

संपादित करें: जोड़ा सीमाएं

आप आरओसीआर पैकेज का उपयोग कर सकते हैं, जहां निम्न पंक्तियां आपको AUC देगी:

 pred <- prediction(classifier.labels, actual.labs) attributes(performance(pred, 'auc'))$y.values[[1]]