N बर्नौली परीक्षणों के एक क्रम में k सफलताओं के एक रन की संभावना


13

मैं 25 परीक्षणों के ब्लॉक में एक पंक्ति में 8 परीक्षणों को प्राप्त करने की संभावना को खोजने की कोशिश कर रहा हूं, आपके पास पंक्ति में 8 परीक्षणों को सही करने के लिए 8 कुल ब्लॉकों (25 परीक्षणों के) हैं। अनुमान के आधार पर किसी भी परीक्षण को सही होने की संभावना 1/3 है, एक पंक्ति में 8 प्राप्त करने के बाद ब्लॉक समाप्त हो जाएगा (इसलिए पंक्ति सही में 8 से अधिक प्राप्त करना तकनीकी रूप से संभव नहीं है)। मैं इस घटित होने की संभावना के बारे में कैसे पता लगाऊंगा? मैं (१/३) ^ along का उपयोग करने की लाइनों के साथ सोच रहा हूँ along एक पंक्ति में a प्राप्त करने की संभावना के रूप में, २५ परीक्षणों के एक ब्लॉक में एक पंक्ति में 17 प्राप्त करने के लिए १ 8 संभावित मौके हैं, अगर मैं १ly गुणा करूं संभावनाएं * 8 ब्लॉक मुझे 136 मिलते हैं, 1- (1- (1/3) ^ 8) ^ 136 मुझे इस स्थिति में एक पंक्ति में 8 सही होने की संभावना देते हैं या क्या मैं यहां कुछ मौलिक याद कर रहा हूं?


1
मेरा मानना ​​है कि दिए गए तर्क के साथ समस्या यह है कि विचार की गई घटनाएं स्वतंत्र नहीं हैं। उदाहरण के लिए, एक एकल ब्लॉक पर विचार करें। तो मैं आपको बता (क) आठ का कोई रन स्थिति 6 बजे शुरू होता है, (ख) वहाँ है कि है कि है स्थिति 7 और (ग) कोई स्थिति 8 पर शुरू रन है पर शुरू एक रन, क्या है कि आप के बारे में बता करता है एक रन की संभावना पदों पर शुरू, कहते हैं, 9 15 के माध्यम से?
कार्डिनल

जवाबों:


14

चीजों पर नज़र रखने से आपको एक सटीक सूत्र मिल सकता है

चलो सफलता और की संभावना हो कश्मीर = 8 एक पंक्ति आप की गणना करना चाहते में सफलताओं की संख्या हो। ये समस्या के लिए तय किए गए हैं। परिवर्तनीय मूल्य मीटर हैं , ब्लॉक में छोड़े गए परीक्षणों की संख्या; और जे , पहले से ही देखी गई लगातार सफलताओं की संख्या। एम परीक्षणों के समाप्त होने से पहले अंततः एक पंक्ति में k सफलताओं को प्राप्त करने का मौका दें, f p , k ( j , m ) लिखा जाए । हम चाहते हैं 1 / 3 , 8 (p=1/3k=8mjkmfp,k(j,m)f1/3,8(0,25)

मान लीजिए कि हमने अभी तक हमारे सफलता को m > 0 परीक्षणों के साथ एक पंक्ति में देखा है । अगला परीक्षण या तो एक सफलता है, संभाव्यता पी के साथ - जो केस j को बढ़ाकर j + 1 - किया जाता है; या यह एक विफलता है, प्रायिकता के साथ 1 - p - जो मामला j 0 पर रीसेट है । या तो मामले में, मी 1 से कम हो जाता है । जहां सेjthm>0pjj+11pj0m1

fp,k(j,m)=pfp,k(j+1,m1)+(1p)fp,k(0,m1).

शुरू करने की स्थिति के रूप में हम स्पष्ट परिणाम हो के लिए मीटर 0 ( यानी , हम पहले ही देख चुके कश्मीर एक पंक्ति में) और पी , कश्मीर ( जे , मीटर ) = 0 के लिए कश्मीर - j > m ( यानी , k पाने के लिए पर्याप्त परीक्षण नहीं हैंfp,k(k,m)=1m0kfp,k(j,m)=0kj>mkएक पंक्ति में)। यह अब तेज और सीधा है (डायनेमिक प्रोग्रामिंग का उपयोग कर या, क्योंकि इस समस्या के पैरामीटर इतने छोटे हैं, पुनरावृत्ति) गणना करने के लिए

fp,8(0,25)=18p817p945p16+81p1736p18.

जब इस पैदावार +८०८९७ / 43,046,721 .००,१८,७९३p=1/380897/430467210.0018793

इसका Rअनुकरण करने के लिए अपेक्षाकृत तेज़ कोड है

hits8 <- function() {
    x <- rbinom(26, 1, 1/3)                # 25 Binomial trials
    x[1] <- 0                              # ... and a 0 to get started with `diff`
    if(sum(x) >= 8) {                      # Are there at least 8 successes?
        max(diff(cumsum(x), lag=8)) >= 8   # Are there 8 successes in a row anywhere?
    } else {
        FALSE                              # Not enough successes for 8 in a row
    }
}
set.seed(17)
mean(replicate(10^5, hits8()))

गणना के 3 सेकंड के बाद, आउटपुट । हालांकि यह उच्च दिखता है, यह केवल 1.7 मानक त्रुटियां हैं। मैंने एक और 10 6 पुनरावृत्तियों को चलाया , 0.001867 उपज : केवल 0.3 मानक त्रुटियों की अपेक्षा कम। (डबल-चेक के रूप में, क्योंकि इस कोड के एक पुराने संस्करण में एक सूक्ष्म बग था, मैंने 0.0018475 का अनुमान प्राप्त करते हुए , गणितज्ञ में 400,000 पुनरावृत्तियों को चलाया ।)0.002131060.0018670.30.0018475

यह परिणाम है कम दसवां के अनुमान की तुलना में सवाल में। लेकिन शायद मैं पूरी तरह से यह समझ में नहीं: की "आप 8 कुल ब्लॉक ... 8 परीक्षणों एक पंक्ति में सही कर प्राप्त करने के लिए" एक और व्याख्या है कि इस सवाल का जवाब किया जा रहा बराबरी की मांग की 1 - ( 1 - 1 / 3 , 8 ( 0 , 25 ) ) 8 ) = .०१,४९,३५८ ...1(1(1/3)8)1360.02051(1f1/3,8(0,25))8)=0.0149358...


