Як обчислити ймовірність, пов’язану з абсурдно великими Z-балами?


14

Програмні пакети для виявлення мережевих мотивів можуть повернути надзвичайно високі показники Z (найвищий показник, який я бачив, - 600 000+, але Z-бали понад 100 є досить поширеними). Я планую показати, що ці Z-бали є хибними.

Величезні Z-бали відповідають надзвичайно низьким асоційованим ймовірностям. Значення пов'язаних ймовірностей наведено, наприклад, на сторінці звичайної вікіпедії звичайного розподілу (і, ймовірно, у кожному підручнику статистики) для балів Z до 6. Отже ...

Питання : Як можна обчислити функцію помилки 1erf(n/2)за n до 1 000 000, скажімо?

Я особливо після вже реалізованого пакету для цього (якщо можливо). Найкраще, що я знайшов поки що, - WolframAlpha, якому вдається обчислити його для n = 150 ( тут ).


6
Можливо, це не правильне запитання. Ці z-бали є хибними, оскільки вони припускають, що нормальний розподіл є набагато кращим наближенням або моделлю, ніж є насправді. Це трохи схоже на те, що припустити, що механіка Ньютона хороша до 600 000 десяткових знаків. Якщо вас справді цікавить виключно обчислення erf для екстремальних значень , то це питання належить на math.SE, а не тут. n
whuber

6
Pr(Z>z)(z2π)1ez2/2

Дякую кардиналу, що пов'язане здається досить точним. Чому ви не зробите це на відповідь?
Дуглас С. Стоунс

@Douglas: Якщо ти все ще зацікавився, я можу скласти щось на наступний день або близько того і опублікувати це як більш повну відповідь.
кардинал

1
Ну ... я думаю, варто було б додати це як відповідь. Можливо, пов'язане є загальновідомим в prob + stats, але я цього не знав. Крім того, питання Q і A тут не стосуються виключно ОП.
Дуглас С. Стоунс

Відповіді:


19

Питання стосується функції додаткової помилки

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

для "великих" значень ( в первісному запитанні) - тобто від 100 до 700 000 або близько того. (На практиці будь-яке значення, що перевищує приблизно 6, слід вважати "великим", як ми побачимо.) Зауважте, що оскільки це буде використовуватися для обчислення p-значень, мало значення для отримання більше трьох значущих (десяткових) цифр .= n / x=n/2

Для початку розглянемо наближення, запропоноване @Iterator,

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

де

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

Хоча це чудове наближення до самої функції помилок, це жахливе наближення до . Однак є спосіб систематично це виправити.erfc

Для p-значень, пов'язаних з такими великими значеннями , нас цікавить відносна похибка : ми сподіваємось, що її абсолютне значення буде менше 0,001 для трьох значущих цифри точності. На жаль, цей вираз важко вивчити для великого через підтоки в обчисленні подвійної точності. Ось одна спроба, яка побудує відносну помилку проти для :f (x x x 0 x 5.8f(x)/erfc(x)1xx0x5.8

Сюжет 1

Обчислення стає нестабільним, коли перевищує 5,3 або більше і не може надати одну значну цифру за минулу 5.8. Це не дивно: розсуває межі арифметики подвійної точності. Оскільки немає доказів того, що відносна похибка буде значно меншою для більшого , нам потрібно зробити краще.exp ( - 5,8 2 ) 10 - 14,6 xxexp(5.82)1014.6x

Виконання обчислення в розширеній арифметиці (за допомогою Mathematica ) покращує нашу картину того, що відбувається:

Сюжет 2

Помилка швидко зростає з і не показує ознак вирівнювання. Минуле або більше, це наближення не дає навіть однієї надійної цифри інформації!x = 10xx=10

Однак сюжет починає виглядати лінійно. Ми можемо здогадатися, що відносна похибка прямо пропорційна . (Це має сенс на теоретичних підставах: явно є непарною функцією, а явно парним, тому їх співвідношення повинно бути непарною функцією. Таким чином, ми очікуємо, що відносна помилка, якщо вона зросте, поводитиметься як непарна сила .) Це призводить нас до вивчення відносної помилки, поділеної на . Еквівалентно, я вирішу розглянути , тому що, надія, це має мати постійне обмежувальне значення. Ось його графік:erfc f xxerfcfx x erfc ( x ) / f ( x )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

