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


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/(1−p))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.