Saçma büyük Z skorları ile ilişkili olasılık nasıl hesaplanır?


14

Ağ motifi tespiti için yazılım paketleri çok yüksek Z-skorları döndürebilir (gördüğüm en yüksek değer 600.000+, ancak 100'den fazla Z-skorları oldukça yaygındır). Bu Z-skorlarının sahte olduğunu göstermeyi planlıyorum.

Büyük Z skorları son derece düşük ilişkili olasılıklara karşılık gelir. İlişkili olasılıkların değerleri, 6'ya kadar Z puanları için örneğin normal dağıtım wikipedia sayfasında (ve muhtemelen her istatistik ders kitabında) verilir.

Soru : 1 - e r f ( n / hata fonksiyonu nasıl hesaplanır1erf(n/2)1.000.000'a kadar n için?

Özellikle bunun için zaten uygulanmış bir paketten sonrayım (mümkünse). Şimdiye kadar bulduğum en iyi şey, n = 150 ( burada ) için hesaplamayı başaran WolframAlpha .


6
Belki de bu sorulması gereken doğru soru değildir. Bu z-skorları sahte çünkü normal dağılımın olduğundan çok daha iyi bir yaklaşım veya model olduğunu varsayarlar. Bu, Newton mekaniğinin 600.000 ondalık basamağa iyi olduğunu varsaymak gibidir. Gerçekten sadece aşırı değerleri niçin erf hesaplamasıyla ilgileniyorsanız , bu soru burada değil, math.SE'ye aittir.
whuber

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

Teşekkürler kardinal, bu sınır oldukça doğru görünüyor. Neden cevap vermiyorsun?
Douglas S. Stones

@Douglas: Hala ilgileniyorsanız, ertesi gün bir şeyler bir araya getirebilir ve daha eksiksiz bir cevap olarak gönderebilirim.
kardinal

1
Şey ... Bence bunu cevap olarak eklemeye değer. Belki sınır prob + istatistiklerinde yaygın bilgidir, ama bilmiyordum. Ayrıca, Q'lar ve A'lar sadece OP için değil.
Douglas S. Stones

Yanıtlar:


19

Soru tamamlayıcı hata fonksiyonu ile ilgilidir

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

"büyük" değerleri için ( orijinal sorudaki ) - 100 ile 700.000 arasında. (Pratikte, göreceğimiz gibi yaklaşık 6'dan büyük herhangi bir değer "büyük" olarak değerlendirilmelidir.) Bu, p değerlerini hesaplamak için kullanılacağından, üçten fazla anlamlı (ondalık) basamak elde etmede çok az değer olduğunu unutmayın. .x=n/2

Başlamak için @Iterator tarafından önerilen yaklaşımı düşünün,

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

nerede

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

Bu, hata işlevinin kendisine mükemmel bir yaklaşım olsa da, için korkunç bir yaklaşımdır . Ancak, bunu sistematik olarak düzeltmenin bir yolu vardır.erfc

Bu kadar büyük değerleri ile ilişkili p değerleri için, göreceli hatasıyla ilgileniyoruz : umarım üç önemli değer için mutlak değerinin 0.001'den az olacağını umuyoruz hassasiyet basamakları. Ne yazık ki bu ifadenin çift ​​kesinlikli hesaplamadaki düşük akışlar nedeniyle büyük için incelenmesi zordur . için karşı göreceli hatayı çizen bir deneme :x f(x)/erfc(x)1xx0x5.8

Arsa 1

5.3 değerini aştığında hesaplama kararsız hale gelir ve 5.8'i geçen önemli bir rakamı veremez. Bu hiç de şaşırtıcı değil: çift ​​kesinlikli aritmetiğin sınırlarını zorluyor. Göreceli hatanın daha büyük için kabul edilebilir derecede küçük olacağına dair bir kanıt olmadığından, daha iyisini yapmamız gerekiyor.xexp(5.82)1014.6x

Hesaplamayı genişletilmiş aritmetik ( Mathematica ile ) yapmak, neler olduğuna dair resmimizi geliştirir:

Arsa 2

Hata ile hızla artar ve hiçbir tesviye işareti göstermez. Geçmiş kadar, bu yaklaşım güvenilir bir bilgi basamağı bile sağlamaz!xx=10

Ancak, grafik doğrusal görünmeye başlıyor. Göreceli hatanın ile doğru orantılı olduğunu tahmin edebiliriz . (Bu teorik temelde mantıklıdır: açıkça garip bir işlevdir ve açıkça eşittir, bu nedenle oranları garip bir işlev olmalıdır. Bu nedenle, göreceli hatanın, eğer artarsa, garip güç ). Bu potansiyel müşteriler bize incelemek için bölü göreceli hatayı . yi incelemeyi tercih ediyorum , çünkü bunun sabit bir sınır değeri olması gerekir. İşte grafiği:xerfcfx xxerfc(x)/f(x)

Arsa 3

Tahminimiz ortaya çıkmış gibi görünüyor: bu oran 8 civarında bir sınıra yaklaşıyor gibi görünüyor. Sorulduğunda, Mathematica bunu sağlayacaktır:

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

Değer . Bu tahmin geliştirmemizi sağlamaktadır: Aldığımıza1=2πe3(4+π)28(3+π)7.94325

f1(x)=f(x)a1x

yaklaşık ilk ayrıntılandırma olarak. Ne zaman gerçekten büyüktür - daha büyük birkaç bin - Bu yaklaşım ve gayet iyi. ve kadar ilginç bir argüman yelpazesi için hala iyi olmayacağından , prosedürü tekrarlayalım. Bu kez, ters bağıl hata - özellikle, ifadesi - büyük için gibi davranmalıdır (önceki parite hususları nedeniyle) . Buna göre, ile çarpıyoruz ve bir sonraki limiti buluyoruz:x5.320001erfc(x)/f1(x)1/x2xx2

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

Değer

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

Bu süreç istediğimiz sürece devam edebilir. Bir adım daha attım,

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

değeri yaklaşık 1623.67. (Tam ifade derecesinin rasyonel işlevini içerir ve burada yararlı olmak için çok uzun.)π

Bu operasyonların çözülmesi nihai yaklaşımımızı verir

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

Hata, ile orantılıdır . İçe aktarma orantılılık sabiti, bu nedenle :x6x6(1erfc(x)/f3(x))

Arsa 4

Hızla 2660.59 civarında sınırlayıcı bir değere yaklaşır. yaklaşımını kullanarak, göreceli doğruluğu tüm için daha iyi olan tahminlerini elde ederiz . Bir kez 20 ya da öylesine aşıyor (aynı veya çok daha, bizim üç önemli basamak var büyüdükçe). Bir kontrol olarak, burada doğru değerleri için ile arasındaki yaklaşık karşılaştırmayla karşılaştıran bir tablo bulunmaktadır :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

Aslında, bu yaklaşım, açıklığı için en az iki önemli hassasiyet rakamı sağlar; bu, yaya hesaplamalarının (Excel'in işlevi gibi) nerede ortaya çıktığıdır.x=8NormSDist

Son olarak, ilk yaklaşım hesaplama yeteneğimizden endişe edilebilir . Ancak, bu zor değil: üstelde alt akışlara neden olacak kadar büyük olduğunda, kare kök üstelin yarısı kadar iyi yaklaşır,fx

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

Bunun logaritmasını hesaplamak (taban 10'da) basittir ve kolayca istenen sonucu verir. Örneğin, . Bu yaklaşımın ortak logaritması:x=1000

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

Üstel verim

f(1000)2.3416910434296.

Düzeltmeyi uygulamak ( ) üretirf3

erfc(1000)1.86003 70486 3232810434298.

Düzeltme% 99'dan fazla orijinal tahminini azaltır (ve aslında, bu Not ,.) (Sadece son basamak doğru değerden Bu yaklaşım farklıdır. İyi bilinen bir başka yaklaşım , eşittir , altıncı anlamlı basamakta . Eminim bunu da geliştirebiliriz, eğer biz aynı teknikleri kullanarak istedim.)a1/x1%exp(x2)/(xπ)1.86003810434298


1
+1 Bu harika bir cevap, bir şekilde daha önce hiç bu konuya rastlamadım.
amip, Reinstate Monica'nın

15

Basit bir üst sınır

Üst kuyruk olasılığının hesaplanmasındaki argümanın çok büyük değerleri için, muhtemelen çift kesinlikli kayar noktalı diğer yöntemleri kullanabilecek kadar iyi olan mükemmel sınırlar vardır. İçin , izin burada standart normal pdf'dir. Hayatta kalma analizindeki standart gösterime bağlı olarak gösterimini kullandım . Mühendislik bağlamlarında, bu işleve işlevi olarak adlandırılır ve .z>0

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

Sonra, çok basit, basit bir üst sınır burada sağ taraftaki gösterim bunun üst sınır tahmini olduğunu gösterir. Bu cevap sınırın bir kanıtıdır.

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

Birkaç güzel tamamlayıcı alt sınır da vardır. edilmesi en kolay ve en kolay biri bağlı Bu sınırı türetmek için en az üç ayrı yöntem vardır. İlgili bir sorunun bu cevabında böyle bir yöntemin kabaca bir taslağını bulabilirsiniz .

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

Bir resim

Aşağıda gerçek fonksiyon ile birlikte iki sınırın (gri) bir çizimi bulunmaktadır .S(z)

Normal ve sınırların üst kuyruğu

Ne kadar iyi?

Arsadan, sınırlar orta derecede büyük için bile oldukça sıkı hale geliyor gibi görünüyor . Kendimize ne kadar sıkı olduklarını ve bu konuda ne tür niceliksel açıklama yapılabileceğini sorabiliriz .z

Yararlı bir sıkılık ölçüsü mutlak göreceli hata Bu size tahminin oransal hatasını verir.

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

Dahil tüm fonksiyonları sınırlayıcı özelliklerini kullanarak, negatif olmaz çünkü Şimdi, not, o ve , aldığımız ve böylece bir kanıt sağlar söz konusu üst sınır% 1 içinde doğru olduğu için, o% 0.1 olan ve için doğrudur % 0.01'e içinde doğrudur.S^u(z)S^(z)

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

Aslında, sınırların basit şekli diğer "yaklaşımlar" üzerinde iyi bir kontrol sağlar. Daha karmaşık yaklaşımların sayısal hesaplamasında, bu sınırların dışında bir değer elde edersek, örneğin burada sağlanan üst sınırın değerini almak için bunu "düzeltebiliriz".

Bu sınırların pek çok ayrıntılandırması vardır. Burada adı geçen Laplace sınırları , rasyonel bir fonksiyon olan formunun üzerinde güzel bir üst ve alt sınır dizisi sağlar.S(z)R(z)φ(z)R(z)

Son olarak, işte biraz ilgili bir soru ve cevap.


1
Tüm "öz-atıflar" için özür dileriz. Birkaç yıl önce, ilgili sorulara iki hafta boyunca yoğun bir ilgi gösterdim ve bu konu hakkında mümkün olduğunca çok şey öğrenmeye çalıştım.
kardinal

+1 Whuber ile aynı fikirde. Çok güzel ve diğer cevapların bağlantılarını takdir ediyorum.
Yineleyici

5

Çok daha basit işlevlerle yaklaşık olarak tahmin edebilirsiniz - daha fazla bilgi için bu Wikipedia bölümüne bakın . Temel yaklaşım,erf(x)sgn(x)1exp(x24/π+ax21+ax2)

Makalenin bu bölüm için yanlış bir bağlantısı var. Referans verilen PDF, Sergei Winitzki'nin dosyalarında veya bu bağlantıda bulunabilir .


1
Bunun bazı nedenleri, iki nedenden dolayı memnuniyetle karşılanacaktır. İlk olarak, cevaplar tek başına durabildiğinde en iyisidir. İkincisi, bu makale "sonsuzluk mahallesinde" yaklaşımın kalitesi hakkında belirsiz bir şekilde yazmaktadır: "çok doğru" ne kadar doğrudur? (Bunu dolaylı olarak iyi hissediyorsunuz, ancak tüm ilgili okuyuculardan beklenecek çok şey var.) Belirtilen ".00035" değeri burada işe yaramaz.
whuber

Teşekkürler. Bunu yazmakta fark yaratan TeX'i kullanmak için Javascript tabanlı bir destek olduğunu fark etmedim.
Yineleyici

1
Bu arada, bu yaklaşımın Wikipedia referansı bozuldu. Mathematica, göreceli hatanın (1 - yaklaşık (x) / erf (x)), . 2exp(x2+3(π4)2/(8(π3)))
whuber

@whuber, bunun için Mathematica kodunu gönderebilir misiniz? :) Mathematica'yı 15 yıldan fazla bir süredir görmedim ve bu tür bir amaç için asla.
Iterator

Ayrı bir cevapta yayınladım.
whuber
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.