आरओसी के तहत क्षेत्र के लिए पी-मान की गणना कैसे करें


13

मैं एक रिसीवर ऑपरेटर विशेषता (आरओसी) के तहत क्षेत्र के लिए पी-मूल्य की गणना करने का एक तरीका खोजने के लिए संघर्ष करता हूं। मेरे पास एक सतत चर और एक नैदानिक ​​परीक्षण परिणाम है। मैं यह देखना चाहता हूं कि क्या AUROC सांख्यिकीय रूप से महत्वपूर्ण है।

मुझे आरओसी कर्व्स से निपटने के लिए कई पैकेज मिले: pROC, ROCR, caTools, वेरिफिकेशन, इपी। लेकिन कई घंटे दस्तावेज और परीक्षण पढ़ने के बाद भी, मुझे नहीं पता चला कि कैसे। मुझे लगता है कि मैंने अभी इसे याद किया है।


1
वक्र के अंतर्गत आने वाले क्षेत्र के लिए 'महत्वपूर्ण' होने का क्या मतलब हो सकता है?
गंग -

मैं परीक्षण कहना चाहता था कि अगर AUC का मूल्य सांख्यिकीय रूप से 0.5 से भिन्न है
user32530

आपका आरओसी वक्र क्या आया? संभवतः आप इसका एक परीक्षण चाहते हैं (जैसे, एक लॉजिस्टिक प्रतिगमन मॉडल के लिए एक संपूर्ण मूल्य है)।
गूँग - मोनिका

खैर, मेरा डेटा निम्नलिखित की तरह है, मेरे पास एक मानक परीक्षण है जो समूह को बीमारी के बिना / साथ में बनाता है, और मैं रक्त के नमूने से जैविक निर्धारण के लिए कट-ऑफ मूल्य खोजना चाहता हूं। बगल में कि मुझे वक्र के नीचे क्षेत्र की आवश्यकता है। तो नहीं, मेरे पास कोई प्रतिगमन मॉडल नहीं है
user32530

तो आपके पास कुछ परीक्षण है जो एक मरीज से खींचे गए रक्त के नमूने पर किया जाता है, जो आपको एक नंबर देता है; और आप उस नंबर का उपयोग करना चाहेंगे ताकि रोगी को बीमारी हो। वर्तमान में, आपके पास इस परीक्षण के लिए रोगियों के एक सेट के लिए कई संख्याएँ हैं, जहाँ आप उनकी सही बीमारी की स्थिति जानते हैं। क्या यह सब सही है?
गंग -

जवाबों:


12

आपकी स्थिति में एक आरओसी वक्र की साजिश करना, और उस वक्र के तहत क्षेत्र की गणना करना ठीक होगा, लेकिन यह आपके मुख्य विश्लेषण के पूरक के रूप में माना जाना चाहिए , बजाय प्राथमिक विश्लेषण के। इसके बजाय, आप लॉजिस्टिक रिग्रेशन मॉडल फिट करना चाहते हैं ।

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


यदि आप लॉजिस्टिक रिग्रेशन से बहुत परिचित नहीं हैं, तो इंटरनेट पर कुछ संसाधन उपलब्ध हैं (ऊपर लिंक किए गए विकिपीडिया पृष्ठ के अलावा):


यह बहुत ही ज्ञानवर्धक था। धन्यवाद! इसलिए मैं एक लॉजिस्टिक मॉडल glm binomial (logit) फिट करता हूं। फिर मैं इसकी तुलना एक अशक्त मॉडल से करता हूं और यह परीक्षण मुझे वह p मान देता है जिसकी मुझे तलाश है?
user32530

हाँ, यह आपके लिए करना चाहिए। LR बहुत सी अन्य चीजों को भी संभव बना देगा, लेकिन हो सकता है कि आप सभी की जरूरत हो।
गंग -

