एरिया अंडर कर्व (एयूसी) या सी-स्टेटिस्टिक की गणना हाथ से कैसे करें


78

मैं वक्र (एयूसी), या सी-स्टेटिस्टिक के तहत क्षेत्र की गणना करने में रुचि रखता हूं, बाइनरी लॉजिस्टिक रिग्रेशन मॉडल के लिए हाथ से।

उदाहरण के लिए, सत्यापन डेटासेट में, मेरे पास आश्रित चर के लिए सही मूल्य है, अवधारण (1 = अनुरक्षित; 0 = अनुरक्षित नहीं है), साथ ही मेरे प्रतिगमन विश्लेषण द्वारा उत्पन्न प्रत्येक अवलोकन के लिए एक अनुमानित प्रतिधारण स्थिति का उपयोग करके एक मॉडल का उपयोग किया जाता है। प्रशिक्षण सेट का उपयोग करके बनाया गया (यह 0 से 1 तक होगा)।

मेरे प्रारंभिक विचार मॉडल वर्गीकरणों की "सही" संख्या की पहचान करने के लिए थे और सी-स्टैटिस्टिक्स की गणना करने के लिए कुल टिप्पणियों की संख्या से "सही" टिप्पणियों की संख्या को विभाजित करें। "सही" के द्वारा, यदि किसी अवलोकन = 1 की वास्तविक अवधारण स्थिति और पूर्वानुमानित अवधारण स्थिति> 0.5 है तो यह "सही" वर्गीकरण है। इसके अतिरिक्त, यदि अवलोकन का वास्तविक प्रतिधारण स्थिति = 0 और अनुमानित अवधारण स्थिति <0.5 है, तो यह भी एक "सही" वर्गीकरण है। मुझे लगता है कि एक "टाई" तब होगी जब अनुमानित मूल्य = 0.5 होगा, लेकिन वह घटना मेरे सत्यापन डेटासेट में नहीं होती है। दूसरी ओर, "गलत" वर्गीकरण तब होगा जब अवलोकन का वास्तविक प्रतिधारण स्थिति = 1 और अनुमानित अवधारण स्थिति <0 है। 5 या अगर किसी परिणाम के लिए सही अवधारण स्थिति = 0 और अनुमानित अवधारण स्थिति> 0.5 है। मुझे टीपी, एफपी, एफएन, टीएन के बारे में पता है, लेकिन इस जानकारी को देखते हुए सी-स्टैटिस्टिक्स की गणना करने के तरीके के बारे में पता नहीं है।

जवाबों:


115

मैं हैनली और मैकनील के 1982 के पेपर की सिफारिश करूंगा ' रिसीवर ऑपरेटिंग विशेषता (आरओसी) वक्र ' के तहत क्षेत्र का अर्थ और उपयोग

उदाहरण

उनके पास बीमारी की स्थिति और परीक्षा परिणाम की निम्न तालिका है (उदाहरण के लिए, एक लॉजिस्टिक मॉडल से अनुमानित जोखिम)। दाईं ओर की पहली संख्या असली रोग की स्थिति वाले रोगियों की संख्या 'सामान्य' है और दूसरी संख्या सही रोग की स्थिति वाले रोगियों की संख्या 'असामान्य' है:

(1) निश्चित रूप से सामान्य: 33/3
(2) संभवतः सामान्य: 6/2
(3) प्रश्न: 6/2
(4) संभवतः असामान्य: 11/11
(5) निश्चित रूप से असामान्य: 2/33

तो कुल 58 'सामान्य' रोगी और '51' असामान्य व्यक्ति हैं। हम देखते हैं कि जब पूर्वसूचक 1, 'निश्चित रूप से सामान्य' है, तो रोगी आमतौर पर सामान्य होता है (36 में से 33 रोगियों के लिए सच है), और जब यह 5 होता है, तो 'निश्चित रूप से असामान्य' रोगी आमतौर पर असामान्य (33 में से 33 के लिए सच है) 35 रोगियों), तो भविष्यवक्ता समझ में आता है। लेकिन हमें एक मरीज को 2, 3 या 4 के अंक के साथ कैसे आंकना चाहिए? परिणामी परीक्षण की संवेदनशीलता और विशिष्टता को निर्धारित करने के लिए हम असामान्य या सामान्य के रूप में रोगियों को पहचानने के लिए अपना कटऑफ निर्धारित करते हैं।

