n Bernoulli 시행의 연속에서 k 개의 성공 가능성


13

25 회 시도 블록에서 8 회 연속으로 시도 할 확률을 찾으려고 노력하고 있습니다 .8 회 시도 (25 회 시도)에서 총 8 회 시도하여 연속으로 8 회 시도합니다. 추측에 근거하여 시행 착오를 얻을 확률은 1/3이며, 행 수 행에서 8을 얻은 후에 블록이 종료됩니다 (따라서 행 수 행에서 8 이상을 얻는 것은 기술적으로 불가능합니다). 이런 일이 일어날 확률을 어떻게 알 수 있습니까? 나는 (1/3) ^ 8을 연속으로 8을 얻을 확률으로 사용하는 선을 따라 생각하고 있습니다 .17을 곱하면 25 번의 시도 블록에서 8을 연속으로 얻을 수있는 17 가지 가능성이 있습니다. 가능성 * 내가 136을 얻는 8 개의 블록, 1- (1- (1/3) ^ 8) ^ 136이 상황에서 8을 연속으로 얻을 가능성을 주거나 여기에 근본적인 것이 빠져 있습니까?


1
주어진 주장에 대한 문제는 고려 된 사건들이 독립적이지 않다는 것입니다. 예를 들어, 단일 블록을 고려하십시오. (a) 위치 6에서 시작하는 8의 런이없고, (b) 위치 7에서 시작하는 런 있고, (c) 위치 8에서 시작하는 런이 없습니다. 9 시부 터 15 시까 지의 위치에서 달리기 확률은?
추기경

답변:


14

사물을 추적함으로써 정확한 공식을 얻을 수 있습니다 .

하자 성공의 확률 수 이 계산하려는 행에 성공의 수를합니다. 이들은 문제에 대해 수정되었습니다. 변수 값은 , 블록에 남은 시행 횟수입니다. 와 연속적인 성공의 수는 이미 관찰했다. 시행이 끝날 때 연속으로 성공을 거둘 수있는 기회를 . 우리는 찾습니다 .K = 8 m j 개의 케이 m의 F의 P , K ( J , m ) F 1 / 3 , 8 ( 0 , 25 )p=1/3k=8mjkmfp,k(j,m)f1/3,8(0,25)

우리가 우리의 본 가정 와 행에 성공 가서 시험을. 다음 시도는 성공입니다. 확률 는 이 경우 는 증가합니다 . 그렇지 않으면 확률은 이며이 경우 는 으로 재설정됩니다 . 두 경우 모두 은 씩 감소합니다 . 어떻게 m > 0 p j j + 1 1 p j 0 m 1jthm>0pjj+11pj0m1

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

시작 조건으로서 우리는 대한 명백한 결과 을 가진다 ( , 우리는 이미 를 연속으로 보았다 ) 및 대해 ( , 를 연속 으로 가져갈 수있는 시험이 충분하지 않습니다 ). 이제는 동적 프로그래밍을 사용하거나이 문제의 매개 변수가 너무 작아서 재귀하는 것이므로 빠르고 간단합니다.m 0 k f p , k ( j , m ) = 0 k j > m kfp,k(k,m)=1m0kfp,k(j,m)=0kj>mk

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

경우 본 수율 .80,897 / 4천3백4만6천7백21 0.0018793p=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 표준 오류에 불과합니다. 다른 반복을 실행하여 생성 . 예상보다 표준 오류 만 줄었습니다. (이 코드의 이전 버전에는 미묘한 버그가 있었기 때문에 이중 검사로 Mathematica 에서 400,000 회 반복하여 의 추정치를 .)10 6 0.001867 0.3 0.00184750.002131060.0018670.30.0018475

이 결과는 문제의 추정치 10 분의 1보다 작습니다 . 그러나 아마도 나는 그것을 완전히 이해하지 못했을 것입니다 : "여러 번에 총 8 번 시도합니다 ... 8 번의 시련을 올바르게 얻는 것"에 대한 또 다른 해석은 찾는 답이 와 같다는 것입니다 .(1) - ( 1 - F 1 / 3 , 8 ( 0 , 25 ) )1(1(1/3)8)1360.02051(1f1/3,8(0,25))8)=0.0149358...


13

@whuber의 우수한 동적 프로그래밍 솔루션은 읽을만한 가치가 있지만, 실행 횟수는 총 시행 횟수 및 원하는 시행 길이 와 관련하여 이지만 행렬 지수법은 . 경우 보다 큰 , 이하의 방법이 빠르다.m의 유전율 O ( K 3 로그 ( m ) ) m의 KO(k2m)mkO(k3log(m))mk

