Bernoulli 랜덤 변수의 합을 효율적으로 모델링하는 방법은 무엇입니까?


38

나는 ~ 15-40k 독립적 인 Bernoulli 랜덤 변수 ( ) 의 합인 랜덤 변수 ( )를 모델링하고 있는데 , 각각 성공 확률이 다릅니다 ( p_i ). 공식적으로 Y = \ sum X_i 여기서 \ Pr (X_i = 1) = p_i\ Pr (X_i = 0) = 1-p_i 입니다.YXipiY=XiPr(Xi=1)=piPr(Xi=0)=1pi

Pr(Y<=k) ( k 가 제공되는) 와 같은 쿼리에 빠르게 응답하고 싶습니다 .

현재 무작위 시뮬레이션을 사용하여 이러한 쿼리에 응답합니다. p_i 에 따라 각 X_i를 무작위로 그린 다음 모든 X_i 값을 합산 하여 Y ' 를 얻습니다 . 이 과정을 수천 번 반복하고 \ Pr (Y '\ leq k) 시간의 일부를 반환합니다 .XipiXiYPr(Yk)

분명히 이것은 완전히 정확하지는 않습니다 (시뮬레이션 수가 증가함에 따라 정확도는 크게 증가하지만). 또한 사용 시뮬레이션을 피하기 위해 분포에 대한 충분한 데이터가있는 것 같습니다. 정확한 확률 \ Pr (Y \ leq k) 를 얻는 합리적인 방법을 생각할 수 있습니까 Pr(Yk)?

추신

Perl & R을 사용합니다.

편집하다

응답 후 나는 약간의 설명이 필요할 것이라고 생각했다. 내 문제의 설정을 간단히 설명하겠습니다. 원주 c와 그 n범위가 매핑 된 원형 게놈 이 제공됩니다. 예를 들어, c=3*10^9ranges={[100,200],[50,1000],[3*10^9-1,1000],...}. 모든 범위가 닫혀 있습니다 (두 끝 모두 포함). 또한 정수 (전체 단위) 만 처리합니다.

주어진 n매핑 된 범위 로 뒤덮인 원의 영역을 찾고 있습니다. 따라서 x원에서 주어진 길이의 범위 가 커버 되는지 여부를 테스트하기 위해 n범위가 무작위로 매핑 된다는 가설을 테스트합니다 . 길이의 매핑 된 범위가 q>x주어진 길이의 범위를 완전히 포함 할 확률 x(q-x)/c입니다. 이 확률 c은 크거나 작을 때 상당히 작아집니다 q. 내가 관심있어하는 것은 (에서 범위의 수 n하는 표지) x. 이것이 Y형성되는 방법 입니다.

귀무 가설 대 일측 대안 (언더 커버리지)을 테스트합니다. 또한 다중 가설 (다른 x길이)을 테스트 하고 있으며이를 수정해야합니다.


모델링 연습 전체에서 p_i가 고정되어 있거나 계산에서 다음 계산으로 변경 될 수 있습니까?
whuber

p_i의 고정된다.
David B

현재 반응에 비추어 (a) p의 합과 (b) 제곱의 합에 대한 추정치를 공유 할 수 있습니까? 이 값은 옵션을 결정합니다.
whuber

@ whuber : 사례마다 크게 다릅니다. 불행히도 내가 만들고있는 일회성 모듈이 아닙니다.
David B

@David 그러나 일반적인 범위와 같은 지침을 줄 수는 없습니까? 예를 들어, p의 합이 1에서 100 사이 인 경우 유용한 정보이며 효율적인 솔루션을 제안하지만 최대 10,000을 얻을 수 있으면 일부 접근법을 제외 할 수 있습니다.
whuber

답변:


24

Poisson 과 종종 유사하다면 , 파라미터 로 Poisson에 의해 근사치를 시도 했습니까?λ=pi