संवेदनशीलता और विशिष्टता

हम अलग-अलग कटऑफ के लिए अनुमानित संवेदनशीलता और विशिष्टता की गणना कर सकते हैं। (मैं अभी से 'संवेदनशीलता' और 'विशिष्टता' लिखूंगा, जिससे मानों की अनुमानित प्रकृति निहित होगी।)

यदि हम अपना कटऑफ चुनते हैं ताकि हम सभी रोगियों को असामान्य के रूप में वर्गीकृत करें , तो कोई बात नहीं कि उनका परीक्षा परिणाम क्या कहता है (यानी, हम कटऑफ 1+ चुनते हैं), हमें 51/51 = 1 की संवेदनशीलता मिलेगी। विशिष्टता 0 होगी / 58 = 0. इतनी अच्छी आवाज नहीं है।

ठीक है, तो चलो एक कम सख्त कटऑफ चुनें। हम केवल रोगियों को असामान्य के रूप में वर्गीकृत करते हैं यदि उनके पास 2 या अधिक का परीक्षा परिणाम है। हम तब 3 असामान्य रोगियों को याद करते हैं, और 48/51 = 0.94 की संवेदनशीलता है। लेकिन हमारे पास 33/58 = 0.57 की बहुत अधिक विशिष्टता है।

अब हम इसे जारी रख सकते हैं, विभिन्न कटऑफ (3, 4, 5,> 5) का चयन करते हुए। (अंतिम स्थिति में, हम किसी भी मरीज को असामान्य रूप से वर्गीकृत नहीं करेंगे, भले ही उनका उच्चतम परीक्षण स्कोर 5 हो।)

ROC वक्र

यदि हम सभी संभावित कटऑफ के लिए ऐसा करते हैं, और 1 न्यूनतम विशिष्टता के खिलाफ संवेदनशीलता की साजिश करते हैं, तो हमें आरओसी वक्र प्राप्त होता है। हम निम्नलिखित आर कोड का उपयोग कर सकते हैं:

# Data
norm     = rep(1:5, times=c(33,6,6,11,2))
abnorm   = rep(1:5, times=c(3,2,2,11,33))
testres  = c(abnorm,norm)
truestat = c(rep(1,length(abnorm)), rep(0,length(norm)))

# Summary table (Table I in the paper)
( tab=as.matrix(table(truestat, testres)) )

आउटपुट है:

        testres
truestat  1  2  3  4  5
       0 33  6  6 11  2
       1  3  2  2 11 33

हम विभिन्न आँकड़ों की गणना कर सकते हैं:

( tot=colSums(tab) )                            # Number of patients w/ each test result
( truepos=unname(rev(cumsum(rev(tab[2,])))) )   # Number of true positives
( falsepos=unname(rev(cumsum(rev(tab[1,])))) )  # Number of false positives
( totpos=sum(tab[2,]) )                         # The total number of positives (one number)
( totneg=sum(tab[1,]) )                         # The total number of negatives (one number)
(sens=truepos/totpos)                           # Sensitivity (fraction true positives)
(omspec=falsepos/totneg)                        # 1 − specificity (false positives)
sens=c(sens,0); omspec=c(omspec,0)              # Numbers when we classify all as normal

और इसका उपयोग करके, हम अनुमानित (अनुमानित) आरओसी वक्र की साजिश कर सकते हैं:

plot(omspec, sens, type="b", xlim=c(0,1), ylim=c(0,1), lwd=2,
     xlab="1 − specificity", ylab="Sensitivity") # perhaps with xaxs="i"
grid()
abline(0,1, col="red", lty=2)

औक वक्र

