다른 확률에 대한 확률 분포


36

확률이 0.6 인 각 시행에서 16 회의 시행에서 9 개의 성공 확률을 얻으려면 이항 분포를 사용할 수 있습니다. 16 번의 시도마다 성공 확률이 다른 경우 무엇을 사용할 수 있습니까?


1
@whuber 정규 근사에 대한 설명에서 평균 및 표준 편차의 계산은 Wikipedia의 설명과 다릅니다. Wiki에서 평균은 np이고 표준 편차는 np (1-p)입니다. 따라서이 문제에서 이항 분포에서 성공 확률 변화의 정규 근사에 대한 평균은 p1 + p2 + p3 + p4 + p5 + ... + pi이고 분산은 p1 (1-p1) + p2 ( 1-p2) + ... + pi (1-pi). 내가 맞아?
— David

1
포아송 이항 분포 에 대한 Wikipedia를 참조하십시오 . 또한 여기에서 몇 가지 조회수를 나타내는 검색어도 있습니다.
— Glen_b

@David 모든 가 공통 값 와 동일한 경우 및 , 참조하는 Wikipedia 설명은 특별한 경우입니다. pipp1+p2+⋯+pn=npp1(1−p1)+⋯+pn(1−pn)=np(1−p)
— whuber


답변:


22

이것은 16 (아마도 독립적 인) 이항 실험의 합입니다. 독립성을 가정 하면 확률 이 배가 됩니다. 확률이 및 인 성공을 가진 두 번의 시도 후 두 시도 에서 성공할 확률 은 이고 성공하지 않을 확률은 이고 한 번의 성공 확률은 입니다. 마지막 표현은 정확히 하나의 성공을 거두는 두 가지 방법이 상호 배타적이라는 사실에 그 유효성이 있습니다. 즉, 확률이 추가됨을 의미 합니다 .p1p2p1p2(1−p1)(1−p2)p1(1−p2)+(1−p1)p2

독립 확률이 곱하고 상호 배타적 인 규칙이 추가하는이 두 가지 규칙을 사용하면 확률 16 가지 시도에 대한 답을 구할 수 있습니다 . 그렇게하려면 주어진 각 성공 횟수 (예 : 9)를 얻는 모든 방법을 고려해야합니다. 9 개의 성공을 달성 하는 방법이 있습니다. 예를 들어, 그 중 하나는 시행 1, 2, 4, 5, 6, 11, 12, 14 및 15가 성공하고 다른 하나는 실패 일 때 발생합니다. 성공에는 확률 및 있고 실패에는 확률 . 이 16 개의 숫자를 곱하면 기회가됩니다p1,…,p16p1,p2,p4,p5,p6,p11,p12,p14,p151-p3,1-p7,…,1-p13,1-p16(169)=11440p1,p2,p4,p5,p6,p11,p12,p14,p151−p3,1−p7,…,1−p13,1−p16이 특정 순서의 결과. 이 숫자와 11,439 개의 나머지 숫자를 합하면 답이됩니다.

물론 컴퓨터를 사용할 것입니다.

16 회 이상 시행하는 경우 분포를 근사화해야합니다. 확률 및 가 너무 작아 지지 않으면 정규 근사가 잘 작동하는 경향이 있습니다. 이 방법을 사용하면 시행 의 합에 대한 기대치 가 이고 (시행이 독립적이므로) 분산은 . 그런 다음 합의 분포가 평균 및 표준 편차 척합니다 . 대답은 다른 성공 비율에 해당하는 컴퓨팅 확률에 좋은 경향이 있습니다. 1 - p i n μ = p 1 + p 2 + ⋯ + p n σ 2 = p 1 ( 1 - p 1 ) + p 2 ( 1 - p 2 ) + ⋯ + p n ( 1 - p n ) μ σ μ σ n σ μpi1−pinμ=p1+p2+⋯+pnσ2=p1(1−p1)+p2(1−p2)+⋯+pn(1−pn)μσμ 의 몇 배수보다는 더 이상에 의해 . 으로 큰 성장이 근사 적보다 정확한 도착과의 더 큰 배수 작동 떨어져 .σnσμ


