알파 및 베타가 큰 베타 분포의 값을 (숫자 적으로) 근사 적으로 계산하는 방법


12

큰 정수 알파, 베타에 대한 베타 분포 값을 계산하는 수치 적으로 안정적인 방법이 있습니까 (예 : alpha, beta> 1000000)?

실제로, 어떻게 든 문제를 쉽게 만들 수 있다면 모드 주위에 99 % 신뢰 구간 만 있으면됩니다.

추가 : 죄송합니다. 제 질문은 생각했던대로 명확하게 언급되지 않았습니다. 내가하고 싶은 것은 이것입니다 : 컨베이어 벨트에서 제품을 검사하는 기계가 있습니다. 이 제품의 일부는 기계에 의해 거부됩니다. 기계 작업자가 일부 검사 설정을 변경하면 추정 거부율과 현재 추정치의 신뢰성에 대한 힌트를 보여 드리고자합니다.

따라서 실제 거부율을 임의의 변수 X로 취급하고 거부 된 개체 N과 허용 된 개체 M의 수를 기반으로 해당 임의 변수의 확률 분포를 계산한다고 생각했습니다. N과 M에 따른 베타 분포입니다.이 분포를 사용자에게 직접 표시하거나 구간 [l, r]을 찾아 실제 거부율이 p> = 0.99 (shabbychef의 용어 사용) 인이 구간에 있도록 표시 할 수 있습니다. 간격. 작은 M, N의 경우 (즉, 모수 변경 직후) 분포를 직접 계산하고 구간 [l, r]에 근접 할 수 있습니다. 그러나 큰 M, N의 경우,이 순진한 접근 방식은 x ^ N * (1-x) ^ M이 작기 때문에 배정 밀도 부동 소수점으로 표시되므로 언더 플로 오류가 발생합니다.

내 최선의 방법은 작은 M, N에 대해 순진한 베타 분포를 사용하고 M, N이 임계 값을 초과하자마자 동일한 평균 및 분산을 갖는 정규 분포로 전환하는 것입니다. 말이 돼?


1
수학이나 R 또는 그와 같은 코드 솔루션을 알고 싶습니까?
John

이것을 C #으로 구현해야하므로 수학이 좋을 것입니다. 내장 R / Matlab / Mathematica 함수에 의존하지 않으면 C #으로 변환 할 수없는 코드 샘플도 좋습니다.
nikie

PDF, CDF 또는 역 CDF?
JM은 통계학자가 아닙니다.

: 당신이 베타 주장하지 않는 경우, 당신은 매우 유사하며, 훨씬 간단 대수 형태를 갖는다 Kumaraswamy 분배 사용할 수 있습니다 en.wikipedia.org/wiki/Kumaraswamy_distribution

답변:


13