मैन्युअल रूप से एयूसी की गणना

हम बहुत आसानी से आरओसी वक्र के तहत क्षेत्र की गणना कर सकते हैं, एक ट्रेपोजॉइड के क्षेत्र के लिए सूत्र का उपयोग कर:

height = (sens[-1]+sens[-length(sens)])/2
width = -diff(omspec) # = diff(rev(omspec))
sum(height*width)

परिणाम 0.8931711 है।

एक समास उपाय

एयूसी को एक सहमति उपाय के रूप में भी देखा जा सकता है। यदि हम उन सभी संभावित जोड़ों को लेते हैं जहां एक सामान्य है और दूसरा असामान्य है, तो हम गणना कर सकते हैं कि यह कितनी बार असामान्य है जिसका उच्चतम (सबसे 'असामान्य-दिखने वाला') परीक्षण परिणाम है (यदि उनका समान मूल्य है, तो हम गिनें कि यह 'आधी जीत' के रूप में है:)

o = outer(abnorm, norm, "-")
mean((o>0) + .5*(o==0))

जवाब फिर से 0.8931711, आरओसी वक्र के तहत क्षेत्र है। हमेशा ऐसा ही रहेगा।

सहमति का एक चित्रमय दृश्य

जैसा कि हार्ले ने अपने उत्तर में बताया है, इसकी एक चित्रमय व्याख्या भी है। चलो पर साजिश परीक्षण स्कोर (जोखिम अनुमान) y अक्ष और पर सच रोग की स्थिति एक्स अक्ष (यहाँ कुछ jittering के साथ हैं, तो ओवरलैप अंक दिखाने के लिए):

plot(jitter(truestat,.2), jitter(testres,.8), las=1,
     xlab="True disease status", ylab="Test score")

सच्ची बीमारी की स्थिति के खिलाफ जोखिम स्कोर की साजिश।

आइए अब बाईं ओर प्रत्येक बिंदु (एक 'सामान्य' रोगी) और दाईं ओर प्रत्येक बिंदु ('असामान्य' रोगी) के बीच एक रेखा बनाएं। एक सकारात्मक ढलान के साथ लाइनों का अनुपात (यानी, समवर्ती जोड़े का अनुपात ) समरूपता सूचकांक (सपाट रेखाएं '50% समाकलन 'के रूप में गिना जाता है)।

संबंधों की संख्या (समान जोखिम स्कोर) के कारण, इस उदाहरण के लिए वास्तविक लाइनों की कल्पना करना थोड़ा मुश्किल है, लेकिन कुछ घबराहट और पारदर्शिता के साथ हम एक उचित साजिश प्राप्त कर सकते हैं:

d = cbind(x_norm=0, x_abnorm=1, expand.grid(y_norm=norm, y_abnorm=abnorm))
library(ggplot2)
ggplot(d, aes(x=x_norm, xend=x_abnorm, y=y_norm, yend=y_abnorm)) +
  geom_segment(colour="#ff000006",
               position=position_jitter(width=0, height=.1)) +
  xlab("True disease status") + ylab("Test\nscore") +
  theme_light()  + theme(axis.title.y=element_text(angle=0))

सभी संभावित अवलोकन जोड़े के बीच की रेखाओं के साथ, सच्ची बीमारी की स्थिति के खिलाफ जोखिम स्कोर की साजिश।

हम देखते हैं कि अधिकांश रेखाएँ ऊपर की ओर ढलान देती हैं, इसलिए समवर्ती सूचकांक अधिक होगा। हम प्रत्येक प्रकार के अवलोकन जोड़े से सूचकांक में योगदान भी देखते हैं। इसका अधिकांश हिस्सा सामान्य रोगियों से आता है, जिसमें 5 के जोखिम वाले अंक वाले असामान्य रोगियों के साथ 1 (5-5 जोड़े) का जोखिम होता है, लेकिन काफी कुछ 1-4 जोड़े और 4-5 जोड़े से भी आता है। और ढलान की परिभाषा के आधार पर वास्तविक समापक सूचकांक की गणना करना बहुत आसान है:

d = transform(d, slope=(y_norm-y_abnorm)/(x_norm-x_abnorm))
mean((d$slope > 0) + .5*(d$slope==0))

उत्तर फिर से 0.8931711 है, अर्थात, एयूसी।

विलकॉक्सन-मान-व्हिटनी परीक्षण

कॉनकॉर्ड उपाय और विलकॉक्सन-मान-व्हिटनी परीक्षण के बीच घनिष्ठ संबंध है। वास्तव में, बाद के परीक्षण यदि समवर्ती की संभावना (यानी, यह एक यादृच्छिक सामान्य-असामान्य जोड़ी में असामान्य रोगी है जिसमें सबसे 'असामान्य-दिखने वाला' परीक्षा परिणाम होगा) ठीक 0.5 है। और इसका परीक्षण आँकड़ा अनुमानित समवर्ती संभाव्यता का सिर्फ एक साधारण परिवर्तन है:

> ( wi = wilcox.test(abnorm,norm) )
    Wilcoxon rank sum test with continuity correction

data:  abnorm and norm
W = 2642, p-value = 1.944e-13
alternative hypothesis: true location shift is not equal to 0

टेस्ट स्टेटिस्टिक ( W = 2642) समवर्ती जोड़े की संख्या को गिनाता है। यदि हम इसे संभावित युग्मों की संख्या से विभाजित करते हैं, तो हमें एक पारिवारिक संख्या मिलती है:

w = wi$statistic
w/(length(abnorm)*length(norm))

हां, यह 0.8931711 है, आरओसी वक्र के तहत क्षेत्र।

एयूसी (आर में) की गणना करने के आसान तरीके

लेकिन चलिए जीवन को अपने लिए आसान बनाते हैं। विभिन्न पैकेज हैं जो हमारे लिए एयूसी की गणना स्वचालित रूप से करते हैं।

एपि पैकेज

Epiपैकेज (एयूसी सहित) एम्बेडेड विभिन्न आँकड़ों के साथ एक अच्छा ROC वक्र बनाता है:

library(Epi)
ROC(testres, truestat) # also try adding plot="sp"

एपि पैकेज से आरओसी वक्र

PROC पैकेज

मुझे pROCपैकेज भी पसंद है , क्योंकि यह आरओसी अनुमान को सुचारू कर सकता है (और स्मूथ आरओसी के आधार पर एयूसी अनुमान की गणना कर सकता है):

आरओसी वक्र (अनम्यूट एंड स्मूथेड) पीआरओसी पैकेज से

(लाल रेखा मूल आरओसी है, और काली रेखा चिकनी आरओसी है। डिफ़ॉल्ट 1: 1 पहलू अनुपात पर भी ध्यान दें। इसका उपयोग करने के लिए समझ में आता है, क्योंकि संवेदनशीलता और विशिष्टता दोनों में 0-1 की सीमा होती है।)

सुचारू आरओसी से अनुमानित एयूसी 0.9107 है, इसी तरह से, लेकिन इससे भी थोड़ा बड़ा है, बिना आरओसी के एयूसी (यदि आप आकृति को देखते हैं, तो आप आसानी से देख सकते हैं कि यह बड़ा क्यों है)। (हालांकि, हमारे पास एक सुगम AUC की गणना करने के लिए वास्तव में बहुत कम संभव अलग-अलग परीक्षा परिणाम मूल्य हैं)।

आरएमएस पैकेज

हरेल के rmsपैकेज rcorr.cens()फ़ंक्शन का उपयोग करके विभिन्न संबंधित संगोष्ठी आँकड़ों की गणना कर सकते हैं । C Indexइसके उत्पादन में एयूसी है:

> library(rms)
> rcorr.cens(testres,truestat)[1]
  C Index 
0.8931711

CaTools पैकेज