9
컴퓨터 과학자들은 이것을 "포아송 실험"이라고 부르며,이를 Bernoulli 실험과 구별합니다. Central Limit Theorem 근사치 외에도 유효한 꼬리 범위가 있습니다. 여기 하나 있습니다. "Poisson 시험에 대한 체 르노 프 (Chernoff) 경계"에 대한 Google 검색은 일반적인 CS 치료에서 찾을 수있는 결과를 나타냅니다.
— 추기경

@Cardinal 그 명명법은 흥미 롭습니다. 분포는 Poisson 분포에 의해 근사치가 아니기 때문에 매우 작은 대해서는 유효 하지만 오해의 소지가있는 것으로 보입니다. (이 질문에 대한 CV에 대한 또 다른 토론이 있습니다. 여기서 "16"은 10,000으로 바뀌고 꼬리 확률을 검사하지만 다시 찾지 pi
— 못했습니다

1
예, 이름에 동의합니다. 처음 만났을 때 조금 이상하다고 생각했습니다. 검색에 유용한 용어로 여기에 추가했습니다. 컴퓨터 과학자들은 특정 알고리즘을 다룰 때 종종 이러한 확률을 고려하는 것 같습니다. 다른 질문을 찾으면 관심을 가질 것입니다. 그것은이다 이것 아마?
— 추기경

2
@cardinal은 우리가 "CS 사람들"을 Poisson 재판이라고 부릅니다. 실제로이 경우 표준 Chernoff-Hoeffding 바운드는 OP가 요구하는 바운드를 정확하게 제공합니다.
— Suresh Venkatasubramanian

1
@ 데이비드 어제에 의한 의견에 따라,로 평균에 가깝게 보통의 명세서에 뭔가 잘못이 우리는 값을 취할 수 각각 16 베르누이 RVS를 합산된다 0 또는 1이므로 합계에 0에서 1 사이가 아닌 0에서 16 사이의 지원 도메인이 있습니다. sd도 검사 할 가치가 있습니다.
μ=(p1+p2+⋯+pn)/n
— wolfies

12

@whuber의 정규 근사에 대한 한 가지 대안은 "혼합"확률 또는 계층 적 모델을 사용하는 것입니다. 이것은 가 어떤 식 으로든 유사한 경우에 적용 되며, 일부 매개 변수 인덱싱 된 밀도 함수 를 사용하여 확률 분포 로이를 모델링 할 수 있습니다 . 적분 방정식을 얻습니다.P 난 ~ D I 의 t ( θ ) g ( 페이지 | θ ) θpipi∼Dist(θ)g(p|θ)θ

Pr(s=9|n=16,θ)=(169)∫01p9(1−p)7g(p|θ)dp

이항 확률은 ) 설정에서 비롯되며 정규 근사는 (생각) 설정에서 비롯됩니다. ( @ whuber의 답변에 정의 된대로 및 ) 및 " 이 PDF의 꼬리 "는 피크 부근에서 급격히 떨어집니다.g ( p | θ ) = g ( p | μ , σ ) = 1g(p|θ)=δ(p−θ)μσg(p|θ)=g(p|μ,σ)=1σϕ(p−μσ)μσ

베타 분포를 사용하면 간단한 분석 형식으로 이어질 수 있으며 베타가 상당히 유연하기 때문에 정상적인 근사치에서 발생하는 "작은 p"문제를 겪을 필요가 없습니다. 사용하여 A 로 분배 (이는 "mimimum KL 발산"추정치 임)은 다음 식에 의해 솔루션 세트 :α , βbeta(α,β)α,β

ψ(β)−ψ(α+β)=1

ψ(α)−ψ(α+β)=1n∑i=1nlog[pi]
ψ(β)−ψ(α+β)=1n∑i=1nlog[1−pi]

여기서 는 디 감마 함수이며 고조파 계열과 밀접한 관련이 있습니다.ψ(.)

우리는 "베타 이항식"화합물 분포를 얻는다 :

(169)1B(α,β)∫01p9+α−1(1−p)7+β−1dp=(169)B(α+9,β+7)B(α,β)

