अपने इच्छित वितरण के खिलाफ यादृच्छिक रूप से उत्पन्न डेटा का परीक्षण करना


17

मैंने एक प्रोग्राम लिखा है जो यादृच्छिक डेटा उत्पन्न करता है। यदि प्रोग्राम सही ढंग से काम कर रहा है, तो उस डेटा को एक विशिष्ट, ज्ञात संभावना वितरण का पालन करना चाहिए। मैं कार्यक्रम को चलाना चाहता हूं, परिणाम पर कुछ गणना करता हूं, और पी-मूल्य के साथ आता हूं।

इससे पहले कि कोई और यह कहे: मैं समझता हूं कि परिकल्पना परीक्षण यह पता नहीं लगा सकता है कि कार्यक्रम कब सही ढंग से चल रहा है। यह केवल तभी पता लगा सकता है जब यह एक विशिष्ट तरीके से गलत तरीके से काम कर रहा हो। (और फिर भी, परीक्षण "समय का X% विफल" होना चाहिए, जो आपके द्वारा चुने गए महत्व के स्तर पर निर्भर करता है ...)

इसलिए, मैं यह समझने की कोशिश कर रहा हूं कि कौन से उपकरण उपयुक्त हो सकते हैं। विशेष रूप से:

  • मैं जितना चाहे उतना यादृच्छिक डेटा उत्पन्न कर सकता हूं। मुझे बस इतना करना है कि कार्यक्रम को लंबे समय तक छोड़ दें। इसलिए मैं किसी विशिष्ट नमूने के आकार तक सीमित नहीं हूं।

  • मैं उन तकनीकों में रुचि रखता हूं जो एक पी-मूल्य का उत्पादन करती हैं। तो एक ग्राफ को घूरते हुए और "हाँ, जो थोड़े रैखिक दिखता है" कह रहा है एक दिलचस्प विकल्प नहीं है। जब तक एक ग्राफ की "जीत" पर एक कठिन संख्या डालने का कोई तरीका नहीं है। ;-)

मैं अब तक क्या जानता हूं:

  • मैंने परीक्षण के तीन मुख्य प्रकारों का उल्लेख किया है, जो ध्वनि की तरह वे लागू हो सकते हैं: [पीयरसन] ची-स्क्वेर्ड परीक्षण, कोलमोगोरोव-स्मिरनोव परीक्षण और एंडरसन-डार्लिंग परीक्षण।

  • ऐसा प्रतीत होता है कि ची-चुकता परीक्षण असतत वितरण के लिए उपयुक्त है , जबकि अन्य दो निरंतर वितरण के लिए अधिक उपयुक्त हैं । (?)

  • विभिन्न स्रोत संकेत देते हैं कि AD परीक्षण KS परीक्षण की तुलना में "बेहतर" है, लेकिन आगे किसी भी विवरण में जाने में विफल है।

अंत में, इन सभी परीक्षणों में निश्चित रूप से निर्दिष्ट अशक्त वितरण से विचलन के "विभिन्न तरीकों" का पता चलता है। लेकिन मैं वास्तव में नहीं जानता कि क्या अंतर हैं अभी तक ... सारांश में, मैं किसी प्रकार के सामान्य विवरण की तलाश कर रहा हूं जहां प्रत्येक प्रकार का परीक्षण सबसे अधिक लागू होता है, और यह किस प्रकार की समस्याओं का सबसे अच्छा पता लगाता है।


यदि आपने अपना स्वयं का लिखा है तो एक बार अपने ज्ञान की सीमा पार कर लेने के बाद (आप डिजाइन के भीतर एम्बेडेड हो जाते हैं) यह लगभग 'विफल' है। Random.org/analysis पर एक नज़र डालें जो कुछ जाँच विधियों को सूचीबद्ध करती है, और जाहिर है stackoverflow.com/q/2130621/717355 । दार्शनिक रूप से, यदि यह कार्यक्रम नियतात्मक है, तो यह यादृच्छिक नहीं हो सकता है ;-) यह निश्चित रूप से अध्ययन के लिए एक सार्थक विषय है (और पासवर्ड हैकिंग क्रायपो चर्चा को मत भूलना)।
फिलिप ओकले

जवाबों:


21

यहाँ एक सामान्य वर्णन है कि 3 विधियों ने कैसे काम किया है।

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

केएस टेस्ट स्टेटिस्टिक 2 संचयी वितरण कार्यों के बीच अधिकतम दूरी है (तुलनात्मक रूप से एक सैद्धांतिक और एक अनुभवजन्य)। यदि 2 प्रायिकता वितरण में केवल 1 चौराहा बिंदु है तो 1 शून्य से अधिकतम दूरी 2 संभावना वितरण के बीच ओवरलैप का क्षेत्र है (यह कुछ लोगों को यह कल्पना करने में मदद करता है कि क्या मापा जा रहा है)। एक ही भूखंड पर सैद्धांतिक वितरण समारोह और EDF की साजिश के बारे में सोचें फिर 2 "घटता" के बीच की दूरी को मापें, सबसे बड़ा अंतर परीक्षण आँकड़ा है और इसकी तुलना इसके लिए मूल्यों के वितरण के खिलाफ की जाती है जब अशक्त सही है। यह अंतर अंतर वितरण का आकार है या अन्य की तुलना में 1 वितरण स्थानांतरित या फैला हुआ है।1n

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