अंत में, हमारे पास caToolsपैकेज और उसका colAUC()कार्य है। अन्य पैकेजों पर इसके कुछ फायदे हैं (मुख्य रूप से गति और बहु-आयामी डेटा के साथ काम करने की क्षमता - देखें ?colAUC) जो कभी-कभी सहायक हो सकते हैं । लेकिन निश्चित रूप से यह एक ही जवाब देता है जैसा कि हमने बार-बार गणना की है:

library(caTools)
colAUC(testres, truestat, plotROC=TRUE)
             [,1]
0 vs. 1 0.8931711

CaTools पैकेज से आरओसी वक्र

अंतिम शब्द

कई लोगों को लगता है कि एयूसी हमें बताता है कि एक परीक्षण कितना अच्छा है। और कुछ लोग सोचते हैं कि एयूसी संभावना है कि परीक्षण एक रोगी को सही ढंग से वर्गीकृत करेगा। यह नहीं है । जैसा कि आप उपरोक्त उदाहरण और गणना से देख सकते हैं, एयूसी हमें परीक्षणों के परिवार के बारे में कुछ बताता है , प्रत्येक संभावित कटऑफ के लिए एक परीक्षण।

और एयूसी की गणना कटऑफ के आधार पर की जाती है जो कभी भी व्यवहार में उपयोग नहीं किया जाएगा। हमें 'निरर्थक' कटऑफ मूल्यों की संवेदनशीलता और विशिष्टता की परवाह क्यों करनी चाहिए? फिर भी, यह AUC (आंशिक रूप से) पर आधारित है। (बेशक, अगर एयूसी 1 के बहुत करीब है, तो लगभग हर संभव परीक्षण में बड़ी भेदभावपूर्ण शक्ति होगी, और हम सभी बहुत खुश होंगे।)

एयूसी की 'यादृच्छिक सामान्य-असामान्य' जोड़ी व्याख्या अच्छी है (और इसे विस्तारित किया जा सकता है, उदाहरण के लिए उत्तरजीविता मॉडल, जहां हम देखते हैं कि इसका व्यक्ति सबसे अधिक (रिश्तेदार) खतरा है जो जल्द से जल्द मर जाता है)। लेकिन व्यवहार में कोई भी इसका उपयोग कभी नहीं करेगा। यह एक दुर्लभ मामला है, जहां कोई जानता है कि एक स्वस्थ और एक बीमार व्यक्ति है, वह नहीं जानता कि कौन सा व्यक्ति बीमार है, और यह तय करना चाहिए कि उनमें से कौन सा इलाज करना है। (किसी भी मामले में, निर्णय आसान है; उच्चतम अनुमानित जोखिम वाले व्यक्ति के साथ व्यवहार करें।)

इसलिए मुझे लगता है कि वास्तविक आरओसी वक्र का अध्ययन केवल एयूसी सारांश माप को देखने से अधिक उपयोगी होगा। और यदि आप ROC का उपयोग झूठी सकारात्मक और झूठी नकारात्मक लागतों के अनुमानों के साथ करते हैं, तो आप जो अध्ययन कर रहे हैं, उसके आधार दर के साथ।

यह भी ध्यान दें कि एयूसी केवल भेदभाव को मापता है , अंशांकन नहीं। यही है, यह मापता है कि आप जोखिम अंक के आधार पर दो व्यक्तियों (एक बीमार और एक स्वस्थ) के बीच भेदभाव कर सकते हैं या नहीं। इसके लिए, यह केवल सापेक्ष जोखिम मूल्यों को देखता है (या रैंक, यदि आप करेंगे, cf. विलकॉक्सन-मान-व्हिटनी परीक्षण व्याख्या), न कि निरपेक्ष, जिन्हें आप में रुचि होनी चाहिए । उदाहरण के लिए, यदि आप प्रत्येक जोखिम को विभाजित करते हैं। 2 से अपने लॉजिस्टिक मॉडल का अनुमान, आपको ठीक वैसा ही एयूसी (और आरओसी) मिलेगा।