편집 : 나는 이것을 정당화하기위한 이론적 결과와 분포의 이름을 찾았습니다 . 포아송 이항 분포 라고합니다 . Le Cam의 부등식 은 매개 변수를 사용하여 푸 아송의 분포에 의해 분포가 얼마나 근접 하는지를 알려줍니다 . 이 근사치의 품질은 의 제곱의 합에 의해 Steele (1994)의 역설 로 지배된다는 것을 알려줍니다 . 그래서 만약 모든 당신의 의는 지금 그들이 나타나는, 비교적 작은, 그것은 꽤 좋은 근사해야합니다.Yλ=pipipi

편집 2 : '합리적으로 작다'는 얼마나 작습니까? 글쎄, 그것은 근사치가 얼마나 좋은지에 달려 있습니다! Le Cam 정리에 대한 Wikipedia 기사는 위에서 언급 한 결과의 정확한 형태를 제공합니다. 의 확률 질량 함수 (pmf) 와 위의 포아송 분포의 pmf 사이의 절대 차이의 합은 합계의 두 배를 넘지 않습니다 의 제곱의 Le Cam (1960)의 또 다른 결과는 사용하기가 더 쉬울 수 있습니다.이 합계는 최대 18 배를 넘지 않습니다 . 그러한 결과가 상당히 많이 있습니다 ... 한 번의 검토를 위해 Serfling (1978) 을 참조하십시오 .Ypipi


1
+1 나쁘지 않은 아이디어. Poissons의 소량의 혼합물은 질문이 어떻게 명확 해 지느냐에 따라 좋은 일을 할 것입니다.
whuber

1
감마-포아송 혼합물로 발생하는 음의 이항 분포를 제안하는 것에 대해 생각했지만 평균보다 큰 분산을 갖는 반면이 문제는 평균보다 작은 분산을가집니다. 그것을 바탕으로, Poissons의 혼합물이 효과가 있는지 확실하지 않습니다. 확실히 그러한 혼합물은 평균보다 큰 분산을 가질 것입니다 ??
onestop

@onestop 분산이 평균보다 작다고 어디서 말했습니까? 나는 그 진술을 놓쳤다.
whuber

죄송합니다 whuber, 그것은 조금 암호 였지만이 의견으로는 많은 정교함을 허용하지 않습니다. mpiktas의 는 분산 인 평균 보다 작습니다 . 가 평균적으로 매우 작은 경우에만 약간 적 으므로 표준 포아송은 충분히 좋습니다. 어쩌면 나는 위의 대답을 확장해야하지만 대화 스레드가 혼란스러워집니다. Bn=pi(1pi)pipi
onestop

은 무슨 뜻 인가요? 값 은 어떻게 얻 습니까? XiXi
David B

11

이 문제에 대한 해결책을 찾는 동안 귀하의 질문을 발견했습니다. 나는 대답에 몹시 만족하지 않았지만 정확한 분포를 제공하고 다루기 쉬운 꽤 간단한 해결책이 있다고 생각합니다.

두 개의 이산 랜덤 변수의 합의 분포는 밀도의 컨벌루션입니다. 따라서 와 를 알고 있는 가 있다면 다음을 계산할 수 있습니다.Z=X+YP(X)P(Y)

P(Z=z)=k=P(X=k)P(Y=zk)

(베르누이 확률 변수에 대한 물론 당신은 갈 필요가 없습니다 아주 무한대.)

이를 사용하여 RV 합계의 정확한 분포를 찾을 수 있습니다. 먼저 RV 두 개를 PDF로 변환하여 합칩니다 (예 : [0.3, 0.7] * [0.6, 0.4] = [0.18, 0.54, 0.28]). 그런 다음 새로운 배포를 다음 Bernoulli PDF (예 : [0.18, 0.54, 0.28] * [0.5, 0.5] = [0.09, 0.36, 0.41, 0.14])와 통합하십시오. 모든 RV가 추가 될 때까지이 과정을 반복하십시오. 그리고 결과 벡터는 모든 변수의 합계의 정확한 PDF입니다.

이것이 올바른 결과를 낳는다는 것을 시뮬레이션으로 확인했습니다. 그것은 점근 적 가정에 의존하지 않으며, 베르누이 (Beroulli) 프로브가 작을 필요는 없습니다.

