확률이 0.6 인 각 시행에서 16 회의 시행에서 9 개의 성공 확률을 얻으려면 이항 분포를 사용할 수 있습니다. 16 번의 시도마다 성공 확률이 다른 경우 무엇을 사용할 수 있습니까?
확률이 0.6 인 각 시행에서 16 회의 시행에서 9 개의 성공 확률을 얻으려면 이항 분포를 사용할 수 있습니다. 16 번의 시도마다 성공 확률이 다른 경우 무엇을 사용할 수 있습니까?
답변:
이것은 16 (아마도 독립적 인) 이항 실험의 합입니다. 독립성을 가정 하면 확률 이 배가 됩니다. 확률이 및 인 성공을 가진 두 번의 시도 후 두 시도 에서 성공할 확률 은 이고 성공하지 않을 확률은 이고 한 번의 성공 확률은 입니다. 마지막 표현은 정확히 하나의 성공을 거두는 두 가지 방법이 상호 배타적이라는 사실에 그 유효성이 있습니다. 즉, 확률이 추가됨을 의미 합니다 .
독립 확률이 곱하고 상호 배타적 인 규칙이 추가하는이 두 가지 규칙을 사용하면 확률 16 가지 시도에 대한 답을 구할 수 있습니다 . 그렇게하려면 주어진 각 성공 횟수 (예 : 9)를 얻는 모든 방법을 고려해야합니다. 9 개의 성공을 달성 하는 방법이 있습니다. 예를 들어, 그 중 하나는 시행 1, 2, 4, 5, 6, 11, 12, 14 및 15가 성공하고 다른 하나는 실패 일 때 발생합니다. 성공에는 확률 및 있고 실패에는 확률 . 이 16 개의 숫자를 곱하면 기회가됩니다p1,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 σ μ 의 몇 배수보다는 더 이상에 의해 . 으로 큰 성장이 근사 적보다 정확한 도착과의 더 큰 배수 작동 떨어져 .
@whuber의 정규 근사에 대한 한 가지 대안은 "혼합"확률 또는 계층 적 모델을 사용하는 것입니다. 이것은 가 어떤 식 으로든 유사한 경우에 적용 되며, 일부 매개 변수 인덱싱 된 밀도 함수 를 사용하여 확률 분포 로이를 모델링 할 수 있습니다 . 적분 방정식을 얻습니다.P 난 ~ D I 의 t ( θ ) g ( 페이지 | θ ) θ
이항 확률은 ) 설정에서 비롯되며 정규 근사는 (생각) 설정에서 비롯됩니다. ( @ whuber의 답변에 정의 된대로 및 ) 및 " 이 PDF의 꼬리 "는 피크 부근에서 급격히 떨어집니다.g ( p | θ ) = g ( p | μ , σ ) = 1μσ
베타 분포를 사용하면 간단한 분석 형식으로 이어질 수 있으며 베타가 상당히 유연하기 때문에 정상적인 근사치에서 발생하는 "작은 p"문제를 겪을 필요가 없습니다. 사용하여 A 로 분배 (이는 "mimimum KL 발산"추정치 임)은 다음 식에 의해 솔루션 세트 :α , β
ψ(β)−ψ(α+β)=1
여기서 는 디 감마 함수이며 고조파 계열과 밀접한 관련이 있습니다.
우리는 "베타 이항식"화합물 분포를 얻는다 :
이 분포는 @whuber가 지적하지만 베타 분포가 하나의 피크만을 갖기 때문에 작은 및 비스듬한 대해서는 합리적인 대답을 제공해야 하지만 다중 모달 에는 적합하지 않은 경우 정규 분포로 수렴합니다 . 그러나 모드에 베타 배포를 사용하면이 문제를 쉽게 해결할 수 있습니다 . 적분을 에서 조각 으로 각 조각이 고유 모드 (및 매개 변수를 추정하기에 충분한 데이터)를 가지며 각 조각 내에서 베타 분포를 맞출 수 있습니다. 그런 다음 대해 변수 을 변경하면 결과를 더합니다.p i p i M M 0 < p < 1 M p = x − L L<x<U 베타 통합은 다음과 같이 변환됩니다.
확률 생성 함수 (pgf)로 ~ 를 보자 . B의 전자 R N O U L L I ( P I )
하자 의 합을 나타내고 등 독립적 랜덤 변수. 그런 다음 의 합계 에 대한 pgf는 다음 과 같습니다. n S n = 16
우리는 찾습니다 .
다됐다. 이는 의 함수로 정확한 기호 솔루션을 생성합니다 . 대답은 화면에 인쇄하는 데 시간이 오래 걸리지 만 완전히 다루기 쉽고 내 컴퓨터에서 Mathematica 를 사용하여 평가하는 데 초 미만의 시간이 걸립니다 .
예
경우 , 그러면 :
만약 , 그러면 :
16 회 이상의 시험판?
16 회 이상 시행하면 분포를 근사 할 필요가 없습니다. 위의 정확한 방법은 또는 예제와 마찬가지로 쉽게 작동합니다 . 예를 들어, 인 경우 아래 코드를 사용하여 전체 pmf ( 즉 , 모든 값 ) 를 평가하는 데 초 미만이 소요 됩니다.
매스 매 티카 코드
값으로 구성된 벡터는 다음과 같습니다.
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 초가 걸리므 로 매우 효율적입니다.pgfS
CoefficientList
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 개의 성공 확률을 제공합니다.
Table
에 대한 -values은에 적합하지 않은 일반적인 형태를 허용 할 의도이다 . 당신의 사용 은 매우 좋습니다! 위의 코드에 직접 접근 방식을 엄청나게 가속화 하는 을 추가했습니다 . 그럼에도 불구 하고 . 50 미만의 에 대해서는 큰 차이가 없지만 (두 가지 방법 모두 전체 pmf를 생성하는 데 두 번째 방법의 작은 부분 만 필요합니다) n 이 실제로 큰 경우 실제적인 이점이 될 것입니다. Range
CoefficientList
Expand
CoefficientList
ParallelTable
CoefficientList
@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 = 8선택. 그런 다음 "일반 숫자"의 은 " 이진수"의 이됩니다 . 이제 이것을 4 자리 숫자로 쓰고 이 있다고 가정 합니다. 이제 각 숫자의 마지막 자리를 봅니다. 은 과 같이 생각할 수 있습니다 . 이진 형식으로 계산하면 합산을 효율적으로 구성 할 수 있습니다. . 운 좋게도, 우리를 위해이 이진 변환을 수행 할 수있는 R 함수가 있으며, 이진 변환을 통해 원시 이진 형식을 숫자로 변환하면 의 벡터를 얻게됩니다.intToBits(x)
as.numeric(intToBits(x))
각 요소는 숫자의 기본 2 버전의 숫자입니다 (왼쪽에서 오른쪽이 아니라 오른쪽에서 왼쪽으로 읽음). 다른 R 벡터화와 결합 된이 트릭을 사용하면 4 줄의 R 코드에서 확률을 계산할 수 있습니다 .
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의 경우 :
따라서 번의 시도 에서 성공 의 특정 문제에 대해 정확한 계산이 간단합니다. 이것은 또한 메모리 문제에 부딪히기 시작하고 다른 컴퓨팅 트릭이 필요하다는 것을 넘어 최대 약 의 많은 확률에 대해서도 작동 합니다.
내 제안 된 "베타 분포"를 적용하면 의 모수 추정값을 얻을 수 있습니다. 이는 에서 거의 균일 한 확률 추정치를 제공하여 대략적인 값을 제공합니다. . 베타 분포의 밀도가 값 의 히스토그램과 거의 하다는 점을 감안할 때 이상하게 보입니다 . 무엇이 잘못 되었나요?
일반적인 경우
이제 더 일반적인 경우와 간단한 베타 근사가 실패한 이유에 대해 설명하겠습니다. 기본적으로 하고 를 다른 분포와 혼합하여 는 실제로 중요한 가정을하고 있습니다. 단일 이항 확률-남아있는 유일한 문제는 사용할 값입니다 . 이것을 보는 한 가지 방법은 실제 보다 이산적인 혼합 밀도를 사용하는 것 입니다. 따라서 베타 분포 를 의 이산 밀도로 대체합니다.. 그런 다음 믹싱 근사법을 사용하여 확률이 인 값을 선택하는 단어로 표현할 수 있으며 모든 베르누이 시행에이 확률이 있다고 가정합니다 . 이러한 근사값이 제대로 작동하려면 대부분의 값이 서로 비슷해야합니다. 이것은 기본적으로 @wolfies의 균일 한 값 분포를 의미하므로 은 베타 혼합 분포를 사용할 때 상당히 나쁜 근사치를 초래합니다. 또한 대해 근사가 더 나은 이유를 설명합니다 .
그런 다음 혼합은 관측 된 를 사용하여 단일 의 모든 가능한 선택에 대한 평균을 . "믹싱"은 가중 평균과 같기 때문에 단일 최고의 사용하는 것보다 더 나은 방법은 없습니다 . 따라서 가 충분히 퍼지면 모든 대한 근사값을 제공 할 수있는 단일 가 없습니다 .
다른 대답에서 한 가지 말은 제한된 범위의 베타 배포판을 혼합하여 사용하는 것이 더 낫다는 것이지만 여전히 단일 이상 혼합되어 있기 때문에 여전히 도움이되지 않습니다 . 더 의미있는 것은 구간 을 조각으로 나누고 각 조각 내에 이항을 갖는 것입니다. 예를 들어, 분할로 을 선택하고 각 범위의 확률 내에 9 개의 이항을 맞출 수 있습니다. 기본적으로 각 분할 내에서 확률은 의 평균과 같은 이항 법을 사용하는 것과 같은 간단한 근사치에 적합합니다.그 범위에서. 구간을 충분히 작게하면 근사값이 임의로 좋아집니다. 그러나이 모든 것은 Bernoulli 시험 대신 다른 확률 로 독립된 이항 실험 을 처리해야한다는 점에 유의하십시오 . 그러나이 답변의 이전 부분에서는 이항 수가 10-15 정도 정도로 충분히 작은 경우 정확한 계산을 수행 할 수 있음을 보여주었습니다.
베르누이 기반 답변을 이항 기반 답변으로 확장하기 위해 변수가 무엇인지 "재 해석"합니다 . 우리는 단순히 이라고 말하며, 이것은 원래의 베르누이 기반 하지만 이제는 성공에서 오는 이항을 나타냅니다. 따라서 사례 이제 모든 "성공"이 세 번째 이항에서 나 왔으며 처음 두 개에서는 없음을 의미합니다.
계산 수는 와 같고 여기서 는 이항 수이고 는 그룹 크기이므로 여기서 입니다. 그러나 이것은 bernoulli 임의 변수를 사용하여 처리 할 보다 낫습니다 . 예를 들어, 확률을 각 그룹에서 확률 로 그룹 으로 분할한다고 가정 합니다. 이것은 과 비교하여 계산을 제공합니다.
그룹 을 선택 하고 한계 가 약 셀인 약 임을 이 방법을 효과적으로 사용하여 최대 을 으로 늘릴 수 있습니다 .
보다 근사한 근사값을 구하면 를 낮추면 대한 "가능한"크기가 증가합니다 . 가 유효 가질 수 있음을 의미 약 . 이 외에도 정규 근사는 매우 정확해야합니다.
R
이 매우 효율적이고 훨씬 더 큰 값을 처리 하는 방법에 대해서는 stats.stackexchange.com/a/41263을 참조하십시오 . 예를 들어, 대해이 문제를 해결 하여 3 초 안에 전체 분포를 제공합니다. (A 비교 티카 9 용액 - @wolfies '대답 참조 - 또한 잘 수행하는 작은 하지만, 그러한 큰 값으로 실행 완료 할 수 ).n = 10 4 n n
(일반적으로 다루기 힘든) pmf는 R 코드 :
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, 우리는이 :
Pr(S = 9) = 0.1982677
때 성장하는 사용 회선을 .
R
(의 다른 값과 같은 문제의 해결책에 코드 AT) stats.stackexchange.com/a/41263 . 이 문제는이 코드의 총 계산 시간 0.00012 초 (1000 회 해결로 추정 됨)와이 코드의 0.53 초 (한 번 해결하여 추정 됨) 와 Wolfies의 Mathematica 코드 (1000 회 해결하여 추정 됨)를 사용하여 0.00058 초로 해결됩니다. R