Xác suất của một chuỗi k thành công trong một chuỗi các thử nghiệm Bernoulli


13

Tôi đang cố gắng tìm xác suất để có được 8 thử nghiệm liên tiếp trong một khối gồm 25 thử nghiệm, bạn có 8 khối tổng cộng (trong số 25 thử nghiệm) để có được 8 thử nghiệm liên tiếp. Xác suất nhận được bất kỳ thử nghiệm chính xác dựa trên phỏng đoán là 1/3, sau khi nhận được 8 liên tiếp, các khối sẽ kết thúc (do đó, việc có nhiều hơn 8 liên tiếp chính xác là không thể về mặt kỹ thuật). Làm thế nào tôi sẽ đi về việc tìm xác suất của điều này xảy ra? Tôi đã suy nghĩ theo cách sử dụng (1/3) ^ 8 vì xác suất đạt được 8 liên tiếp chính xác, có 17 cơ hội có thể để có được 8 liên tiếp trong một khối gồm 25 thử nghiệm, nếu tôi nhân 17 khả năng * 8 khối tôi nhận được 136, sẽ 1- (1- (1/3) ^ 8) ^ 136 cho tôi khả năng nhận được 8 liên tiếp đúng trong tình huống này hay tôi đang thiếu điều gì đó cơ bản ở đây?


1
Tôi tin rằng vấn đề với lập luận được đưa ra là các sự kiện được xem xét không độc lập. Ví dụ, hãy xem xét một khối duy nhất. Nếu tôi nói với bạn rằng (a) không có chạy trong tám rằng bắt đầu từ vị trí 6, (b) có một hoạt động bắt đầu từ vị trí 7 và (c) không có chạy bắt đầu từ vị trí 8, những gì mà cho bạn biết về xác suất chạy bắt đầu tại các vị trí, giả sử, từ 9 đến 15?
Đức hồng y

Câu trả lời:


14

Bằng cách theo dõi những thứ bạn có thể có được một công thức chính xác .

Đặt là xác suất thành công và là số lần thành công liên tiếp bạn muốn tính. Đây là cố định cho vấn đề. Giá trị biến là , số lượng thử nghiệm còn lại trong khối; và , số lượng thành công liên tiếp đã được quan sát. Hãy để cơ hội cuối cùng đạt được k thành công liên tiếp trước khi hết thử nghiệm m được viết f_ {p, k} (j, m) . Chúng tôi tìm kiếm f_ {1 / 3,8} (0,25) .k = 8 m j k m f p , kp=1/3k=8mjkmf 1 / 3 , 8 ( 0 , 25 )fp,k(j,m)f1/3,8(0,25)

Giả sử chúng ta vừa thấy thành công liên tiếp với các thử nghiệm . Thử nghiệm tiếp theo là một thành công, với xác suất trong đó trường hợp được tăng lên -; nếu không thì đó là một thất bại, với xác suất trong trường hợp được đặt lại về . Trong cả hai trường hợp, giảm . Từ đâu m > 0 p jjthm>0pj1 - p j 0 m 1j+11pj0m1

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

Khi bắt đầu điều kiện, chúng tôi có kết quả rõ ràng cho ( nghĩa là chúng tôi đã thấy liên tiếp) và cho ( nghĩa là không còn đủ thử nghiệm để có được liên tiếp). Bây giờ nó nhanh và đơn giản (sử dụng lập trình động hoặc, bởi vì các tham số của vấn đề này rất nhỏ, đệ quy) để tính toánm 0 k f p , kfp,k(k,m)=1m0kk - j > m kfp,k(j,m)=0kj>mk

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

Khi điều này mang lại .80.897 / 43.046.721 0,0018793p=1/380897/430467210.0018793

RMã tương đối nhanh để mô phỏng điều này là

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()))

Sau 3 giây tính toán, đầu ra là . Mặc dù điều này có vẻ cao, nhưng nó chỉ có 1.7 lỗi tiêu chuẩn. Tôi đã chạy lần lặp khác, đạt : chỉ lỗi tiêu chuẩn ít hơn mong đợi. (Để kiểm tra lại, vì phiên bản trước của mã này có một lỗi nhỏ, tôi cũng đã chạy 400.000 lần lặp trong Mathematica, thu được ước tính là .)10 6 0,001867 0,3 0,00184850.002131060.0018670.30.0018475

Kết quả này ít hơn một phần mười ước tính trong câu hỏi. Nhưng có lẽ tôi chưa hiểu hết về nó: một cách giải thích khác về "bạn có tổng cộng 8 khối ... để có 8 thử nghiệm đúng liên tiếp" là câu trả lời đang được tìm kiếm bằng .1 - ( 1 - f 1 / 3 , 8 ( 0 , 25 ) ) 8 ) = 0,0149358 ...1(1(1/3)8)1360.02051(1f1/3,8(0,25))8)=0.0149358...


13

Mặc dù giải pháp lập trình động tuyệt vời của @ whuber rất đáng để đọc, thời gian chạy của nó là đối với tổng số thử nghiệm và độ dài thử nghiệm mong muốn trong khi phương pháp lũy thừa ma trận là . Nếu lớn hơn nhiều so với , phương pháp sau sẽ nhanh hơn.m kO(k2m)mkm kO(k3log(m))mk