이 분포는 @whuber가 지적하지만 베타 분포가 하나의 피크만을 갖기 때문에 작은 및 비스듬한 대해서는 합리적인 대답을 제공해야 하지만 다중 모달 에는 적합하지 않은 경우 정규 분포로 수렴합니다 . 그러나 모드에 베타 배포를 사용하면이 문제를 쉽게 해결할 수 있습니다 . 적분을 에서 조각 으로 각 조각이 고유 모드 (및 매개 변수를 추정하기에 충분한 데이터)를 가지며 각 조각 내에서 베타 분포를 맞출 수 있습니다. 그런 다음 대해 변수 을 변경하면 결과를 더합니다.p i p i M M 0 < p < 1 M p = x − LnpipiMM0<p<1M L<x<Up=x−LU−LL<x<U 베타 통합은 다음과 같이 변환됩니다.

B(α,β)=∫LU(x−L)α−1(U−x)β−1(U−L)α+β−1dx

+1이 답변에는 흥미롭고 영리한 제안이 포함되어 있습니다. 마지막 것은 특히 유연하고 강력 해 보입니다.
— whuber

아주 간단하고 구체적인 것을 취하기 위해 (i) 및 (ii) 을 ~ 16이라고 가정합니다. OP의 문제에 따라 및 추정치, 따라서 주어진 대한 추정치 ? , p는난=√pi=i17i=1αβP(X=9)n=16pi=i/17i=1αβP(X=9)n=16
— wolfies

훌륭한 답변과 제안, 특히 베타 버전! 이 답변이 과 와 함께 일반적인 형태로 작성된 것을 보는 것이 좋습니다. 초ns
— pglpm

8

확률 생성 함수 (pgf)로 ~ 를 보자 . B의 전자 R N O U L L I ( P I )XiBernoulli(pi)

pgf=E[tXi]=1−pi(1−t)

하자 의 합을 나타내고 등 독립적 랜덤 변수. 그런 다음 의 합계 에 대한 pgf는 다음 과 같습니다. n S n = 16S=∑i=1nXinSn=16

pgfS=E[tS]=E[tX1]E[tX2]…E[tX16] (... by independence)=∏i=116(1−pi(1−t))

우리는 찾습니다 .P(S=9)

19!d9pgfSdt9|t=0

다됐다. 이는 의 함수로 정확한 기호 솔루션을 생성합니다 . 대답은 화면에 인쇄하는 데 시간이 오래 걸리지 만 완전히 다루기 쉽고 내 컴퓨터에서 Mathematica 를 사용하여 평가하는 데 초 미만의 시간이 걸립니다 .pi1100

예

경우 , 그러면 : pi=i17,i=1 to 16P(S=9)=964794185433480818448661191875666868481=0.198268…

만약 , 그러면 : pi=i17,i=1 to 16P(S=9)=0.000228613…

16 회 이상의 시험판?

16 회 이상 시행하면 분포를 근사 할 필요가 없습니다. 위의 정확한 방법은 또는 예제와 마찬가지로 쉽게 작동합니다 . 예를 들어, 인 경우 아래 코드를 사용하여 전체 pmf ( 즉 , 모든 값 ) 를 평가하는 데 초 미만이 소요 됩니다.n=50n=100n=50110s=0,1,…,50

매스 매 티카 코드

값으로 구성된 벡터는 다음과 같습니다.pi

n = 16;   pvals = Table[Subscript[p, i] -> i/(n+1), {i, n}];

... 필요한 모든 것을 수행하는 Mathematica 코드 는 다음과 같습니다.

pgfS = Expand[ Product[1-(1-t)Subscript[p,i], {i, n}] /. pvals];
D[pgfS, {t, 9}]/9! /. t -> 0  // N

0.198268

전체 pmf를 도출하려면 다음을 수행하십시오.