13

O(k2m)mkO(k3log(m))mk

p1pnk=8

import numpy as np

def heads_in_a_row(flips, p, want):
    a = np.zeros((want + 1, want + 1))
    for i in range(want):
        a[i, 0] = 1 - p
        a[i, i + 1] = p
    a[want, want] = 1.0
    return np.linalg.matrix_power(a, flips)[0, want]

print(heads_in_a_row(flips=25, p=1.0 / 3.0, want=8))

इच्छानुसार 0.00187928367413।


10

RknWFk+1

A8F

B8FW

C8FWW

H8FWWWWWWW

I8

BAp=1/31p=2/3ABC1/32/3AI

9×9 MM1M

M=(2/32/32/32/32/32/32/32/301/30000000001/30000000001/30000000001/30000000001/30000000001/30000000001/30000000001/31)

nMnjinI1II1IAn=25M25M9125M25Rexpm

library(expm)

k <- 8   # desired number of correct trials in a row
p <- 1/3 # probability of getting a correct trial
n <- 25  # Total number of trials 

# Set up the transition matrix M

M <- matrix(0, k+1, k+1)

M[ 1, 1:k ] <- (1-p)

M[ k+1, k+1 ] <- 1

for( i in 2:(k+1) ) {

  M[i, i-1] <- p

}

# Name the columns and rows according to the states (A-I)

colnames(M) <- rownames(M) <- LETTERS[ 1:(k+1) ]

round(M,2)

     A    B    C    D    E    F    G    H I
A 0.67 0.67 0.67 0.67 0.67 0.67 0.67 0.67 0
B 0.33 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0
C 0.00 0.33 0.00 0.00 0.00 0.00 0.00 0.00 0
D 0.00 0.00 0.33 0.00 0.00 0.00 0.00 0.00 0
E 0.00 0.00 0.00 0.33 0.00 0.00 0.00 0.00 0
F 0.00 0.00 0.00 0.00 0.33 0.00 0.00 0.00 0
G 0.00 0.00 0.00 0.00 0.00 0.33 0.00 0.00 0
H 0.00 0.00 0.00 0.00 0.00 0.00 0.33 0.00 0
I 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.33 1

# Calculate M^25

Mn <- M%^%n
Mn[ (k+1), 1 ]
[1] 0.001879284

AI0.001879284


3

यहाँ कुछ आर कोड है जो मैंने इसे अनुकरण करने के लिए लिखा है:

tmpfun <- function() {
     x <- rbinom(25, 1, 1/3)  
     rx <- rle(x)
     any( rx$lengths[ rx$values==1 ] >= 8 )
}

tmpfun2 <- function() {
    any( replicate(8, tmpfun()) )
}

mean(replicate(100000, tmpfun2()))

मुझे आपके फॉर्मूले से थोड़ा छोटा मान मिल रहा है, इसलिए हममें से किसी ने कहीं न कहीं गलती की होगी।


क्या आपके फ़ंक्शन में परीक्षण शामिल हैं, जहां एक पंक्ति में 8 प्राप्त करना असंभव है, उदाहरण के लिए, जहां परीक्षण 20 पर "रन" शुरू हुआ?
मिशेल

सबसे अधिक संभावना है, मेरा आर सिमुलेशन मुझे छोटे मान भी दे रहा है। अगर कोई अनुकार विवाद करता है, तो एक साधारण संभावना के रूप में इसे हल करने के लिए एक बीजीय समाधान है, तो मैं उत्सुक हूं।
एसिडिनएक्सएक्स

1
मुझे लगता है कि आपके द्वारा प्राप्त आउटपुट प्रदान करके इस उत्तर में सुधार किया जाएगा ताकि इसकी तुलना की जा सके। बेशक, इसके अलावा हिस्टोग्राम जैसी कोई चीज़ भी बेहतर होगी! पहली नज़र में कोड मुझे सही लगता है। चीयर्स। :)
कार्डिनल

3

10

M = Table[e[i, j] /. {
    e[9, 1] :> 0,
    e[9, 9] :> 1,
    e[_, 1] :> (1 - p),
    e[_, _] /; j == i + 1 :> p,
    e[_, _] :> 0
  }, {i, 1, 9}, {j, 1, 9}];

x = MatrixPower[M, 25][[1, 9]] // Expand

18p817p945p16+81p1736p18

पर मूल्यांकनp=1.03.0

x /. p -> 1/3 // N

0.00187928

इसे सीधे बिल्डिन Probabilityऔर DiscreteMarkovProcess मैथेमेटिका कार्यों का उपयोग करके भी मूल्यांकन किया जा सकता है:

Probability[k[25] == 9, Distributed[k, DiscreteMarkovProcess[1, M /. p -> 1/3]]] // N

0.00187928

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