Cả hai giải pháp đều coi vấn đề là một chuỗi Markov với các trạng thái đại diện cho số lượng thử nghiệm chính xác ở cuối chuỗi cho đến nay và là một trạng thái để đạt được các thử nghiệm chính xác mong muốn liên tiếp. Ma trận chuyển tiếp là như vậy khi thấy một thất bại với xác suất sẽ đưa bạn trở về trạng thái 0 và nếu không, với xác suất đưa bạn đến trạng thái tiếp theo (trạng thái cuối cùng là trạng thái hấp thụ). Bằng cách nâng ma trận này lên lũy thừa thứ , giá trị ở hàng đầu tiên và cột cuối cùng là xác suất nhìn thấy đầu liên tiếp. Trong Python:1 - p n k = 8p1pnk=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))

mang lại 0,00187928367413 như mong muốn.


10

Theo câu trả lời này , tôi sẽ giải thích cách tiếp cận Chuỗi Markov của @Neil G thêm một chút và cung cấp giải pháp chung cho các vấn đề như vậy R. Chúng ta hãy biểu thị số lượng thử nghiệm chính xác liên tiếp theo , số lượng thử nghiệm là và một thử nghiệm chính xác bởi (thắng) và thử nghiệm không chính xác bởi (thất bại). Trong quá trình theo dõi các thử nghiệm, bạn muốn biết liệu bạn đã có một chuỗi 8 thử nghiệm đúng và số lượng thử nghiệm chính xác ở cuối chuỗi hiện tại của bạn. Có 9 tiểu bang ( ):n W F k + 1knWFk+1

8 FA : Chúng tôi chưa có thử nghiệm đúng liên tiếp nêu ra, và thử nghiệm cuối cùng là .8F

8 F WB : Chúng tôi chưa có thử nghiệm đúng liên tiếp và hai thử nghiệm cuối cùng là .8FW

8 F W WC : Chúng tôi chưa có thử nghiệm chính xác liên tiếp và ba thử nghiệm cuối cùng là .8FWW

H : Chúng tôi chưa có thử nghiệm chính xác liên tiếp và tám thử nghiệm cuối cùng là .F W W W W W W W8FWWWWWWW

8I : Chúng tôi đã có thử nghiệm đúng liên tiếp!8

Khả năng chuyển sang trạng thái từ trạng thái là và với xác suất chúng ta ở trong trạng thái . Từ trạng thái , khả năng chuyển sang trạng thái là và với xác suất , chúng tôi quay trở lại . Và như thế. Nếu chúng ta ở trong trạng thái , chúng ta ở lại đó.Một p = 1 / 3 1 - p = 2 / 3 Một B C 1 /BAp=1/31p=2/3ABC2 / 3 Một Tôi1/32/3AI

Từ đó, chúng ta có thể xây dựng ma trận chuyển tiếp (vì mỗi cột của tổng thành và tất cả các mục đều dương, được gọi là ma trận ngẫu nhiên trái ):9×9 M 1 MMM1M

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

Mỗi cột và hàng tương ứng với một trạng thái. Sau thử nghiệm, các mục của đưa ra xác suất nhận được từ trạng thái (cột) sang trạng thái (hàng) trong thử nghiệm. Cột ngoài cùng bên phải tương ứng với trạng thái và mục nhập duy nhất là ở góc dưới bên phải. Điều này có nghĩa là một khi chúng ta ở trạng thái , xác suất ở lại là . Chúng tôi quan tâm đến xác suất đến trạng thái từ trạng thái trong bước tương ứng với mục dưới bên trái củanMnjinI1II1IAn=25M25(tức là ). Tất cả những gì chúng ta phải làm bây giờ là tính toán . Chúng ta có thể làm điều đó với hàm năng lượng ma trận từ gói :M9125M25Rexpm

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

Xác suất nhận được từ trạng thái đến trạng thái trong 25 bước là , như được thiết lập bởi các câu trả lời khác.AI0.001879284


3

Đây là một số mã R mà tôi đã viết để mô phỏng điều này:

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()))

Tôi đang nhận được các giá trị nhỏ hơn một chút so với công thức của bạn, vì vậy một trong số chúng ta có thể đã mắc lỗi ở đâu đó.


Chức năng của bạn có bao gồm các thử nghiệm không thể thực hiện đúng 8 lần liên tiếp, ví dụ: "chạy" bắt đầu vào thử nghiệm 20 không?
Michelle

Rất có thể là tôi, mô phỏng R của tôi cũng mang lại cho tôi những giá trị nhỏ hơn. Tôi chỉ tò mò nếu có một giải pháp đại số để giải quyết vấn đề này như một vấn đề xác suất đơn giản trong trường hợp ai đó tranh chấp một mô phỏng.
AcidNynex

1
Tôi nghĩ rằng câu trả lời này sẽ được cải thiện bằng cách cung cấp đầu ra mà bạn thu được để có thể so sánh nó. Tất nhiên, bao gồm một cái gì đó như biểu đồ ngoài ra sẽ còn tốt hơn nữa! Các mã nhìn ngay với tôi thoạt nhìn. Chúc mừng. :)
Đức hồng y

3

Đây là một Mathematica mô phỏng cho cách tiếp cận chuỗi Markov, lưu ý rằng Mathematica chỉ bởi không 0 :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

Điều này cũng có thể được đánh giá trực tiếp bằng cách sử dụng các hàm dựng sẵn ProbabilityDiscreteMarkovProcess Mathicala :

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

0.00187928

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.