अज्ञात पी-मान गणना


9

मैं हाल ही में एक आर स्क्रिप्ट डिबगिंग कर रहा था और मुझे कुछ बहुत अजीब लगा, लेखक ने अपने स्वयं के पी-वैल्यू फ़ंक्शन को परिभाषित किया

pval <- function(x, y){
    if (x+y<20) { # x + y is small, requires R.basic
        p1<- nChooseK(x+y,x) * 2^-(x+y+1);
        p2<- nChooseK(x+y,y) * 2^-(x+y+1);
        pvalue = max(p1, p2)
    }
    else { # if x+y is large, use approximation
        log_p1 <- (x+y)*log(x+y) - x*log(x) - y*log(y) - (x+y+1)*log(2);
        pvalue<-exp(log_p1);
    }
    return(pvalue)
}

जहाँ X और Y मान सकारात्मक मान से अधिक हैं। 0. <20 मामला किसी प्रकार के हाइपरजोमेट्रिक वितरण (फिशर टेस्ट के समान कुछ?) के लिए एक गणना प्रतीत होता है और क्या किसी को पता है कि अन्य गणना क्या है? एक विचार के रूप में, मैं इस कोड को अनुकूलित करने की कोशिश कर रहा हूं ताकि इसे कॉल करने और बदलने के लिए उचित आर फ़ंक्शन का पता लगाने की कोशिश की जा सके।

संपादित करें: पी-वैल्यू गणना के लिए पेपर डिटेलिंग फॉर्मूला यहां पाया जा सकता है (सूत्रों को देखने के लिए पीडीएफ पर क्लिक करने की आवश्यकता है) पीडीएफ के पेज 8 पर विधियां शुरू होती हैं और विचाराधीन सूत्र पेज 9 के तहत (1) में पाया जा सकता है। वितरण वे मानते हैं कि एक पॉइसन है।

जवाबों:


15

दूसरी चीज यह दिखती है कि यह x+y < 20मामले के लिए इस्तेमाल की जा रही गणना के लिए एक अनुमान है , लेकिन स्टर्लिंग के अनुमान के आधार पर ।

आम तौर पर जब इसका उपयोग इस प्रकार के सन्निकटन के लिए किया जा रहा है, तो लोग कम से कम अगले अतिरिक्त शब्द (के कारक) का उपयोग करेंगे 2πn के लिए सन्निकटन में n!), जो छोटे के लिए सापेक्ष सन्निकटन में काफी सुधार करेगा n

उदाहरण के लिए, यदि एक्स तथा y दोनों 10 हैं, पहली गणना 0.088 के बारे में देती है जबकि सन्निकटन जब कारक होता है 2πnसभी शब्दों में शामिल है, लगभग ०.०, ९ के बारे में है, जो अधिकांश उद्देश्यों के लिए पर्याप्त है ... लेकिन सन्निकटन में उस शब्द को छोड़ने से ०.५ मिलता है - जो वास्तव में पर्याप्त नहीं है! उस समारोह के लेखक ने स्पष्ट रूप से सीमा मामले में अपने अनुमान की सटीकता की जांच करने की जहमत नहीं उठाई।

इस प्रयोजन के लिए, लेखक को संभवतः बिल्ट इन lgammaफंक्शन को बुलाया जाना चाहिए - विशेष रूप से, इसके लिए इसके बजाय इसका उपयोग करके log_p1:

log_p1 <- lgamma(x+y+1)-lgamma(x+1)-lgamma(y+1)-(x+y+1)*log(2)