एक जोखिम मॉडल का मूल्यांकन करते समय, अंशांकन भी बहुत महत्वपूर्ण है। इसकी जांच करने के लिए, आप सभी रोगियों को जोखिम के स्कोर के साथ देखेंगे, जैसे, 0.7, और देखें कि क्या इनमें से लगभग 70% वास्तव में बीमार थे। प्रत्येक संभावित जोखिम स्कोर के लिए ऐसा करें (संभवतः किसी प्रकार के चौरसाई / स्थानीय प्रतिगमन का उपयोग करके)। परिणामों को प्लॉट करें, और आपको अंशांकन का एक ग्राफिकल माप मिलेगा ।

यदि आपके पास अच्छा अंशांकन और अच्छा भेदभाव दोनों के साथ एक मॉडल है , तो आपके पास अच्छा मॉडल होना शुरू होता है। :)


8
धन्यवाद, @ कर्ल ओवे हुफथमर, यह सबसे गहन जवाब है जो मुझे कभी मिला है। मैं विशेष रूप से आपके "अंतिम शब्द" अनुभाग की सराहना करता हूं। उत्कृष्ट कार्य! एक बार फिर धन्यवाद!
मैट रेइचेंबाक

इस detailled जवाब के लिए बहुत बहुत धन्यवाद। मैं एक डेटासेट के साथ काम कर रहा हूं, जहां एपि :: आरओसी () v2.2.6 आश्वस्त है कि एयूसी 1.62 है (न कि यह एक मानसिक अध्ययन नहीं है), लेकिन आरओसी के अनुसार, मैं 0.56 में अधिक विश्वास करता हूं कि उपरोक्त परिणाम इन;
बर्निनलियो

32

इस सवाल पर एक नज़र: आरओसी वक्र को समझना

यहाँ ROC वक्र बनाने का तरीका बताया गया है (उस प्रश्न से):

ड्राइंग आरओसी वक्र

आपके रैंकिंग क्लासिफ़ायर द्वारा संसाधित डेटा सेट दिया गया

  • घटते स्कोर पर रैंक परीक्षा उदाहरण
  • (0,0)
  • x
    • x1/pos
    • x1/neg

posneg

आप निम्न एल्गोरिथ्म का उपयोग करके मैन्युअल रूप से AUC ROC की गणना के लिए इस विचार का उपयोग कर सकते हैं:

auc = 0.0
height = 0.0

for each training example x_i, y_i
  if y_i = 1.0:
    height = height + tpr
  else 
    auc = auc + height * fpr

return auc

यह अच्छा gif- एनिमेटेड चित्र इस प्रक्रिया को स्पष्ट करना चाहिए

वक्र का निर्माण


1
धन्यवाद @Alexey Grigorev, यह एक शानदार दृश्य है और यह भविष्य में उपयोगी साबित होगा! +1
मैट रेइचेनबाक

1
कृपया "सकारात्मक और नकारात्मक उदाहरणों के अंश" के बारे में थोड़ा समझा सकते हैं, क्या आपका मतलब दो अक्ष की सबसे छोटी इकाई मूल्य है?
एलन रुईन

1
@ एलन रुइन: posयहां सकारात्मक डेटा की संख्या का मतलब है। मान लें कि आपके पास 20 डेटा पॉइंट्स हैं, जिसमें 11 पॉइंट्स 1. हैं। इसलिए चार्ट को ड्रॉ करते समय, हमारे पास एक आयत 11x9 (ऊँचाई x चौड़ाई) होती है। एलेक्सी ग्रिगोरेव ने पैमाने पर काम किया, लेकिन इसे वैसे ही रहने दें जैसे आप चाहें। अब, प्रत्येक चरण पर केवल 1 चार्ट पर जाएं।
कैटालिस्ट

5

कार्ल की पोस्ट में बहुत सारी बेहतरीन जानकारी है। लेकिन मैंने अभी तक पिछले 20 वर्षों में एक आरओसी वक्र का एक उदाहरण नहीं देखा है जिसने किसी की सोच को एक अच्छी दिशा में बदल दिया। मेरी विनम्र राय में एक आरओसी वक्र का एकमात्र मूल्य यह है कि इसका क्षेत्र एक बहुत ही उपयोगी सहमति संभावना के बराबर होता है। ROC वक्र कटऑफ का उपयोग करने के लिए पाठक को प्रेरित करता है, जो खराब सांख्यिकीय अभ्यास है।