як перше уточнення наближення. Коли дійсно великий - більший за кілька тисяч - це наближення просто чудово. Оскільки це все ще не буде досить добре для цікавого діапазону аргументів між і або близько того, давайте повторимо процедуру. Цього разу обернена відносна помилка - зокрема, вираз повинна поводитись як для великого (в силу попередніх міркувань паритету) . Відповідно, множимо на і знаходимо наступну межу:5.3 2000 1 - erfc ( x ) / f 1 ( xx5.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. (Повний вираз передбачає раціональну функцію восьмому ступені і занадто довгий, щоб бути корисним тут.)π

Розмотування цих операцій дає остаточне наближення

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

Похибка пропорційна . Імпорт - це константа пропорційності, тому ми побудуємо : x 6 ( 1 -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)).

Обчислити логарифм цього (у базі 10) нескладно і легко дати бажаний результат. Наприклад, нехай . Загальний логарифм цього наближення є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% (і справді .) (Це наближення відрізняється від правильного значення лише в останній цифрі. Інше добре відоме наближення, , дорівнює , помиляючись у шостій знаковій цифрі. Я впевнений, що ми могли б також покращити цю, якщо ми хотіли, використовуючи ті самі методи.)a1/x1%1,886003810 - 434298exp(x2)/(xπ)1.86003810434298


1
+1 Це чудова відповідь, я чомусь раніше ніколи не стикався з цією темою.
Амеба каже, що повернеться Моніка

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

Насправді проста форма меж забезпечує хорошу перевірку інших "наближень". Якщо при чисельному обчисленні більш складних наближень ми отримаємо значення за межами цих меж, ми можемо просто "виправити" його, щоб прийняти значення, наприклад, верхньої межі, наданої тут.

Існує багато уточнень цих меж. Згадані тут межі Лапласа забезпечують приємну послідовність верхньої та нижньої меж на форми де є раціональною функцією.R ( z ) φ ( z ) R ( z )S(z)R(z)φ(z)R(z)

Нарешті, ось ще одне дещо пов’язане питання та відповідь.


1
Вибачення за всі "самоцитати". Одного разу, кілька років тому, я захопився зацікавленими питаннями, що тривалий тиждень, і намагався дізнатися, як тільки я міг про цю тему.
кардинал

+1 Погодьтеся з батогом. Дуже приємно, і я ціную посилання на інші відповіді.
Ітератор

5

Ви можете наблизити його набагато простішими функціями - для отримання додаткової інформації див цей розділ Вікіпедії . Основним наближенням є те, щоerf(x)sgn(x)1exp(x24/π+ax21+ax2)

У статті є неправильне посилання на цей розділ. PDF з посиланням можна знайти у файлах Сергія Вінцкі - або за цим посиланням .


1
Деяке посилення цього питання було б вітальним з двох причин. По-перше, найкраще, коли відповіді можуть стояти окремо. По-друге, ця стаття неоднозначно пише про якість наближення "в сусідстві з нескінченністю": наскільки точно "дуже точно"? (Ви неявно розумієте це, але від усіх зацікавлених читачів цього багато чекати.) Зазначене значення ".00035" тут марне.
whuber

Спасибі. Я не помітив, що існувала підтримка на основі Javascript використання TeX, яка змінила це в написанні.
Ітератор

1
Між іншим, посилання Вікіпедії на це наближення порушена. Математика виявляє, однак, що відносна помилка (1 - прибл. (Х) / ерф (х)) поводиться як зворотна . 2exp(x2+3(π4)2/(8(π3)))
whuber

@whuber, чи можете ви опублікувати код Mathematica для цього? :) Я не бачив Mathematica вже 15 років, і ніколи з цією метою.
Ітератор

Я розмістив це в окремій відповіді.
whuber
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.