다른 확률에 대한 확률 분포


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(1p1)++pn(1pn)=np(1p)
whuber


답변:


22

이것은 16 (아마도 독립적 인) 이항 실험의 합입니다. 독립성을 가정 하면 확률 이 배가 됩니다. 확률이 및 인 성공을 가진 두 번의 시도 후 두 시도 에서 성공할 확률 은 이고 성공하지 않을 확률은 이고 한 번의 성공 확률은 입니다. 마지막 표현은 정확히 하나의 성공을 거두는 두 가지 방법이 상호 배타적이라는 사실에 그 유효성이 있습니다. 즉, 확률이 추가됨을 의미 합니다 .p1p2p1p2(1p1)(1p2)p1(1p2)+(1p1)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,p151p3,1p7,,1p13,1p16이 특정 순서의 결과. 이 숫자와 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 σ μpi1pinμ=p1+p2++pnσ2=p1(1p1)+p2(1p2)++pn(1pn)μσμ 의 몇 배수보다는 더 이상에 의해 . 으로 큰 성장이 근사 적보다 정확한 도착과의 더 큰 배수 작동 떨어져 .σ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 ( 페이지 | θ ) θpipiDist(θ)g(p|θ)θ

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

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

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

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

ψ(α)ψ(α+β)=1ni=1nlog[pi]
ψ(β)ψ(α+β)=1ni=1nlog[1pi]

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

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

(169)1B(α,β)01p9+α1(1p)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=xLULL<x<U 베타 통합은 다음과 같이 변환됩니다.

B(α,β)=LU(xL)α1(Ux)β1(UL)α+β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]=1pi(1t)

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

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

우리는 찾습니다 .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.06799117α=β=1.3206pi

일반적인 경우

이제 더 일반적인 경우와 간단한 베타 근사가 실패한 이유에 대해 설명하겠습니다. 기본적으로 하고 를 다른 분포와 혼합하여 는 실제로 중요한 가정을하고 있습니다. 단일 이항 확률-남아있는 유일한 문제는 사용할 값입니다 . 이것을 보는 한 가지 방법은 실제 보다 이산적인 혼합 밀도를 사용하는 것 입니다. 따라서 베타 분포 를 의 이산 밀도로 대체합니다.(y|n,p)Binom(n,p)ppf(θ)ppipBeta(a,b)pi=116wiδ(ppi). 그런 다음 믹싱 근사법을 사용하여 확률이 값을 선택하는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 임의 변수를 사용하여 처리 할 보다 낫습니다 . 예를 들어, 확률을 각 그룹에서 확률 로 그룹 으로 분할한다고 가정 합니다. 이것은 과 비교하여 계산을 제공합니다.kggkYj=1gXjXjBin(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(iApi)(j{1,,n}A(1pj)).
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.