बर्नौली परीक्षण में "सफलता" की संभावना का अनुमान लगाने के लिए आवश्यक नमूना आकार


13

मान लीजिए कि एक खेल एक घटना प्रदान करता है जो पूरा होने पर, या तो एक इनाम देता है, या कुछ भी नहीं देता है। यह निर्धारित करने के लिए सटीक तंत्र कि क्या इनाम दिया गया है अज्ञात है, लेकिन मुझे लगता है कि एक यादृच्छिक संख्या जनरेटर का उपयोग किया जाता है, और यदि परिणाम कुछ हार्ड-कोडित मूल्य से अधिक है, तो आपको इनाम मिलता है।

यदि मैं मूल रूप से रिवर्स-इंजीनियर बनाना चाहता हूं, तो प्रोग्रामर यह निर्धारित करने के लिए किस मूल्य का इस्तेमाल करते हैं कि इनाम कितनी बार दिया जाता है (अनुमानित 15-30%), मुझे मेरे द्वारा आवश्यक नमूनों की संख्या की गणना कैसे करनी चाहिए?

मैंने यहाँ "सत्य संभाव्यता का अनुमानक" खंड के साथ शुरुआत की: Checking_whether_a_coin_is_fair , लेकिन मुझे यकीन नहीं है कि मैं सही रास्ते पर जा रहा हूँ। मुझे 95% आत्मविश्वास में 3% की अधिकतम त्रुटि के लिए आवश्यक ~ 1000 नमूनों के परिणाम मिल रहे थे।

अंततः, यहाँ मैं हल करने की कोशिश कर रहा हूँ:

  • इवेंट # 1 इनाम 1.0R, X% समय देता है
  • इवेंट # 2 इनाम 1.4R देता है, समय का Y%

मैं X & Y का अनुमान लगाना चाहता हूं जो यह निर्धारित करने के लिए पर्याप्त है कि कौन सी घटना अधिक कुशल है। बड़े नमूना आकार एक समस्या है क्योंकि मैं केवल प्रत्येक 20 मिनट में केवल 1 नमूना प्राप्त कर सकता हूं।


6
" मुझे 95% आत्मविश्वास में 3% की अधिकतम त्रुटि के लिए आवश्यक ~ 1000 नमूनों के परिणाम मिल रहे थे। " --- बहुत ज्यादा; यही कारण है कि चुनाव अक्सर लगभग 1000 लोगों का नमूना लेते हैं ... और फिर 3% के क्रम में त्रुटि के एक मार्जिन की रिपोर्ट करते हैं। यह बहुत अच्छी तरह से लागू होता है जब प्रतिशत 0 या 1 के करीब नहीं होता है (यह उन मामलों में बहुत व्यापक है)
Glen_b -Reinstate Monica

1
"जो और भी अधिक कुशल है" से आपका क्या तात्पर्य है? क्या आपका मतलब है "किस घटना से बड़ा अपेक्षित इनाम है"?
Glen_b -Reinstate मोनिका

1
हाँ, मैं यह पता लगाने की कोशिश कर रहा हूं कि समय के साथ बड़ा अपेक्षित इनाम है। मैं दोनों घटनाओं को नहीं कर सकता - एक या दूसरे को चुनना होगा। जबकि इवेंट # 1 कम इनाम देता है, यह संभव है कि यह इनाम को अधिक बार देता है।
ब्रैड

2
आप अनुक्रमिक नमूने का उपयोग कर सकते हैं , जिसमें नमूना आकार पहले से तय नहीं है। इस दृष्टिकोण का लाभ यह है कि यह विश्वास की गारंटी देता है कि कोई भी (अज्ञात) संभावना नहीं है। उदाहरण के लिए यहां देखें ; विशेष रूप से अंतिम संदर्भित पेपर
लुइस मेंडो

जवाबों:


5

मान लिया जाये कि आपके व्यक्तिगत परीक्षणों स्वतंत्र हैं, आप एक द्विपद variate निरीक्षण जहां पर फैसला n और अनुमान लगाना चाहते पी । अब की अधिकतम संभावना आकलनकर्ता पी , नमूना अंश पी = एक्स / n विचरण है पी ( 1 - पी )