Table[D[pgfS, {t,s}]/s! /. t -> 0 // N, {s, 0, n}]

... 또는 더 깔끔하고 빠르게 사용하십시오 (아래의 Ray Koopman의 제안 덕분에).

CoefficientList[pgfS, t] // N

인 예제의 경우 계산하는 데 1 초가 걸리고을 사용하여 전체 pmf를 도출하는 데 0.002 초가 걸리므 로 매우 효율적입니다.n=1000pgfSCoefficientList


1
더 간단 할 수도 있습니다. With[{p = Range@16/17}, N@Coefficient[Times@@(1-p+p*t),t,9]]9 개의 성공 확률을 With[{p = Range@16/17}, N@CoefficientList[Times@@(1-p+p*t),t]]제공하고 0, ..., 16 개의 성공 확률을 제공합니다.
— Ray Koopman

@RayKoopman 멋지다. Table에 대한 -values은에 적합하지 않은 일반적인 형태를 허용 할 의도이다 . 당신의 사용 은 매우 좋습니다! 위의 코드에 직접 접근 방식을 엄청나게 가속화 하는 을 추가했습니다 . 그럼에도 불구 하고 . 50 미만의 에 대해서는 큰 차이가 없지만 (두 가지 방법 모두 전체 pmf를 생성하는 데 두 번째 방법의 작은 부분 만 필요합니다) n 이 실제로 큰 경우 실제적인 이점이 될 것입니다. pRangeCoefficientListExpandCoefficientListParallelTablenCoefficientList
— wolfies

5

@wolfies는 논평하고 이에 대한 답변을 시도한 결과 다른 답변에 중요한 문제가 있음을 밝혀 냈습니다.

특정 사례 (n = 16)

계산에 밑이 2 인 이진수를 사용하는 "트릭"을 사용하여 전체 분포를 코딩하는 상당히 효율적인 방법이 있습니다. 그것은 단지 전체 분포를 얻기 위해 R 코드의 4 개 라인을 필요 여기서 . 기본적으로 이진 변수 가 취할 수 있는 벡터 에는 총 선택 이 있습니다. 이제 우리는 에서 까지 각각의 고유 한 선택에 번호를 부여한다고 가정하십시오 . 이것은 그 자체로는 특별한 것이 아니지만, 이제 우리는 밑이 2 인 산술을 사용하여 "선택 번호"를 나타낸다고 가정합니다. 이제 취하여 모든 선택을 적어두면 P r ( Z i = 1 ) = p i 2 n z = ( z 1 , … , z n ) Z i 1 2 n n = 3 2 3 = 8Y=∑i=1nZiPr(Zi=1)=pi2nz=(z1,…,zn)Zi12nn=323=8선택. 그런 다음 "일반 숫자"의 은 " 이진수"의 이됩니다 . 이제 이것을 4 자리 숫자로 쓰고 이 있다고 가정 합니다. 이제 각 숫자의 마지막 자리를 봅니다. 은 과 같이 생각할 수 있습니다 . 이진 형식으로 계산하면 합산을 효율적으로 구성 할 수 있습니다. . 운 좋게도, 우리를 위해이 이진 변환을 수행 할 수있는 R 함수가 있으며, 이진 변환을 통해 원시 이진 형식을 숫자로 변환하면 의 벡터를 얻게됩니다.1,2,3,4,5,6,7,81,10,11,100,101,110,111,10000001,0010,0011,0100,0101,0110,0111,10003001(Z1=0,Z2=0,Z3=1)⟹Y=1intToBits(x)as.numeric(intToBits(x))32각 요소는 숫자의 기본 2 버전의 숫자입니다 (왼쪽에서 오른쪽이 아니라 오른쪽에서 왼쪽으로 읽음). 다른 R 벡터화와 결합 된이 트릭을 사용하면 4 줄의 R 코드에서 확률을 계산할 수 있습니다 .y=9

exact_calc <- function(y,p){
    n       <- length(p)
    z       <- t(matrix(as.numeric(intToBits(1:2^n)),ncol=2^n))[,1:n] #don't need columns n+1,...,32 as these are always 0
    pz      <- z%*%log(p/(1-p))+sum(log(1-p))
    ydist   <- rowsum(exp(pz),rowSums(z))
    return(ydist[y+1])
}

균일 한 케이스 과 sqrt 루트 케이스 을 연결하면 전체 배포가 가능합니다 y의 경우 :pi(1)=i17pi(2)=i17

yPr(Y=y|pi=i17)Pr(Y=y|pi=i17)00.00000.055810.00000.178420.00030.265230.00260.243040.01390.153650.04910.071060.11810.024870.19830.006780.23530.001490.19830.0002100.11810.0000110.04910.0000120.01390.0000130.00260.0000140.00030.0000150.00000.0000160.00000.0000

따라서 번의 시도 에서 성공 의 특정 문제에 대해 정확한 계산이 간단합니다. 이것은 또한 메모리 문제에 부딪히기 시작하고 다른 컴퓨팅 트릭이 필요하다는 것을 넘어 최대 약 의 많은 확률에 대해서도 작동 합니다.y16n=20

내 제안 된 "베타 분포"를 적용하면 의 모수 추정값을 얻을 수 있습니다. 이는 에서 거의 균일 한 확률 추정치를 제공하여 대략적인 값을 제공합니다. . 베타 분포의 밀도가 값 의 히스토그램과 거의 하다는 점을 감안할 때 이상하게 보입니다 . 무엇이 잘못 되었나요?α=β=1.3206ypr(y=9)=0.06799≈117α=β=1.3206pi

일반적인 경우

이제 더 일반적인 경우와 간단한 베타 근사가 실패한 이유에 대해 설명하겠습니다. 기본적으로 하고 를 다른 분포와 혼합하여 는 실제로 중요한 가정을하고 있습니다. 단일 이항 확률-남아있는 유일한 문제는 사용할 값입니다 . 이것을 보는 한 가지 방법은 실제 보다 이산적인 혼합 밀도를 사용하는 것 입니다. 따라서 베타 분포 를 의 이산 밀도로 대체합니다.(y|n,p)∼Binom(n,p)pp∼f(θ)ppip∼Beta(a,b)p∼∑i=116wiδ(p−pi). 그런 다음 믹싱 근사법을 사용하여 확률이 인 값을 선택하는piwi 단어로 표현할 수 있으며 모든 베르누이 시행에이 확률이 있다고 가정합니다 . 이러한 근사값이 제대로 작동하려면 대부분의 값이 서로 비슷해야합니다. 이것은 기본적으로 @wolfies의 균일 한 값 분포를 의미하므로 은 베타 혼합 분포를 사용할 때 상당히 나쁜 근사치를 초래합니다. 또한 대해 근사가 더 나은 이유를 설명합니다 .pipi=i17pi=i17

그런 다음 혼합은 관측 된 를 사용하여 단일 의 모든 가능한 선택에 대한 평균을 . "믹싱"은 가중 평균과 같기 때문에 단일 최고의 사용하는 것보다 더 나은 방법은 없습니다 . 따라서 가 충분히 퍼지면 모든 대한 근사값을 제공 할 수있는 단일 가 없습니다 .pi pppippi

다른 대답에서 한 가지 말은 제한된 범위의 베타 배포판을 혼합하여 사용하는 것이 더 낫다는 것이지만 여전히 단일 이상 혼합되어 있기 때문에 여전히 도움이되지 않습니다 . 더 의미있는 것은 구간 을 조각으로 나누고 각 조각 내에 이항을 갖는 것입니다. 예를 들어, 분할로 을 선택하고 각 범위의 확률 내에 9 개의 이항을 맞출 수 있습니다. 기본적으로 각 분할 내에서 확률은 의 평균과 같은 이항 법을 사용하는 것과 같은 간단한 근사치에 적합합니다.p(0,1)(0,0.1,0.2,…,0.9,1)0.1pi그 범위에서. 구간을 충분히 작게하면 근사값이 임의로 좋아집니다. 그러나이 모든 것은 Bernoulli 시험 대신 다른 확률 로 독립된 이항 실험 을 처리해야한다는 점에 유의하십시오 . 그러나이 답변의 이전 부분에서는 이항 수가 10-15 정도 정도로 충분히 작은 경우 정확한 계산을 수행 할 수 있음을 보여주었습니다.

베르누이 기반 답변을 이항 기반 답변으로 확장하기 위해 변수가 무엇인지 "재 해석"합니다 . 우리는 단순히 이라고 말하며, 이것은 원래의 베르누이 기반 하지만 이제는 성공에서 오는 이항을 나타냅니다. 따라서 사례 이제 모든 "성공"이 세 번째 이항에서 나 왔으며 처음 두 개에서는 없음을 의미합니다.ZiZi=I(Xi>0)Zi(Z1=0,Z2=0,Z3=1)

계산 수는 와 같고 여기서 는 이항 수이고 는 그룹 크기이므로 여기서 입니다. 그러나 이것은 bernoulli 임의 변수를 사용하여 처리 할 보다 낫습니다 . 예를 들어, 확률을 각 그룹에서 확률 로 그룹 으로 분할한다고 가정 합니다. 이것은 과 비교하여 계산을 제공합니다.kggkY≈∑j=1gXjXj∼Bin(k,pj)2gkn=16g=4k=444=256216=65536

그룹 을 선택 하고 한계 가 약 셀인 약 임을 이 방법을 효과적으로 사용하여 최대 을 으로 늘릴 수 있습니다 .g=10n=20107nn=50

보다 근사한 근사값을 구하면 를 낮추면 대한 "가능한"크기가 증가합니다 . 가 유효 가질 수 있음을 의미 약 . 이 외에도 정규 근사는 매우 정확해야합니다.gng=5n125


@ momo-내 대답은 문제에 접근하는 두 가지 방법이므로 괜찮습니다. 그냥 다른 답변입니다 -이 대답은 내 첫 번째의 편집 된 버전이 아닙니다
— probabilityislogic

1
그 솔루션 R이 매우 효율적이고 훨씬 더 큰 값을 처리 하는 방법에 대해서는 stats.stackexchange.com/a/41263을 참조하십시오 . 예를 들어, 대해이 문제를 해결 하여 3 초 안에 전체 분포를 제공합니다. (A 비교 티카 9 용액 - @wolfies '대답 참조 - 또한 잘 수행하는 작은 하지만, 그러한 큰 값으로 실행 완료 할 수 ).n = 10 4 n nnn=104nn
— whuber

5

(일반적으로 다루기 힘든) pmf는 R 코드 :

Pr(S=k)=∑A⊂{1,…,n}|A|=k(∏i∈Api)(∏j∈{1,…,n}∖A(1−pj)).
p <- seq(1, 16) / 17
cat(p, "\n")
n <- length(p)
k <- 9
S <- seq(1, n)
A <- combn(S, k)
pr <- 0
for (i in 1:choose(n, k)) {
    pr <- pr + exp(sum(log(p[A[,i]])) + sum(log(1 - p[setdiff(S, A[,i])])))
}
cat("Pr(S = ", k, ") = ", pr, "\n", sep = "")

를 들어 'wolfies 응답에 사용되는 S, 우리는이 :pi

Pr(S = 9) = 0.1982677

때 성장하는 사용 회선을 .n


1
R 코드로 그렇게하는 것이 정말 도움이되었습니다. 우리 중 일부는 좀 더 구체적으로 생각하며 생성 기능의 운영 버전을 갖는 데 크게 도움이됩니다.
— DWin

I 효율적인 제공 @DWin R(의 다른 값과 같은 문제의 해결책에 코드 AT) stats.stackexchange.com/a/41263 . 이 문제는이 코드의 총 계산 시간 0.00012 초 (1000 회 해결로 추정 됨)와이 코드의 0.53 초 (한 번 해결하여 추정 됨) 와 Wolfies의 Mathematica 코드 (1000 회 해결하여 추정 됨)를 사용하여 0.00058 초로 해결됩니다. piR
— whuber

따라서 는 Poisson-Binomial Distribution을 따릅니다. P(S=k)
— fccoelho

+1 이 질문에 대한 답변을 시도 할 때 매우 유용한 게시물입니다 . 로그를 사용하는 것이 실제 필요보다 멋진 수학적 공식인지 궁금합니다. 나는 너무 시간을 실행 ... 염려하고 있지 않다
— 안토니 Parellada
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.