두 솔루션 모두 지금까지 문자열 끝에 올바른 시행 횟수를 나타내는 상태와 원하는 정확한 시행 횟수를 연속으로 표시하는 Markov 체인으로 문제를 고려합니다. 전이 행렬은 확률 로 실패를 확인하면 상태 0으로 돌아가고 그렇지 않으면 확률 로 다음 상태로 진행합니다 (최종 상태는 흡수 상태 임). 이 행렬을 제곱으로 올리면 첫 번째 행의 값과 마지막 열의 값이 행에서 헤드 를 볼 확률입니다 . 파이썬에서 :1 - p n k =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

이 답변 에 따르면 @Neil G의 Markov-Chain 접근 방식을 조금 더 설명하고에서 이러한 문제에 대한 일반적인 해결책을 제공 할 것입니다 R. 원하는 시행 횟수를 행으로 , 으로 시행 횟수를, (승리)를 시행하는 올바른 시행 횟수를, (실패)를 기준으로 하는 잘못된 시행 횟수를 나타냅니다 . 시행 착오를 추적하는 과정에서 이미 8 번의 올바른 시행 착오가 있는지 여부와 현재 시퀀스의 끝에서 올바른 시행 횟수를 알고 싶습니다. 9 가지 상태 ( )가 있습니다 :n W F k + 1knWFk+1

8 FA : 우리는 아직 번의 정확한 시험을하지 않았으며, 마지막 시험은 였습니다.8F

8 F WB : 우리는 번의 정답을 아직받지 못했고 마지막 두 번의 시도는 였습니다.8FW

8 F W C : 우리는 아직 번의 정확한 시험을하지 않았으며, 마지막 3 번의 시험은 .8FWW

8 F W W W W W W W WH : 우리는 아직 번의 정확한 시험을하지 않았으며, 마지막 8 번의 시험은 .8FWWWWWWW

8I : 우리는 번의 올바른 시련을 연속했습니다!8

상태 에서 상태 로 이동할 확률 은 이고 확률 상태 머무 릅니다 . 상태 에서 상태 로 이동할 확률 은 이고 확률 로 돌아갑니다 . 등등. 우리가 상태에 있다면 , 우리는 그곳에 머물러 있습니다.P = 1 / 3 (1 개) - (P) = 2 / 3 B C 1 / 3 2 / 3 IBAp=1/31p=2/3ABC1/32/3AI

이로부터, 우리는 만들 수 천이 행렬 (각 열과 에 합을 모든 항목이 긍정적이고, 불리며 왼쪽 확률 행렬 )M M 1 M9×9 MM1M

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

각 열과 행은 하나의 상태에 해당합니다. 후 시험의 항목 상태에서 얻을 수있는 확률 수득 상태로 (열) 에 (행) 재판. 가장 오른쪽 열은 상태 에 해당하며 오른쪽 하단의 항목은 입니다. 이것은 일단 우리가 상태 에 에 머무를 확률 은 이라는 것을 의미합니다 . 우리는 의 왼쪽 아래 진입 점에 해당하는 단계 에서 상태 에서 상태 도달 할 확률에 관심이 있습니다.M n jnMnjN I 1 I I 1 I N = 25 M 25 M 25 91 M 25inI1II1IAn=25M25(예 : ). 이제 계산하기 됩니다. 패키지 의 matrix power 함수를 사용하여 이를 수행 할 수 있습니다 .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

25 단계 에서 상태 에서 상태 확률은 다른 답변에 의해 설정된 입니다.I 0.001879284AI0.001879284


3

이것을 시뮬레이션하기 위해 작성한 R 코드는 다음과 같습니다.

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

수식보다 약간 작은 값을 얻으므로 어딘가에서 실수를 한 사람이있을 수 있습니다.


예를 들어 20 번 시험에서 "실행"이 시작된 곳과 같이 8 번 연속으로 올 수없는 시험이 포함되어 있습니까?
Michelle

아마도 R 시뮬레이션은 더 작은 값을 제공합니다. 누군가가 시뮬레이션에 이의를 제기하는 경우 간단한 확률 문제 로이 문제를 해결하는 대수적 솔루션이 있는지 궁금합니다.
AcidNynex는

1
나는 당신이 얻은 결과를 비교할 수 있도록 제공 함으로써이 대답이 향상 될 것이라고 생각합니다. 물론 히스토그램과 같은 것을 포함하는 것이 더 좋습니다! 코드는 언뜻보기에 나에게 잘 보입니다. 건배. :)
추기경

3

여기입니다 티카 마르코프 체인 접근 방법에 대한 시뮬레이션, 참고는 매스 매 티카 인덱스에 의해 하지 :010

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

내장 ProbabilityDiscreteMarkovProcess Mathematica 함수를 사용하여 직접 평가할 수도 있습니다 .

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

우리에게 같은 대답을 얻을 것입니다 :0.00187928

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.