एक्स~बिन(n,पी)
nपीपीपी^=एक्स/n जो किp=1 केलिए प्राप्त किया जाता हैपी(1-पी)n14n । तो मानक त्रुटि है1/पी=12 । एक बड़े-नमूने वाले एप्रोक्सिमेंट कॉन्फिडेंस इंटरवल में 2 मानक त्रुटियों के बारे में आधी-चौड़ाई है, इसलिए इसे अधिकतम0.03पर रखने के लिए, आपको2को हल करना होगा 1/4n=12n0.03 जो देता हैn1112। अब आप आधे रास्ते के लिए अन्य आवश्यकताओं के लिए हल कर सकते हैं, उसी तरह। यदि आप जानते हैं (या मानने को तैयार हैं) किपी0.5 से दूर है, तो आप कुछ हद तक कम टिप्पणियों के साथ कर सकते हैं।
22n0.03
n1112पी

2

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

नमूना आकार हार्ड-कोडित मूल्य के एक फ़ंक्शन के रूप में भिन्न हो सकता है।

तो यहाँ कोड है:

#main code
#want 95% CI to be no more than 3% from prevalence
#expect prevalence around 15% to 30%
#think sample size is ~1000

my_prev <- seq(from=0.15, to=0.30, by = 0.002)

samp_sizes <- seq(from=400, to=800, by = 1)
samp_sizes

N_loops <- 2000

store <- matrix(0,
                nrow = length(my_prev)*length(samp_sizes),
                ncol = 3)
count <- 1

#for each prevalence
for (i in 1:length(my_prev)){

     #for each sample size
     for(j in 1:length(samp_sizes)){

          temp <- 0

          for(k in 1:N_loops){

               #draw samples
               y <- rbinom(n = samp_sizes[j],
                           size = 1,
                           prob = my_prev[i])

               #compute prevalence, store
               temp[k] <- mean(y)

          }

          #compute 5% and 95% of temp
          width <-  diff(quantile(x = temp,probs = c(0.05,0.95)))

          #store samp_size, prevalence, and CI half-width
          store[count,1] <- my_prev[i]
          store[count,2] <- samp_sizes[j]
          store[count,3] <- width[[1]]

          count <- count+1
     }

}


store2 <- numeric(length(my_prev))

#go through store
for(i in 1:length(my_prev)){
     #for each prevalence
     #find first CI half-width below 3%
     #store samp_size

     idx_p <- which(store[,1]==my_prev[i],arr.ind = T)
     idx_p

     temp <- store[idx_p,]
     temp

     idx_2 <- which(temp[,3] <= 0.03*2, arr.ind = T)
     idx_2

     temp2 <- temp[idx_2,]
     temp2

     if (length(temp2[,3])>1){
     idx_3 <- which(temp2[,3]==max(temp2[,3]),arr.ind = T)
     store2[i] <- temp2[idx_3[1],2]
     } else {
          store2[i] <- temp2[2]
     }


}


#plot it
plot(x=my_prev,y=store2,
     xlab = "prevalence", ylab = "sample size")
lines(smooth.spline(x=my_prev,y=store2),col="Red")
grid()

±

नमूना आकार बनाम प्रचलन

50% से दूर, "कुछ हद तक कम टिप्पणियों" की आवश्यकता प्रतीत होती है, जैसा कि केजेटिल ने सुझाव दिया था।

मुझे लगता है कि आप 400 नमूनों से पहले प्रचलन का एक सभ्य अनुमान प्राप्त कर सकते हैं, और अपनी नमूना रणनीति को समायोजित कर सकते हैं। मुझे नहीं लगता कि बीच में एक जॉग होना चाहिए, और इसलिए आप 10e3 तक N_loops को टक्कर दे सकते हैं, और "my_prev" को 0.001 तक "bump" कर सकते हैं।


यदि यह धीमा है, तो ऐसा इसलिए है क्योंकि आप चरणों को बहुत छोटा बनाते हैं!
kjetil b halvorsen

@kjetilbhalvorsen - यह काफी अच्छा था। "धीमा" एक अस्वीकरण था, और एक "हैंड्रिल" जो पूछने वाले को विधि को उलझाने में अधिक सहज महसूस करने में मदद कर सकता है। यदि आप विश्लेषणात्मक दृष्टिकोण को नहीं जानते हैं, तो एक सिमुलेशन आपको खुद को सिखाने में मदद कर सकता है, या यदि आपको मदद मांगने की आवश्यकता है, तो यह तय करने में आपकी मदद कर सकता है।
14

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