반복되는 컨볼 루션 보다이 작업을보다 효율적으로 수행 할 수있는 방법이있을 수도 있지만 그것에 대해 깊이 생각하지 않았습니다. 나는 이것이 누군가에게 도움이되기를 바랍니다!


2
40K 변수로 이것을 시도 했습니까? (계산에 몇 시간 또는 며칠이 걸리는지 궁금합니다 ...)
whuber

5
(+1)이 아이디어를 작동시키는 방법을 찾았습니다. 두 가지 기술이 필요합니다. 먼저 컨볼 루션에 FFT를 사용하십시오. 둘째, 순차적으로하지 말고 나누고 정복하십시오 : 분리 된 쌍으로 수행 한 다음 결과를 분리 된 쌍으로 수행하십시오. 알고리즘은 이제 아닌 로 조정됩니다 대한 확률. 예를 들어 Mathematica 는 단 0.4 초만에 40,000 개의 확률로 전체 분포를 계산할 수 있습니다 . (1,000,000은 10.5 초로 계산됩니다.) 후속 의견에 코드를 제공합니다. O(nlogn)O(n2)n
whuber

7
여기의 매스 매 티카 코드 : multinomial[p_] := Module[{lc, condense}, lc = Function[{s}, ListConvolve[s[[1]], s[[2]], {1, -1}, 0]]; condense = Function[{s}, Map[lc, Partition[s, 2, 2, {1, 1}, {{1}}]]]; Flatten[NestWhile[condense, Transpose[{1 - p, p}], Length[#] > 1 &]]] , 적용과 같은 작업을 수행하려면 p = RandomReal[{0, 1}, 40000]; pp = multinomial[p];. 이것은 확률 p을 만든 다음 정확한 분포를 계산합니다 pp. NB 평균이 p극한이 아닌 경우 분포는 정규에 매우 가깝습니다. 이는 훨씬 더 빠른 알고리즘으로 이어집니다.
whuber

9

@onestop은 좋은 참조를 제공합니다. 푸 아송 이항 분포에 관한 Wikipedia 기사는 정확한 확률 분포를 계산하기위한 재귀 공식을 제공합니다. 노력 이 필요합니다 . 불행히도, 그것은 교호 합계이므로 수치 적으로 불안정합니다 : 부동 소수점 산술 로이 계산을 수행하는 것은 바람직하지 않습니다. 다행히도 가 작 으면 소수의 확률 만 계산하면되므로 노력은 실제로 비례합니다 . 합리적인 산술로 계산을 수행하는 데 필요한 정밀도 ( 즉, 수치 불안정성이 문제가되지 않도록 정확하게 )는 전체 타이밍이 여전히 대략 될 정도로 느리게 증가합니다.O(n2)piO(nlog(ipi))O(n2). 가능합니다.

테스트로서, I는 확률의 배열을 만들어 의 다양한 값에 대한 최대 이 문제의 크기이다. 작은 값 ( )의 경우 정확한 확률 계산 타이밍은 초 단위이며 2 차적으로 스케일링되므로 대한 계산 은 평균 (0, 1, ..., 22 성공 확률). 예상 시간에 맞춰 80 분이 소요되었습니다 (Mathematica 8 사용). (결과적인 확률은 분자와 분모가 각각 약 75,000 자릿수를 갖는 분수입니다!) 이것은 계산이 수행 될 수 있음을 보여줍니다.pi=1/(i+1)nn=216nn=212n=216

대안은 긴 시뮬레이션을 실행하는 것입니다 (백만 번의 시도가 필요함). 가 변경되지 않기 때문에 한 번만 수행하면 됩니다.pi


9

(이 접근 방식은 게시 한 솔루션을 포함하여 게시 된 다른 솔루션과 독립적이므로 별도의 응답으로 제공하고 있습니다).

p의 합이 작은 경우 정확한 분포를 초 단위 (또는 그 이하)로 계산할 수 있습니다.

우리는 이미 분포가 대략 가우스 (일부 시나리오에서는)이거나 포아송 (다른 시나리오에서는) 일 수 있다는 제안을 보았습니다. 어느 쪽이든, 우리는 평균 가 의 합이고 분산 가 의 합 임을 알고 있습니다. 따라서 분포는 평균의 몇 가지 표준 편차, 즉 가 4에서 6 사이 인 SD 또는 그 주변에 집중됩니다 . 따라서 우리는 합 확률을 계산할 필요는 (정수)과 동일 위한 내지 . 대부분이μpiσ2pi(1pi)zzXkk=μzσk=μ+zσpi작고, 는 와 거의 같지만 (약간 작음) 보수적으로 우리는 간격으로 계산을 수행 할 수 있습니다 . 예를 들어, 의 합 이 와 같고 꼬리를 잘 덮기 위해 을 선택하면 에서 를 포함하는 계산이 필요합니다. = , 이는 단지 28 값입니다.σ2μk[μzμ,μ+zμ]pi9z=6k[969,9+69][0,27]

분포는 재귀 적으로 계산됩니다 . 를이 Bernoulli 변수 의 첫 번째 의 합의 분포라고 합시다 . 임의의 경우 에서 으로 첫 번째의 총합 변수와 동일 할 수 두 개의 상호 배타적 인 방법 : 제의 합계 변수가 동일 상기 인 그렇지 않으면 첫 번째 변수 의 합 은 과 같고 는 입니다. 따라서fiij0i+1i+1jiji+1st0ij1i+1st1

fi+1(j)=fi(j)(1pi+1)+fi(j1)pi+1.

에서 까지의 간격으로 적분대해서만이 계산을 수행하면j max(0,μzμ) μ+zμ.

대부분의 가 때 (그러나 는 여전히 과 합리적인 정밀도로 구별 가능합니다 ),이 접근법은 이전에 게시 한 솔루션에 사용 된 부동 소수점 반올림 오류가 크게 누적되어 있지 않습니다. 따라서 확장 정밀도 계산이 필요하지 않습니다. 예를 들어, 확률 의 배열에 대한 배정 밀도 계산 ( , 과 사이의 합의 확률에 대한 계산 필요pi1pi1216pi=1/(i+1)μ=10.6676031)는 Mathematica 8에서 0.1 초, Excel 2002에서 1-2 초가 걸렸습니다 (둘 다 같은 답을 얻었습니다). 4 배 정밀도 (Mathematica에서)로 반복하는 데 약 2 초가 걸렸지 만 이상 응답을 변경하지 않았습니다 . SD에서 상단 꼬리로 의 분포를 종료하면 총 확률의 만 손실되었습니다 .3×1015z=63.6×108

0과 0.001 ( ) 사이의 40,000 배정 밀도 무작위 값의 배열에 대한 또 다른 계산은 Mathematica에서 0.08 초가 걸렸습니다.μ=19.9093

이 알고리즘은 병렬화 가능합니다. 다만 세트 침입 대략 동일한 크기의 프로세서 당 하나의 분리 된 서브 세트들로. 각 부분 집합에 대한 분포를 계산 한 다음 전체 답을 얻기 위해 결과를 축소합니다 (원하는 경우 FFT 사용). 따라서 가 커지거나 꼬리를 멀리보아야 할 때 ( 크게) 이 큰 경우에도 사용하는 것이 실용적 입니다.piμzn

프로세서 가있는 변수 배열의 타이밍은 됩니다. Mathematica의 속도는 초당 백만 정도입니다. 예를 들어, 프로세서 인 경우, 변동, 총 확률 이고 상단 꼬리 에 대한 표준 편차로 나갑니다. 만 : 몇 초의 컴퓨팅 시간을 계산합니다. 이것을 컴파일하면 성능을 2 배 빠르게 높일 수 있습니다.nmO(n(μ+zμ)/m)m=1n=20000μ=100z=6n(μ+zμ)/m=3.2

또한,이 테스트 사례에서 분포 그래프는 약간의 양의 왜도를 분명히 나타 냈습니다. 정상이 아닙니다.

기록을 위해 다음은 Mathematica 솔루션입니다.

pb[p_, z_] := Module[
  {\[Mu] = Total[p]},
  Fold[#1 - #2 Differences[Prepend[#1, 0]] &, 
   Prepend[ConstantArray[0, Ceiling[\[Mu] + Sqrt[\[Mu]] z]], 1], p]
  ]

( NB 이 사이트에서 적용한 컬러 코딩은 Mathematica 코드에는 의미가 없습니다. 특히 회색 부분은 주석 이 아닙니다 : 모든 작업이 완료된 곳입니다!)

사용 예는 다음과 같습니다.

pb[RandomReal[{0, 0.001}, 40000], 8]

편집하다

R솔루션 10 배 느린보다 티카 아마도 내가 최적를 구분하지 않은 - -이 테스트 케이스하지만 여전히 (일초에 대해) 신속하게 실행 :

pb <- function(p, z) {
  mu <- sum(p)
  x <- c(1, rep(0, ceiling(mu + sqrt(mu) * z)))
  f <- function(v) {x <<- x - v * diff(c(0, x));}
  sapply(p, f); x  
}
y <- pb(runif(40000, 0, 0.001), 8)
plot(y)

PDF 도표


8

다른 사용하면 가장 좋은 방법은 정상적인 근사치라고 생각합니다. 하자 . 그때piBn=i=1npi(1pi)

Bn1/2(i=1nXii=1npi)N(0,1),
각 에 대해 을nε>0

Bn1i=1nE((Xipi)21{|Xipi|>εBn1/2})0,
은 , Bernoulli 변수의 경우 경우 보유합니다 . 이것은 Lindeberg 조건으로 표준 법선에 수렴하기에 충분하고 필요합니다.B nnBn

업데이트 : 근사 오류는 다음과 같은 부등식으로 계산할 수 있습니다.

L n = B 3 / 2 n n i = 1 E | X i p i | 3 FnXi

supx|Fn(x)Φ(x)|ALn,
여기서 이고 은 의 스케일링 된 중앙 합의 cdf입니다 .
Ln=Bn3/2i=1nE|Xipi|3
FnXi

whuber가 지적했듯이 가 잘못 작동하면 수렴이 느려질 수 있습니다 . 용 우리가 및 . 그런 다음 취 하면 표준 정규 cdf와의 최대 편차가 무려 0.3이됩니다.pipi=11+iBnlnnLn(lnn)1/2n=216


3
i가 증가함에 따라 p_i가 0에 접근 할 때 이것은 사실이 아닙니다. 그렇지 않으면, 포아송 분포가 정규임을 증명했습니다!
whuber

1
이것이 이어야하는 이유 입니다. 경우 보다 빠른 속도로 제로에 접근 , . Bnpi1/ilimBn<
mpiktas

@mpiktas가 맞습니다. 포아송 분포와의 비유는 여기에 적합하지 않습니다.

그건 그렇고, 나는 실제로 두 번째 단락에서 그 괴물 상태를 확인하지 않았습니다.

@지. Jay Kerns 나는 Poisson과의 비유가 불완전하다는 데 동의하지만, 그것이 좋은 지침을 제공한다고 생각합니다. p의 시퀀스 p_i = 10 ^ {-j}를 상상해보십시오. 여기서 j는 i의 크기 순서입니다 (i <= 10의 경우 1, i <= 100의 경우 2). n = 10 ^ k 인 경우 p의 90 %는 10 ^ {-k}와 같고 그 합은 기대 0.9로 포아송으로 보입니다. 또 다른 9 %는 10 ^ {1-k}와 같으며 합계는 포아송처럼 보입니다 (동일한 기대치). 따라서 분포는 대략 k 푸 아송 변량의 합과 같습니다. 분명히 Normal 근처에는 없습니다. "괴물 상태"가 필요한 경우
whuber

4

글쎄, 당신의 설명과 의견에 대한 토론에 따르면 는 평균 및 분산 입니다. 분포 의 형태 는 궁극적으로 의 거동에 달려 있습니다. 적절하게 "좋은" (너무 많은 수가 실제로 0에 가까워지지 않는다는 의미에서) 의 분포는 대략 정상입니다 ( 중심으로 ). 그러나 가 0으로 향하기 시작하면 분포가 왼쪽으로 이동하고 에 대해 붐비면Yipiipi(1pi)YpipiYpiipiy@whuber와 @onestop이 언급했듯이 축은 훨씬 덜 평범하고 포아송이 훨씬 더 많이 보이기 시작합니다.

귀하의 의견 "배급은 포아송처럼 보입니다"나는 후자의 경우가 일어나고 있다고 생각하지만 에 대한 시각적 표시 또는 요약 통계가 없으면 실제로 확실하지 않습니다 . 그러나 @whuber가했던 것처럼 의 병리학 적 행동으로 혼합물 분포의 한계와 같은 모든 종류의 무시 무시한 일이 발생할 수 있습니다. 나는 이것이 사실인지 의심하지만, 다시 말하지만, 실제로 가하는 일에 달려 있습니다.ppp

"효율적으로 모델링하는 방법"의 원래 질문에 대해, 나는 당신에게 계층 적 모델을 제안하려고했지만 가 고정 상수 라면 실제로는 적합하지 않습니다 . 간단히 말해서, 의 히스토그램을보고, 당신이 보는 것에 기초하여 첫 번째 추측을하십시오. 가 왼쪽으로 너무 붐비지 않으면 @mpiktas (및 확장 @csgillespie)로 답변을 추천하고 왼쪽으로 붐비는 경우 @onestop으로 답변을 추천합니다.ppp

그건 그렇고,이 문제로 놀고있는 동안 사용한 R 코드는 다음과 같습니다 가 너무 작 으면 코드가 실제로 적합하지 않지만 대한 다른 모델을 쉽게 꽂을 수 있어야합니다 (sooky- 의 궁극적 분포에 어떤 일이 일어나는지 확인하십시오 .ppY

set.seed(1)
M <- 5000
N <- 15000
p <- rbeta(N, shape1 = 1, shape2 = 10)
Y <- replicate(M, sum(rbinom(N, size = 1, prob = p)))

이제 결과를 살펴보십시오.

hist(Y)
mean(Y)
sum(p)
var(Y)
sum(p*(1 - p))

즐기세요; 확실해


왜 "당신의 가 너무 작 으면 코드가 적절하지 않다"고 말 합니까? 예를 들어 shape1 = 1, shape2 = 999와 같이 나에게 잘 작동하는 것처럼 보이며 평균 는 0.001입니다. pp
의 OneStop

@onestop은 위에서 언급 한 (1,10)의 특정 선택이 정상적인 근사치가 꽤 좋아 보인다는 점까지 매우 작은 값을 제공하지 않는다는 것입니다. Poisson이 나오기를 원한다면 다른 것을 시도해야 할 것입니다. 당신이 선택한 (1,999)가 잘 작동하는 것 같습니다. 나는 또한 , 0.25 로 만들려고 생각 했지만 그것을 시도하지 않았습니다. pα<1

2

다른 답변은 훌륭하다고 생각하지만 베이지 안에서 확률을 추정하는 방법은 보지 못했습니다. 답은 명시적인 형태는 아니지만 R을 사용하여 확률을 시뮬레이션 할 수 있습니다.

시도는 다음과 같습니다.

Xi|piBer(pi)

piBeta(α,β)

Wikipedia 를 사용하면 및 추정치를 얻을 수 있습니다 (매개 변수 추정 섹션 참조).α^β^

지금 당신은 추첨 생성 할 수 있습니다 생성 단계 에서 후 생성 에서 . 이 번 수행 하면 얻을 수 있습니다 . 이것은 Y 생성을위한 단일 사이클이며,이 (대) 횟수를 수행하며 Y에 대한 히스토그램 은 Y 밀도의 추정치가됩니다.ithpiBeta(α^,β^)XiBer(pi)NY=XiMM

Prob[Yy]=#YyM

이 분석은 가 고정되지 않은 경우에만 유효합니다 . pi여기에는 해당되지 않습니다. 그러나 누군가 비슷한 질문이있는 경우 여기에 남겨 두겠습니다.


1
일부 순수 주의자들에게는 이것이 베이지안이 아닐 수도 있습니다. 이것은 실제로 실험적인 베이지안이지만, 이전의 엄청나게 큰 점보에 의지하지 않고 R에서 확률을 시뮬레이션하는 빠른 방법입니다.
suncoolsu

1
p_i가 주어질 때 왜 사전이 필요한가요?
whuber

@whuber. 고마워요 나는 고정 부분을 놓쳤다. David가 값을 (qx) / c로 사용하고 고정되어 있지 않다고 생각했습니다. 답변을 편집하겠습니다. pi
suncoolsu

@suncoolsu- "beta-bernoulli"배포는 또 다른 bernoulli 배포이지만 대체 합니다. 이것은 . 따라서 기본적으로 를 혼합하여 여기에 이항 근사치를 합니다. piαα+β(1xi)B(α+xi,β+1xi)B(α,β)=αxiβ1xiα+βpip1=p2==pn
확률

2

다른 답변에서 언급했듯이 확률 분포는 포아송 이항 분포입니다. CDF를 계산하는 효율적인 방법은 Yili Hong에서 제공됩니다 . 포아송 이항 분포의 분포 함수를 계산할 때 .

이 접근법은 특성 함수의 DFT (Discrete Fourier Transform)를 효율적으로 계산하는 것입니다.

포아송 이항 분포의 특징적인 함수는 ( )에 의해 제공됩니다.ϕ(t)=jn[(1pj)+pjeit]i=1

알고리즘은 다음과 같습니다.

  1. 하자 대한 .zj(k)=1pj+pjcos(ωk)+ipjsin(ωk)ω=2πn+1
  2. 정의 정의 .x 0 = 1xk=exp{jnlog(zj(k))}x0=1
  3. 대해 를 계산 합니다. 나머지를 얻으려면 대칭 를 사용하십시오. k = 1 , , [ n / 2 ] ˉ x k = x n + 1 - kxkk=1,,[n/2]x¯k=xn+1k
  4. 벡터 FFT를 적용하십시오 .1n+1<x0,x1,,xn>
  5. CDF를 얻으려면 누적 결과 합계를 가져옵니다.

이 알고리즘은 poibin R 패키지로 제공됩니다.

이러한 접근법은 수치 안정성이 결여 된 경향이 있기 때문에 재귀 제형보다 훨씬 더 나은 결과를 제공한다.


3
난 단지 그 종이의 추상적에 액세스 할 수 있지만,이에 사용되는 방법 I 구현하는 것 같은데 stats.stackexchange.com/questions/41247/... 는이 스레드에 주어진 다른 방법에 비교하여 수행하는 방법과 나와 있습니다. 논문이 무엇을 성취했는지에 대해 더 알고 있다면 요약을 읽어 드리겠습니다.
whuber

1

포아송 근사를 적용하는 것이 좋습니다. 매개 변수 갖는 Poisson 분포를 갖는 rv 와 와 rv 사이의 총 변동 거리 가 작다 는 것은 잘 알려져 있습니다 (AD Barbour, L. Holst 및 S. Janson : Poisson Approximation 참조) . 정보 발산 측면에서도 한계가 있습니다 (Kullback-Leibler 거리, P. Harremoёs : 정보 발산의 포아송 분포에 대한 수렴, 2003 년 2 월 2 일 코펜하겐 대학교 수학 부서, Preprint no. 2 참조) : //www.harremoes.dk/Peter/poisprep.pdfYZipi

supA|P(YA)P(ZA)|min{1,1ipi}ipi2.
및 P.Harremoёs의 다른 간행물, 카이 제곱 거리 (Borisov 및 Vorozheikin https://link.springer.com/article/10.1007%2Fs11202-008-0002-3 참조 ) 및 기타 거리.

근사치 정확도 무제한의 함수 당신은 보리 소프와 Ruzankin 볼 수 있습니다 https://projecteuclid.org/euclid.aop/1039548369을 . 게다가, 그 논문은 확률 행 단순한에는 다음이 포함됩니다 모든 , 우리가 |Ef(Y)Ef(Z)|fA

P(YA)1(1maxipi)2P(ZA).


1
+1 근사값에 대한 유용한 정량적 정보에 감사드립니다. 우리 사이트에 오신 것을 환영합니다!
whuber
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.