터무니없이 큰 Z 점수와 관련된 확률을 계산하는 방법은 무엇입니까?


14

네트워크 모티프 감지를위한 소프트웨어 패키지는 엄청나게 높은 Z- 점수를 반환 할 수 있습니다. 이 Z- 점수가 가짜임을 보여줄 계획입니다.

거대한 Z- 점수는 매우 낮은 관련 확률에 해당합니다. 관련 확률의 값은 예를 들어 최대 6의 Z- 점수에 대한 정규 분포 위키 백과 페이지 (및 아마도 모든 통계 교과서)에 제공됩니다.

질문 : 최대 1,000,000까지 n에 대해 오류 함수 을 어떻게 계산합니까?1erf(n/2)

특히 이미 구현 된 패키지를 사용하고 있습니다 (가능한 경우). 지금까지 내가 찾은 최고는 WolframAlpha이며 n = 150 ( here ) 동안 계산합니다 .


6
아마도 이것이 올바른 질문이 아닐 수도 있습니다. 이 z- 점수는 정규 분포가 실제보다 훨씬 더 나은 근사 또는 모형이라고 가정하기 때문에 가짜입니다. 그것은 뉴턴 역학이 소수점 이하 60 만 자리에 있다고 가정하는 것과 조금 비슷합니다. 극단적 인 값에 대한 erf 계산에만 관심 이 있다면이 질문은 math.SE에 속합니다. n
whuber

6
"확실히"큰 값의 경우 상한 배정 밀도 부동 소수점의 경우 . 그 근사치 및 기타 사항은 stats.SE의 다른 곳에서 논의됩니다. Pr(Z>z)(z2π)1ez2/2
추기경

감사의 추기경, 그 한계는 꽤 정확 해 보입니다. 왜 대답하지 않습니까?
Douglas S. Stones

@Douglas : 여전히 관심이 있다면, 다음 날에 무언가를 모아서 더 완전한 답으로 게시 할 수 있습니다.
추기경

1
글쎄 ... 나는 그것을 대답으로 추가하는 것이 가치가 있다고 생각합니다. 어쩌면 경계는 통계 + 통계에 대한 일반적인 지식이지만 몰랐습니다. 또한 Q와 A는 OP만을위한 것이 아닙니다.
Douglas S. Stones

답변:


19

문제는 상보 오차 함수에 관한 것입니다

erfc(x)=2πxexp(t2)dt

"대형"값 ( 원래 질문의 경우 ), 즉 100에서 700,000 사이입니다. (실제로, 약 6보다 큰 값은 "큰"으로 간주해야합니다.) 이것은 p- 값을 계산하는 데 사용되므로 3 자리 이상의 유효 (10 진) 숫자를 얻는 데는 가치가 거의 없습니다. .x=n/2

시작하려면 @Iterator가 제안한 근사를 고려하십시오.

f(x)=11exp(x2(4+ax2π+ax2)),

어디

a=8(π3)3(4π)0.439862.

이것은 오류 함수 자체에 대한 근사치 대한 끔찍한 근사치 입니다. 그러나 체계적으로 수정하는 방법이 있습니다.erfc

큰 값과 관련된 p- 값의 경우 상대 오차 이 있습니다. 세 개의 유효 값에 대해 절대 값이 0.001보다 작기를 바랍니다. 정밀도 불행하게도이 식은 배정 밀도 계산의 언더 플로로 인해 큰 대해 연구하기가 어렵습니다 . 다음은 한 번의 시도로, 대한 상대 오류 대 를 표시합니다 .x f(x)/erfc(x)1xx0x5.8

줄거리 1

가 5.3을 초과하면 계산이 불안정 해지고 5.8을 초과하는 유효 숫자 하나를 전달할 수 없습니다. 이것은 놀라운 일이 아닙니다. 이 배정 밀도 산술의 한계를 밀고 있습니다. 가 클수록 상대 오차가 상당히 작다는 증거는 없기 때문에 더 잘해야합니다 .xexp(5.82)1014.6x

확장 된 산술 계산 ( Mathematica 사용 )을 수행하면 현재 상황에 대한 그림이 향상됩니다.

줄거리 2

따라 오류가 급격히 증가 하며 수평이 해제되지 않습니다. 과거 정도 인이 근사값은 신뢰할 수있는 한 자리수의 정보조차 제공하지 않습니다!xx=10

그러나 줄거리는 선형으로 보이기 시작합니다. 상대 오차가 직접 비례한다고 추측 할 수 있습니다 . (이것은 이론적 근거에서 의미가있다 : 는 명백하게 홀수 함수이고 는 명백하게 짝수이므로 비율은 홀수 함수 여야한다. 따라서 상대 오차가 증가하면 의 입니다.) 이로 인해 상대 오차를 로 나눈 값 을 연구하게 됩니다 . 마찬가지로, 나는 를 검사하기로 선택합니다. 희망적인 값은 일정한 제한 값을 가져야하기 때문입니다. 그래프는 다음과 같습니다.xerfcfx xxerfc(x)/f(x)