तो कोड निम्नलिखित की तरह होगा? GLM.1 <- glm (समूह ~ निरंतरता, परिवार = द्विपद (लॉगिट), डेटा = डायग्नोस्टिकडेटा) सारांश (GLM.1) GLM.2 <- glm (समूह ~ 1, परिवार = द्विपद (लॉगिट, डेटा = diagnDataData) अनावा (GLM.2, GLM.1, परीक्षण = "चिसक")
user32530

summary(GLM.1)आपको वह देना चाहिए anova(GLM.1)जिसकी आपको आवश्यकता है, और मुझे लगता है कि यह इसे null मॉडल w / o के खिलाफ परीक्षण करेगा , वास्तव में इसे भी फिट करने के लिए। लेकिन आपका तरीका निश्चित रूप से काम करेगा, हाँ।
गूँज - मोनिका

10

मूल रूप से आप H0 = "AUC 0.5 के बराबर है" का परीक्षण करना चाहते हैं।

यह वास्तव में H0 = "दो समूहों में रैंकों का वितरण समान है" कहने के बराबर है।

उत्तरार्द्ध मान-व्हिटनी (विलकॉक्सन) परीक्षण की शून्य परिकल्पना है (उदाहरण के लिए देखें गोल्ड, 1999 )।

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


1
यह दिखाना क्यों दिलचस्प होगा कि भविष्यवाणियाँ यादृच्छिक नहीं हैं? यह उपयोगिता का आकलन नहीं करता है।
फ्रैंक हरेल

1
@FrankHarrell क्योंकि कई मामलों में आपकी भविष्यवाणियां यादृच्छिक से बेहतर नहीं हो सकती हैं - जिस स्थिति में आप रिपोर्ट करते हैं, वह उपयोगिता वास्तव में शून्य है। निश्चित रूप से, उपयोगिता उपायों (संवेदनशीलता और विशिष्टता) के एक आत्मविश्वास अंतराल की रिपोर्ट करना अधिक उपयोगी होगा। लेकिन नैदानिक ​​साहित्य में दो समूहों के बीच अंतर का परीक्षण कम से कम आम है (और वास्तव में वहाँ समूह अक्सर भिन्न नहीं होते हैं) और मैंने समीक्षकों से विशेष रूप से इसके लिए पूछा।
कैलिमो

यह थोड़ा समझ में आता है IMHO। मैं जानना चाहता हूं कि कोई चीज कितनी उपयोगी है, न कि यह कि सिर्फ एक सिक्का उछालने से बेहतर है।
फ्रैंक हरेल

यदि यह एक सिक्का उछालने से बेहतर नहीं है, तो आप उस काम से क्यों गुज़रेंगे? बस सिक्का पलटें।
स्कॉट

4

आप पैकेज सत्यापन से roc.area () का उपयोग कर सकते हैं :

install.packages("verification")
library("verification")

# Data used from Mason and Graham (2002).
a<- c(1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990,
 1991, 1992, 1993, 1994, 1995)
d<- c(.928,.576, .008, .944, .832, .816, .136, .584, .032, .016, .28, .024, 0, .984, .952)

A<- data.frame(a,d)
names(A)<- c("year", "p2")

# For model without ties
roc.area(A$event, A$p2)

यह वापस आ जाएगी $p.value [1] 0.0069930071


बहुत बहुत धन्यवाद, लेकिन मेरे पास कोई सी और डी मूल्य नहीं है। मेरे पास एक मानक परीक्षण है जो समूह को बीमारी के साथ / उसके बिना बनाता है, और मैं एक रक्त के नमूने से जैविक निर्धारण के लिए कट-ऑफ मूल्य खोजना चाहता हूं। बगल में कि मुझे वक्र के नीचे क्षेत्र की आवश्यकता है। तो नहीं, मेरे पास कोई प्रतिगमन नहीं है। मेरे पास stdtest बाइनरी वैरिएबल और बायोलॉवल्यूज़ निरंतर चर
user32530

ओह ठीक है मैंने सोचा था कि तुम घ, के रूप में मुझे लगता है कि आप पहले से ही एक आरओसी वक्र था।
फ्रेंक डर्नोनकोर्ट 3

3
यह आमतौर पर एक मनमाना कटऑफ की तलाश करने के लिए एक गलती है जब रोग की संभावना के साथ सही संबंध सहज है। इसके अलावा, शून्य परिकल्पना का परीक्षण करना कि आरओसी क्षेत्र 0.5 है, एक बहुत उबाऊ परिकल्पना है। अधिकांश भविष्यवाणियों के लिए आप परवाह करते हैं कि भविष्यवाणी कितनी अच्छी है, न कि यह यादृच्छिक है।
फ्रैंक हरेल

कोई समस्या नहीं है, और धन्यवाद, फ्रैंक डेमोनकोर्ट, शायद एक तरीका है डी प्राप्त करने का।
user32530 20

चिकित्सा क्षेत्र में कभी-कभी उन्हें निदान परीक्षण बनाने के लिए उन कटऑफ बिंदुओं की आवश्यकता होती है। उन लोगों के साथ वे यह खोजना चाहते हैं कि विषय बीमार है या नहीं, कुछ भविष्यवाणी नहीं करना है। कभी-कभी उन्हें रोग की स्थिति की पहचान करने के लिए एक सस्ते निर्धारण के साथ लागत में कटौती करने की आवश्यकता होती है।
user32530

0

दो आरओसी वक्रों की तुलना pROC के उपयोग से की जा सकती है roc.test() । यह भी एक पी-मूल्य पैदा करता है। इसके अलावा, उपयोग करने roc(..., auc=TRUE, ci=TRUE)से आपको आरओसी ऑब्जेक्ट बनाते समय आउटपुट में एयूसी के साथ-साथ कम और उच्च आत्मविश्वास अंतराल मिलेगा, जो उपयोगी हो सकता है।

निम्नलिखित कार्य उदाहरण कोड है जो परीक्षण करता है कि क्या प्रति गैलन मील या कार का वजन ट्रांसमिशन के प्रकार का एक बेहतर भविष्यवक्ता है जो इसके साथ सुसज्जित है (स्वचालित या मैनुअल):

library(pROC)
roc_object_1 <- roc(mtcars$am, mtcars$mpg, auc=T, ci=T) #gives AUC and CI
roc_object_2 <- roc(mtcars$am, mtcars$wt, auc=T, ci=T) #gives AUC and CI

roc.test(roc_object_1, roc_object_2) #gives p-value

ईंधन की खपत की तुलना में वजन काफी बेहतर भविष्यवक्ता है, ऐसा लगता है। हालांकि, यह दो घटता की तुलना कर रहा है, और 0.5 जैसी संख्या के खिलाफ एक भी वक्र नहीं है। आत्मविश्वास अंतराल को देखते हुए कि क्या इसमें 0.5 नंबर शामिल है, हमें बताता है कि क्या यह काफी अलग है, लेकिन यह एक पी-मूल्य का उत्पादन नहीं करता है।


क्या यह पी-मूल्य भी प्रदान करता है?
माइकल आर। चेरिक

हालाँकि यह प्रश्न विशेष रूप से R के संदर्भ में पूछा जाता है, यहाँ हमारी सामान्य नीति यह है कि हम एक आँकड़े (मशीन लर्निंग, आदि) Q & A साइट हैं। इस प्रकार, क्यू के लिए सांख्यिकीय सामग्री होना आवश्यक है, और यह दृढ़ता से पसंद किया जाता है कि जैसा कि केवल सॉफ्टवेयर विशिष्ट शब्दों में प्रदान नहीं किया गया है। इसके प्रकाश में, क्या आप इस बारे में अधिक कह सकते हैं कि यह परीक्षण क्या है और यह कैसे काम करता है, सिर्फ इस बात से परे कि यह R & में मौजूद है और इसके लिए R कोड दिखा रहा है?
गोबर -

ठीक है, मैं
नाको
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.