정규 근사는 특히 꼬리에서 매우 잘 작동합니다 . 평균 및 분산 . 예를 들어, 다음과 같은 (사행이 관심사가 될 수도 있음) 힘든 상황에서 테일 확률 절대 상대 오차 주위 피크 및 미만이다 가있을 때 평균에서 1 SD 이상. (이것은 베타가 너무 크기 때문 이 아닙니다 . 이면 절대 상대 오류는 로 제한됩니다.α/(α+β)αβ(α+β)2(1+α+β)α=106,β=1080.000260.00006α=β=1060.0000001따라서이 근사치는 99 % 간격을 포함하는 모든 목적에 우수합니다.

질문에 대한 편집에 비추어, 실제로 정수를 통합하여 베타 적분을 계산하지는 않습니다. 물론 언더 플로우가 발생할 수 있습니다 (물론 적분에 크게 기여하지 않기 때문에 실제로 중요하지는 않지만) . Johnson & Kotz (통계 분포)에 설명 된대로 적분을 계산하거나 근사값을 계산하는 방법에는 여러 가지가 있습니다. 온라인 계산기는 http://www.danielsoper.com/statcalc/calc37.aspx에 있습니다. 실제로이 적분의 역수가 필요합니다. 역을 계산하는 일부 방법은 Mathematica 사이트 ( http://functions.wolfram.com/GammaBetaErf/InverseBetaRegularized/) 에 문서화되어 있습니다.. 코드는 Numerical Recipes (www.nr.com)에서 제공됩니다. 정말 멋진 온라인 계산기는 Wolfram Alpha 사이트 (www.wolframalpha.com)입니다. inverse beta regularized (.005, 1000000, 1000001)왼쪽 끝점과 inverse beta regularized (.995, 1000000, 1000001)오른쪽 끝점 ( , 99 % 간격)에 입력하십시오.α=1000000,β=1000001


완전한! 나는 항상 내 책상에 NR 책을 가지고 있었지만 거기서는 생각하지 않았습니다. 고마워
nikie

3

빠른 그래픽 실험에 따르면 알파와 베타가 모두 매우 큰 경우 베타 분포는 정규 분포와 매우 유사합니다. 인터넷 검색 "베타 배포 제한 정상"으로 나는 http://nrich.maths.org/discus/messages/117730/143065.html?1200700623을 찾았습니다 .

베타 분포의 위키 백과 페이지는 평균, 모드 (큰 알파 및 베타의 경우 평균에 가까운 v) 및 분산을 제공하므로 평균과 분산이 동일한 정규 분포를 사용하여 근사값을 얻을 수 있습니다. 목적에 맞는 근사치인지 여부는 목적에 따라 다릅니다.


어리석은 질문 : 그래픽 실험을 어떻게 했습니까? 알파 / 베타의 분포를 약 100 정도 줄이려고했지만 언더 플로 오류로 인해 아무것도 볼 수 없었습니다.
nikie

정수를 표시하지 않으려면 적분을 표시하려고합니다. 그러나 여러 가지 방법으로 정수를 얻을 수 있습니다. 하나는 Wolfram Alpha 사이트에 "Plot D (베타 (x, 1000000, 2000000), x) / 베타 (1, 1000000, 2000000) 0.3325 ~ 0.334"를 입력하는 것입니다. 적분 자체는 "플롯 베타 (x, 1000000, 2000000) / 베타 (1, 1000000, 2000000) 0.3325에서 0.334"로 나타납니다.
whuber

Stata에서 integrand, 즉 베타 배포판의 pdf를 플로팅했습니다. pdf에 대한 내장 함수가 있습니다. 큰 알파 및 베타의 경우 플롯 범위를 제한하여 노멀에 가깝게 표시해야합니다. 내가 직접 프로그래밍했다면 로그를 계산 한 다음 끝에 지수화합니다. 언더 플로 문제를 해결하는 데 도움이됩니다. 분모의 베타 함수는 정수 알파 및 베타의 계승에 해당하는 감마 함수로 정의되며 많은 패키지 / 라이브러리에는 lngamma () 또는 lnfactorial () 대신 gamma () 및 factorial () 함수가 포함됩니다.
onestop

2

베타 RV에서 임의의 추첨이 확률 0.99의 구간에 있고 과 에 대한 보너스 포인트 가 모드 주위에서 대칭 이되도록 구간 을 원한다고 추론하겠습니다 . 으로 가우스 '불평등 또는 Vysochanskii-Petunin 불평등, 당신은 간격을 포함 간격을 구성 할 수 있습니다 , 그리고 꽤 괜찮은 근사치가 될 것입니다. 충분히 큰 경우 과 을 별개의 숫자로 표시 하는데도 수류 부족 문제가 발생 하므로이 경로가 충분할 수 있습니다.[l,r]lr[l,r]α,β lr


알파와 베타가 너무 멀지 않은 경우 (즉, 알파 / 베타가 위와 아래에 묶여 있음), 베타 α의 SD는 1 / Sqrtα에 비례한다. 예를 들어, alpha = beta = 10 ^ 6의 경우 SD는 1 / Sqrt (8) / 1000에 매우 가깝습니다. 단 정밀도 부동 소수점 만 사용하더라도 l과 r의 표현에는 문제가 없을 것이라고 생각합니다. .
whuber

즉, 은 '충분히 크지 않다'는 106
말입니다

1
예, 베타 응용 프로그램의 경우 미친 숫자입니다. BTW에서, 이러한 불평등은 모든 분포에 대해 극단적이기 때문에 (간편한 제약 조건을 만족시키는) 간격이 전혀 좋지 않습니다.
whuber

@ whuber : 당신이 맞아, 그들은 미친 숫자입니다. 내 순진한 알고리즘을 사용하면 "정상적인"숫자가 쉬웠고 잘 작동했지만 "미친"매개 변수에 대해 계산하는 방법을 상상할 수 없었습니다. 따라서 질문입니다.
nikie

2
자, 맞습니다 : 일단 알파 + 베타가 10 ^ 30을 초과하면 복식에 어려움이있을 것입니다 :-). (그러나 알파 / (알파 + 베타)의 평균과의 차이로 l과 r을 나타내면 알파 나 베타가 약 10 ^ 303을 초과 할 때까지 괜찮을 것입니다.)
whuber

1

경우 베타 분포 변수이고, 그 때의 로그 확률이고 (즉 : . 대략 정규 분포 이것도만큼 따라 매우 기울어 베타 분포 마찬가지이다P의 L은 O g ( P / ( 1 - p는 ) ) 해요 I N ( α , β ) > 100pplog(p/(1p))min(α,β)>100

예를 들어

f <- function(n, a, b) {
    p <- rbeta(n, a, b)
    lor <- log(p/(1-p))
    ks.test(lor, 'pnorm', mean(lor), sd(lor))$p.value
}
summary(replicate(50, f(10000, 100, 1000000)))

일반적으로 다음과 같은 출력을 생성합니다

요약 (복제 (50, f (10000, 100, 1000000))) Min. 1 분기 중간 평균 3 쿼터 최대 0.01205 0.10870 0.18680 0.24810 0.36170 0.68730

즉 전형적인 p- 값은 약 0.2입니다.

따라서 10000 개의 샘플이 있더라도 Kolmogorov-Smirnov 테스트는 으로 고도로 치우친 베타 분포 변수의 로그 승산 비 변환을 구별 할 수있는 능력이 없습니다 .α=100,β=100000

그러나 자체 의 분포에 대한 유사한 테스트p

f2 <- function(n, a, b) {
    p <- rbeta(n, a, b)
    ks.test(p, 'pnorm', mean(p), sd(p))$p.value
}
summary(replicate(50, f2(10000, 100, 1000000)))

다음과 같은 것을 생성합니다

summary(replicate(50, f2(10000, 100, 1000000)))
     Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
2.462e-05 3.156e-03 7.614e-03 1.780e-02 1.699e-02 2.280e-01 

0.01 정도의 전형적인 p- 값

R qqnorm함수는 또한 유용한 시각화를 제공하여, 대략적인 정규성을 나타내는 log-odds 분포에 대한 매우 직선적 인 플롯을 생성합니다. 베타 dsitribute 변수의 분포는 비정규를 나타내는 독특한 곡선을 생성합니다

따라서 둘 다 100을 초과 하는 한 고도로 치우친 값에 대해서도 로그 홀드 공간에서 가우스 근사를 사용하는 것이 합리적 입니다.α,β

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