태그 보관물: algorithms

algorithms

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

큰 정수 알파, 베타에 대한 베타 분포 값을 계산하는 수치 적으로 안정적인 방법이 있습니까 (예 : 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 SD 이상. (이것은 베타가 너무 크기 때문 이 아닙니다 . 이면 절대 상대 오류는 로 제한됩니다.

α/(α+β)

αβ(α+β)2(1+α+β)

α=106,β=108

0.00026

0.00006

α=β=106

0.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

답변

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

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


답변

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

[l,r]

l

r

[l,r]

α,β

l

r

답변

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

p

p

log(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을 초과 하는 한 고도로 치우친 값에 대해서도 로그 홀드 공간에서 가우스 근사를 사용하는 것이 합리적 입니다.

α,β

답변