यहाँ पिछले 2 के सामान्य विचारों को दिखाने के लिए एक ग्राफ दिया गया है:

यहाँ छवि विवरण दर्ज करें

इस R कोड के आधार पर:

set.seed(1)
tmp <- rnorm(25)
edf <- approxfun( sort(tmp), (0:24)/25, method='constant', 
    yleft=0, yright=1, f=1 )

par(mfrow=c(3,1), mar=c(4,4,0,0)+.1)
curve( edf, from=-3, to=3, n=1000, col='green' )
curve( pnorm, from=-3, to=3, col='blue', add=TRUE)

tmp.x <- seq(-3, 3, length=1000)
ediff <- function(x) pnorm(x) - edf(x)
m.x <- tmp.x[ which.max( abs( ediff(tmp.x) ) ) ]
ediff( m.x )  # KS stat
segments( m.x, edf(m.x), m.x, pnorm(m.x), col='red' )  # KS stat

curve( ediff, from=-3, to=3, n=1000 )
abline(h=0, col='lightgrey')    

ediff2 <- function(x) (pnorm(x) - edf(x))^2/( pnorm(x)*(1-pnorm(x)) )*dnorm(x)
curve( ediff2, from=-3, to=3, n=1000 )
abline(h=0)

शीर्ष ग्राफ केएस स्टेट को दर्शाने वाली लाइन के साथ मानक सामान्य के सीडीएफ की तुलना में मानक सामान्य से एक नमूना का ईडीएफ दिखाता है। मध्य का ग्राफ फिर 2 घटों में अंतर दिखाता है (आप देख सकते हैं कि केएस स्टैट कहां होता है)। नीचे तब चौकोर, भारित अंतर होता है, AD परीक्षण इस वक्र के तहत क्षेत्र पर आधारित होता है (यह मानते हुए कि मुझे सब कुछ सही मिला)।

अन्य परीक्षण एक qqplot में सहसंबंध को देखते हैं, qqplot में ढलान को देखते हैं, क्षणों के आधार पर माध्य, var और अन्य आँकड़ों की तुलना करते हैं।


+1, यह वास्तविक प्रश्न (मेरा ... के विपरीत) का एक अच्छा उत्तर है। अनुच्छेद 3 के मध्य से चल रहा विवरण एक चित्रमय आकृति के लिए भीख माँगता है, क्या आपको एक बनाने के लिए इच्छुक महसूस करना चाहिए।
गूँग - मोनिका

यह एक बहुत अच्छा जवाब है। बस यह सुनिश्चित करने के लिए कि मैं पूरी तरह से समझता हूं: केएस परीक्षण सीडीएफ और ईडीएफ के बीच सबसे बड़ा विचलन लौटाता है, जबकि एडी दो घटों के बीच कुल [भारित] क्षेत्र देता है?
MathematicalOrchid

@ मैमेटेमिकलऑर्किड, ज्यादातर सही है, AD दूरी को नापता है, फिर वजन करता है, फिर एकीकृत करता है, इसलिए यह क्षेत्र से कुछ अलग है (हालांकि समझने के लिए, एक क्षेत्र के रूप में इसके बारे में सोचना शायद ठीक है और बहुत सरल है)।
ग्रेग स्नो

1
मुझे उम्मीद है कि यदि आपके सैद्धांतिक वितरण में एक बिंदु द्रव्यमान (किसी दिए गए बिंदु पर सीडीएफ में ऊर्ध्वाधर कूद) और आपके डेटा के वास्तविक वितरण में लगभग एक बिंदु द्रव्यमान था, लेकिन काफी नहीं, तो उसी स्थान पर केएस परीक्षण बेहतर हो सकता है विज्ञापन परीक्षण के लिए। लेकिन वह मामला शायद थोड़ा विरोधाभासी है। केएस परीक्षण 1 पक्षीय परीक्षणों के लिए अनुमति देता है जहां विज्ञापन हमेशा 2-पक्षीय होता है, इसलिए यह एक और अंतर होगा (सिर्फ आम नहीं)।
ग्रेग स्नो

2
मुझे @ मैमेटमिकलऑर्चिड लक्षण वर्णन पसंद नहीं है कि केएस आँकड़ा केवल "एक चरम बिंदु" पर निर्भर करता है। सीडीएफ में उस "एक बिंदु" (अक्सर वितरण के बीच में) का स्थान सेट में अन्य बिंदुओं के मूल्यों पर निर्भर करता है और इसलिए यह उतना अलग या एकान्त नहीं है जितना कि भाषा भोले श्रोता को सुझाएगा।
डीडिन

12