줄거리 3

우리의 추측은 널리 퍼져있는 것으로 보입니다 :이 비율은 약 8 정도의 한계에 근접한 것으로 보입니다. 요청하면 Mathematica 는 다음을 제공합니다.

a1 = Limit[x (Erfc[x]/f[x]), x -> \[Infinity]]

값은 입니다. 이를 통해 견적을 개선 할 수 있습니다.a1=2πe3(4+π)28(3+π)7.94325

f1(x)=f(x)a1x

근사치의 첫 세분화로 때 정말 큰 -보다 몇 천 -이 근사는 괜찮습니다. 에서 사이의 흥미로운 논쟁 범위에 대해서는 여전히 충분하지 않기 때문에 절차를 반복합시다. 이번에는 역 상대 오류 (특히, 표현 는 큰 처럼 동작해야합니다 (이전 패리티 고려 사항으로 인해). . 따라서 곱하고 다음 한계를 찾습니다.x5.320001erfc(x)/f1(x)1/x2xx2

a2 = Limit[x^2 (a1 - x (Erfc[x]/f[x])), x -> \[Infinity]] 

값은

a2=132πe3(4+π)28(3+π)(329(4+π)3π(3+π)2)114.687.

이 프로세스는 원하는만큼 진행될 수 있습니다. 한 걸음 더 나아가서

a3 = Limit[x^2 (a2 - x^2 (a1 - x (Erfc[x]/f[x]))), x -> \[Infinity]] 

대략 1623.67의 값으로. (전체 표현은 의 8도 합리적 함수를 포함하며 여기서 너무 길어서 유용하지 않습니다.)π

이러한 연산을 풀면 최종 근사치가 산출됩니다.

f3(x)=f(x)(a1a2/x2+a3/x4)/x.

오류는 비례합니다 . 수입은 비례 상수이므로 .x6x6(1erfc(x)/f3(x))

줄거리 4

약 2660.59의 한계 값에 빠르게 접근합니다. 근사값 사용하여 모든 대해 상대 정확도가 보다 나은 추정값을 얻습니다 . 일단 20 정도 초과 (로, 또는 훨씬 더, 우리는 우리의 세 개의 유효 숫자가 커진다). 점검으로, 올바른 값을 과 사이의 에 대한 근사치와 비교 한 표가 있습니다 .f3erfc(x)2661/x6x>0xxx1020

 x  Erfc    Approximation      
10  2.088*10^-45    2.094*10^-45
11  1.441*10^-54    1.443*10^-54
12  1.356*10^-64    1.357*10^-64
13  1.740*10^-75    1.741*10^-75
14  3.037*10^-87    3.038*10^-87
15  7.213*10^-100   7.215*10^-100
16  2.328*10^-113   2.329*10^-113
17  1.021*10^-127   1.021*10^-127
18  6.082*10^-143   6.083*10^-143
19  4.918*10^-159   4.918*10^-159
20  5.396*10^-176   5.396*10^-176

실제로이 근사값은 에 대해 적어도 두 개의 유효 정밀도를 제공 하는데, 이는 보행자 계산 (예 : Excel의 함수)이 거의 끝나가는 부분입니다.x=8NormSDist

마지막으로 초기 근사값 를 계산하는 능력에 대해 걱정할 수 있습니다 . 그러나, 어렵지는 않습니다. 가 지수에서 언더 플로를 유발할만큼 충분히 크면 제곱근은 지수의 절반만큼 근사합니다.fx

f(x)12exp(x2(4+ax2π+ax2)).

이것의 대수를 계산하는 것은 간단하며, 원하는 결과를 쉽게 얻을 수 있습니다. 예를 들어, 이라고하자 . 이 근사의 일반적인 로그는x=1000

log10(f(x))(10002(4+a10002π+a10002)log(2))/log(10)434295.63047.

지수 산출

f(1000)2.3416910434296.

수정을 적용하면 ( )f3

erfc(1000)1.86003 70486 3232810434298.

보정이 99 % 이상 일본어 근사 감소 (실제로, 참고 .) (마지막 자리에서 정확한 값에서이 근사 다르다. 다른 공지의 근사 , 와 6 자리 숫자가 잘못되었습니다. 동일한 기술을 사용하여 원했습니다.)a1/x1%exp(x2)/(xπ)1.86003810434298


1
+1 이것은 훌륭한 답변입니다. 어떻게 든 전에이 스레드를 본 적이 없습니다.
amoeba는 Reinstate Monica가

15

간단한 상한

정규의 상단 꼬리 확률 계산에서 인수의 매우 큰 값의 경우 배정 밀도 부동 소수점이있는 다른 방법을 사용하는 것만 큼 좋은 우수한 범위가 존재합니다. 들면 ,하자 여기서 는 표준 일반 pdf입니다. 생존 분석의 표준 표기법에 따라 표기법 를 사용했습니다. 엔지니어링 컨텍스트에서는이 함수를 함수라고하며 합니다.z>0

S(z):=P(Z>z)=zφ(z)dz,
φ(z)=(2π)1/2ez2/2S(z)QQ(z)

그런 다음 매우 간단한 기본 상한은 여기서 오른쪽의 표기법은이 값이 상한 추정치를 나타냅니다. 이 답변 은 한계에 대한 증거를 제공합니다.

S(z)φ(z)z=:S^u(z),

상보적인 하한도 있습니다. 가장 손쉽고 가장 쉬운 방법 중 하나는 이 경계를 도출하기위한 세 가지 별도의 방법이 있습니다. 이러한 방법 중 하나의 대략적인 스케치 는 관련 질문에 대한 이 답변 에서 찾을 수 있습니다 .

S(z)zz2+1φ(z)=:S^(z).

사진

아래는 실제 함수 와 함께 두 경계 (회색)의 도표입니다 .S(z)

정상 및 경계의 상단

얼마나 좋은가요?

플롯으로부터, 중간 정도의 대해서도 경계가 상당히 좁아지는 것 같습니다 . 우리는 그들이 얼마나 타이트하고 그 점에서 어떤 종류의 양적 진술을 할 수 있는지 스스로에게 물어볼 수 있습니다.z

하나의 유용한 기밀 측정은 절대 상대 오차 이것은 추정치의 비례 오차를 제공합니다.

E(z)=|S^u(z)S(z)S(z)|.

침범 된 모든 기능은의 경계 특성을 이용하여, 음이 있기 때문에 지금, 참고, 것을 와 , 우리가 얻을 이므로 증거가됩니다. 동안 그 위 결합 된 1 % 이내로 정확한 대해 는 0.1 % 이내와 대 정확함 은 0.01 % 이내까지 정확하다.S^u(z)S^(z)

E(z)=S^u(z)S(z)S(z)S^u(z)S^(z)S^(z)=z2,
z10z28z100

사실, 간단한 범위의 경계는 다른 "근사치"를 잘 점검합니다. 더 복잡한 근사치의 수치 계산에서 이러한 경계 밖의 값을 얻는 경우 여기에 제공된 상한값을 취하기 위해 간단히 "수정"할 수 있습니다.

이 범위에는 많은 수정이 있습니다. 여기에 언급 된 Laplace 경계 는 형식의 에서 멋진 상한 및 하한을 제공합니다. 여기서 는 합리적인 함수입니다.S(z)R(z)φ(z)R(z)

마지막으로, 여기 에는 다소 관련된 질문과 답변이 있습니다.


1
모든 "자기 인용"에 대한 사과. 몇 년 전, 나는 2 주 동안 관련된 질문에 관심을 가지고이 주제에 대해 최대한 많이 배우려고 노력했습니다.
추기경

+1 whuber에 동의하십시오. 매우 좋으며 다른 답변에 대한 링크에 감사드립니다.
반복자

5

훨씬 간단한 기능으로 대략적으로 계산할 수 있습니다 . 자세한 내용 은 이 Wikipedia 섹션 을 참조하십시오. 기본 근사치는erf(x)sgn(x)1exp(x24/π+ax21+ax2)

기사에 해당 섹션에 대한 링크가 잘못되었습니다. 참조 된 PDF는 Sergei Winitzki의 파일 또는 이 링크 에서 찾을 수 있습니다 .


1
두 가지 이유로 이것에 대한 일부 증폭은 환영받을 것입니다. 첫째, 답변이 독립적 일 수있는 것이 가장 좋습니다. 둘째로,이 기사는 "무한대 부근에서"근사치의 품질에 대해 모호하게 기록합니다. "정확한"정도는 얼마나 정확합니까? (내재적으로 이것에 대해 잘 이해하고 있지만 모든 관심있는 독자에게 기대할 것이 많습니다.) 여기에 ".00035"라는 값은 쓸모가 없습니다.
whuber

감사. TeX 사용에 대한 Javascript 기반 지원이 있음을 알지 못했지만 작성에 차이가있었습니다.
Iterator 2018 년

1
또한, 그 근사치에 대한 Wikipedia 참조가 손상되었습니다. 그러나 Mathematica는 상대 오차 (1-approx (x) / erf (x))가 . 2exp(x2+3(π4)2/(8(π3)))
whuber

@ whuber, 당신은 그것에 대한 Mathematica 코드를 게시 할 수 있습니까? :) 나는 15 년 이상 Mathematica를 보지 못했고 이런 종류의 목적을 위해 결코 보지 못했습니다.
반복자

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