जिसके परिणामस्वरूप वह जवाब देने की कोशिश कर रहा है जो लगभग अनुमानित है (क्योंकि lgamma(x+1)वास्तव में वापस आता हैलॉग(एक्स!)(स्टर्लिंग इम्प्लांटेशन के माध्यम से - वह बहुत ही खराब चीज - लगभग - खराब - कोशिश कर रहा है)।

इसी तरह, मुझे यकीन नहीं है कि लेखक chooseपहले भाग में निर्मित फ़ंक्शन का उपयोग क्यों नहीं करता है , एक फ़ंक्शन जो आर के मानक वितरण में आता है। उस मामले के लिए, प्रासंगिक वितरण फ़ंक्शन शायद अंतर्निहित भी है।

आपको वास्तव में दो अलग-अलग मामलों की आवश्यकता नहीं है; lgammaएक ठीक सही छोटी से छोटी मूल्यों के नीचे काम करता है। दूसरी ओर, chooseफ़ंक्शन बहुत बड़े मूल्यों के लिए choose(1000,500)काम करता है (जैसे ठीक काम करता है)। सुरक्षित विकल्प शायद lgammaही आप काफी बड़ी राशि की जरूरत होगी,एक्स तथा y इससे पहले कि यह एक मुद्दा था।

अधिक जानकारी के साथ परीक्षण के स्रोत की पहचान करना संभव होना चाहिए। मेरा अनुमान है कि लेखक ने इसे कहीं से लिया है, इसलिए इसे नीचे ट्रैक करना संभव होना चाहिए। क्या आपके पास इसके लिए कुछ संदर्भ है?

जब आप कहते हैं 'ऑप्टिमाइज़' करते हैं तो क्या आपका मतलब है कि यह तेज़, छोटा, अधिक रख-रखाव या कुछ और है?


कागज पर जल्दी से पढ़ने के बाद संपादित करें:

लेखक कई बिंदुओं पर गलत प्रतीत होते हैं। फिशर का सटीक परीक्षण यह नहीं तय करता है कि मार्जिन तय हो गया है, यह केवल उन पर स्थितियां हैं, जो कि एक ही चीज नहीं है, जैसा कि चर्चा की जाती है, उदाहरण के लिए, यहां , संदर्भों के साथ। वास्तव में, वे मार्जिन पर कंडीशनिंग पर बहस से बहुत अधिक पूरी तरह से अनभिज्ञ लगते हैं और ऐसा क्यों किया जाता है। वहाँ के लिंक पढ़ने लायक हैं।

[वे 'फिशर के परीक्षण से हमेशा आगे बढ़ते हैं कि हमारा' इस दावे के लिए है कि फिशर का परीक्षण बहुत रूढ़िवादी है ... जो जरूरी नहीं है कि जब तक यह शर्त के लिए गलत न हो । उन्हें यह स्थापित करना होगा, लेकिन यह देखते हुए कि यह कुछ सांख्यिकीविद् लगभग 80 वर्षों से बहस कर रहे हैं, और ये लेखक इस बात से अनजान हैं कि कंडीशनिंग क्यों की जाती है, मुझे नहीं लगता कि ये लोग उस मुद्दे की तह तक गए हैं ।]

पेपर के लेखक कम से कम यह समझने लगते हैं कि वे जो संभावनाएँ देते हैं, उन्हें पी-वैल्यू देने के लिए कम्युलेट किया जाना चाहिए; उदाहरण के लिए पृष्ठ 5 (जोर मेरा) के पहले कॉलम के बीच में:

इस तरह के परिणाम के लिए फिशर के सटीक परीक्षण के अनुसार सांख्यिकीय महत्व 4.6% है (दो-पूंछ पी-मूल्य, यानी, इस तरह की तालिका की परिकल्पना में होने की संभावना है कि एक्टिन ईएसटी आवृत्तियों सीडीएनए पुस्तकालयों से स्वतंत्र हैं)। इसकी तुलना में, समीकरण 2 के संचयी रूप (समीकरण 9, देखें तरीके) से गणना की गई पी (मान ) एक्टिन ईएसटी के सापेक्ष आवृत्ति के लिए दोनों पुस्तकालयों में समान हैं, यह देखते हुए कि कम से कम 11 संज्ञानात्मक ईएसटी में मनाया जाता है। मस्तिष्क पुस्तकालय में दो के बाद जिगर पुस्तकालय) 1.6% है।

(हालांकि मुझे यकीन नहीं है कि मैं वहां उनके मूल्य की गणना से सहमत हूं; मुझे यह देखने के लिए सावधानी से जांचना होगा कि वे वास्तव में दूसरी पूंछ के साथ क्या कर रहे हैं।)

मुझे नहीं लगता कि कार्यक्रम ऐसा करता है।

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

मुझे भी यकीन नहीं है कि इस बिंदु पर उनकी संभावनाओं का योग 1 है।