cY=0,1xY=1yY=0Y=1

n

आर Hmiscपैकेज rcorr.censफ़ंक्शन के लिए, अधिक जानकारी, विशेष रूप से एक मानक त्रुटि देखने के लिए पूरे परिणाम को प्रिंट करें।


धन्यवाद, @ फ्रेंक हरेल, मैं आपके परिप्रेक्ष्य की सराहना करता हूं। मैं सी-स्टेटिस्टिक का उपयोग एक समवर्ती संभावना के रूप में करता हूं, क्योंकि मुझे कटऑफ पसंद नहीं है। एक बार फिर धन्यवाद!
मैट रेइचेनबाक

4

यहाँ आरओसी वक्र के तहत क्षेत्र प्राप्त करने के लिए केवल ट्रैपोज़ाइडल नियम का उपयोग करके एयूसी की गणना करने के प्राकृतिक तरीके का एक विकल्प है।

एयूसी संभावना के बराबर है कि एक बेतरतीब ढंग से सैंपल किए गए निगेटिव ऑब्जर्वेशन में बेतरतीब ढंग से सैंपल किए गए निगेटिव ऑब्जर्वेशन से ज्यादा अनुमानित पॉजिटिव (पॉजिटिव होने का) है। आप सकारात्मक और नकारात्मक टिप्पणियों के सभी युग्म संयोजनों के माध्यम से किसी भी प्रोग्रामिंग भाषा में काफी आसानी से एयूसी की गणना करने के लिए इसका उपयोग कर सकते हैं। यदि नमूना आकार बहुत बड़ा था, तो आप बेतरतीब ढंग से नमूना अवलोकन भी कर सकते हैं। यदि आप पेन और पेपर का उपयोग करके एयूसी की गणना करना चाहते हैं, तो यह सबसे अच्छा तरीका नहीं हो सकता है जब तक कि आपके पास बहुत छोटा नमूना / बहुत समय न हो। R में उदाहरण के लिए:

n <- 100L

x1 <- rnorm(n, 2.0, 0.5)
x2 <- rnorm(n, -1.0, 2)
y <- rbinom(n, 1L, plogis(-0.4 + 0.5 * x1 + 0.1 * x2))

mod <- glm(y ~ x1 + x2, "binomial")

probs <- predict(mod, type = "response")

combinations <- expand.grid(positiveProbs = probs[y == 1L], 
        negativeProbs = probs[y == 0L])

mean(combinations$positiveProbs > combinations$negativeProbs)
[1] 0.628723

हम pROCपैकेज का उपयोग करके सत्यापित कर सकते हैं :

library(pROC)
auc(y, probs)
Area under the curve: 0.6287

यादृच्छिक नमूने का उपयोग करना:

mean(sample(probs[y == 1L], 100000L, TRUE) > sample(probs[y == 0L], 100000L, TRUE))
[1] 0.62896

1
  1. आपके पास टिप्पणियों के लिए सही मूल्य है।
  2. पश्चगामी संभाव्यता की गणना करें और फिर इस संभावना द्वारा टिप्पणियों को रैंक करें।
  3. PN
    Sum of true ranks0.5PN(PN+1)PN(NPN)

1
@ user73455 ... 1) हां, मेरे पास टिप्पणियों का सही मूल्य है। 2) क्या प्रत्येक अवलोकन के लिए पूर्वनिर्धारित संभाव्यता पर्यायवाची है? 3) समझ में आया; हालाँकि, "असली रैंक का योग" क्या है और कोई इस मूल्य की गणना कैसे करता है? शायद एक उदाहरण आपको इस उत्तर को अधिक अच्छी तरह से समझाने में मदद करेगा? धन्यवाद!
मैट रीचेनबाक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.