एक स्पष्ट और विस्तृत प्रश्न लिखने के लिए +1। मुझे उम्मीद है कि मेरा जवाब भी निराशाजनक नहीं है। मेरा मानना ​​है कि परिकल्पना परीक्षण आपके मामले में एक उपयुक्त दृष्टिकोण नहीं है। अशक्त परिकल्पना महत्व परीक्षण एक उचित बात है जब जवाब हां या नहीं हो सकता है, लेकिन आपको पता नहीं है कि कौन सा है । (दुर्भाग्य से, यह वास्तव में आपको नहीं बताता है, लेकिन यह एक अलग मुद्दा है।) आपके मामले में, मैं इकट्ठा करता हूं, आप जानना चाहते हैं कि क्या आपका एल्गोरिथ्म अच्छा है। हालांकि, यह ज्ञात है (निश्चितता के साथ), कि कोई भी कंप्यूटर प्रोग्राम वास्तव में किसी भी संभावना वितरण से यादृच्छिक डेटा उत्पन्न नहीं कर सकता है। यह पहले सच है, क्योंकि सभी कंप्यूटर परिमित राज्य मशीन हैं , और इस प्रकार केवल छद्म आयामी संख्या का उत्पादन कर सकते हैं। इसके अलावा (एक तरफ सही यादृच्छिकता की कमी की स्थापना), यह संभव नहीं है कि उत्पन्न मान किसी भी निरंतर वितरण का पूरी तरह से पालन करें। इसे समझने के कई तरीके हैं, लेकिन शायद सबसे आसान यह है कि संख्या रेखा में 'अंतराल' होंगे, जो किसी भी निरंतर यादृच्छिक चर का सच नहीं है। इसके अलावा, ये अंतराल बिल्कुल समान रूप से व्यापक या पूरी तरह से समान नहीं हैं। कंप्यूटर वैज्ञानिकों में, जो छद्म आयामी संख्या पीढ़ी पर काम करते हैं, गेम का नाम एल्गोरिदम में सुधार करना है जैसे अंतराल छोटे होते हैं, अधिक समय के साथ, (और यह भी कि और अधिक मूल्यों को तेजी से उत्पन्न कर सकते हैं)। किसी भी दर पर, ये तथ्य स्थापित करते हैं कि परिकल्पना परीक्षण यह निर्धारित करने के लिए गलत दृष्टिकोण है कि क्या आपका एल्गोरिथ्म "एक विशिष्ट, ज्ञात संभाव्यता वितरण" का ठीक से पालन कर रहा है, क्योंकि यह नहीं है। (माफ़ करना।)

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

एक दूसरे नोट पर, अपने एल्गोरिथ्म की गुणवत्ता का मूल्यांकन करने के संबंध में, आप इसे अन्य मानक pRNG के सापेक्ष समय देना चाह सकते हैं।

उम्मीद है की यह मदद करेगा।


ठीक नहीं है कि मैंने क्या मांगा, लेकिन कम नहीं। मैं "निरंतर नहीं" द्वारा अनुमान लगाता हूं कि आप मूल रूप से इस तथ्य का उल्लेख कर रहे हैं कि कंप्यूटर अनंत-सटीक अंकगणित को लागू नहीं करते हैं?
मैथमैटिकलऑर्चिड

यह इसका एक बड़ा हिस्सा है, लेकिन पूरे मुद्दे का नहीं। यह एक ऐसा विषय है जो बेहद जटिल है।
गूँग - मोनिका को

1
@ गंग के पहले पैराग्राफ के कुछ विचार आर के लिए पैकेज SnowsPenultimateNormalityTestमें फ़ंक्शन में कार्यान्वित किए जाते हैं TeachingDemos। मैं पी-वैल्यू पर ध्यान केंद्रित करने के बजाय निकटता के उपाय को देखने के @ गोंग के विचार से सहमत हूं। इसके लिए qq कथानक में सहसंबंध का उपयोग करने के साथ एक समस्या यह है कि यदि आपके डेटा का सही आकार है, लेकिन विभिन्न अर्थ, विचरण आदि, तो भी आप वास्तव में उच्च सहसंबंध प्राप्त कर सकते हैं। एक विकल्प यह है कि केएस स्टेटिस्टिक या एडी स्टेटिस्टिक का उपयोग सैद्धांतिक से अंतर के उपायों के रूप में किया जाए।
ग्रेग स्नो

@gung, उत्तर के लिए धन्यवाद। क्या आप "अपने डेटा को साजिश रचने के लिए उचित रूप से परिवर्तित करने, और प्रश्न में सैद्धांतिक वितरण से संबंधित मानों की गणना करने पर थोड़ा और विस्तृत कर सकते हैं, क्या आप उन्हें सहसंबद्ध कर सकते हैं"? पीपी- या qq- प्लॉटिंग के लिए डेटा की गणना की है, आपके द्वारा उल्लिखित आर-स्कोर प्राप्त करने के लिए अगला कदम क्या होगा? यह कुछ प्रसिद्ध परीक्षण है? क्या आप कृपया एक संदर्भ दे सकते हैं? धन्यवाद!
इवान

1

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

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