यहां बहुत कुछ कहा जा सकता है, लेकिन प्रश्न कागज के बारे में नहीं है, यह कार्यक्रम के कार्यान्वयन के बारे में है।

-

वैसे भी, अपशॉट है, कम से कम कागज सही ढंग से पहचानता है कि पी-मान समीकरण 2 में उन जैसी संभावनाओं का योग है, लेकिन कार्यक्रम नहीं करता है । (पेपर के मेथड्स सेक्शन में eqn 9a और 9b देखें।)

उस पर कोड बस गलत है।

[आप उपयोग कर सकते हैं pbinom, जैसा कि @ व्हिबर की टिप्पणी का अर्थ होगा, व्यक्तिगत संभावनाओं को पूरा करने के लिए (लेकिन पूंछ नहीं, क्योंकि यह एक द्विपद परीक्षण नहीं है क्योंकि वे इसे संरचना करते हैं) लेकिन फिर उनके समीकरण 2 में 1/2 का एक अतिरिक्त कारक है यदि आप पेपर में परिणाम दोहराना चाहते हैं, तो आपको उन्हें बदलने की आवश्यकता है।]

आप इसे प्राप्त कर सकते हैं, कुछ लकीर पीटने के साथ pnbinom-

नकारात्मक द्विपद के सामान्य रूप या तो परीक्षणों की संख्या हैं टीसफलता या की संख्या विफलताओं कोटीसफलता। दो बराबर हैं; विकिपीडिया यहाँ दूसरा रूप देता है । प्रायिकता कार्य है:

(+आर-1)(1-पी)आरपी,

P4 पर समीकरण 2 (और इसलिए p3 पर eqn 1 भी) एक नकारात्मक द्विपद है, लेकिन 1. Let द्वारा स्थानांतरित कर दिया गया हैपी=एन1/(एन1+एन2), =एक्स तथा आर=y+1

यह मुझे चिंतित करता है कि सीमा के बाद से y समान रूप से स्थानांतरित नहीं किया गया है, कि उनकी संभावनाएं 1 भी नहीं जोड़ सकती हैं।

यह बुरा होगा।


1
+1 अच्छा स्पष्टीकरण। इस कोड के साथ कुछ अतिरिक्त समस्याएं हैं। इसकी गणना करना अनावश्यक है p2; के छोटे p1और क्रमशः p2के छोटे से मेल खाती है xऔर y- यह एक अक्षमता है। एक संभावित बग यह है कि सशर्त की दूसरी शाखा p2सभी पर गणना करने में विफल रहती है और केवल उपयोग करती है p1। मुझे यह भी संदेह है कि कोड पूरी तरह से गलत हो सकता है, क्योंकि यह पी-मूल्य की गणना करने के लिए प्रकट नहीं होता है: यह सिर्फ एक-आधा द्विपद संभावना है और शायद एक पूंछ संभावना होना चाहिए । क्यों नहीं बस उपयोग pbinom/ dbinomऔर इसके साथ किया जा सकता है?
whuber

महान उत्तर के लिए धन्यवाद, मैं सूत्र के स्रोत को ट्रैक करने में सक्षम था: genome.cshlp.org/content/7/10/986.short मैं इसे तेजी से बदलना चाहता था और इसे बनाए रखना / पढ़ना आसान था।
यिंगव

कागज के लिए धन्यवाद; यह पता लगाने में मददगार था कि कोड में क्या चल रहा था। क्या एक किन्नर
Glen_b -Reinstate Monica

1
+1। यह एक पोस्ट है जो समुदाय विकि नहीं होना चाहिए! मुझे लगता है कि यह 14 रिव्यू के कारण है, लेकिन इस मामले में वे सभी आपके द्वारा हैं। तुम्हारे परिश्रम की सजा मिली है!
डैरेन कुक

विश्वास मत के लिए धन्यवाद। हाँ, मैं वापस आता रहा और सुधार करता रहा जैसा कि मैंने पेपर के माध्यम से पढ़ा है, लेकिन मुझे लगता है कि अंतिम परिणाम को कुशलता से प्राप्त नहीं करने के लिए यह मेरी आंशिक गलती है।
Glen_b -Reinstate मोनिका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.