如何计算与异常大的Z分数相关的概率?


14

用于网络主题检测的软件包可以返回非常高的Z分数(我见过的最高Z分数是600,000+,但是Z分数超过100的情况非常普遍)。我打算证明这些Z分数是伪造的。

巨大的Z得分对应于极低的关联概率。相关概率的值在正态分布的Wikipedia页面(以及可能的每个统计资料教科书)上给出,Z分数最高为6。所以...

问题:如何计算n到1,000,000之间的误差函数?1erf(n/2)

我特别希望已经实施了此软件包(如果可能)。到目前为止,我发现的最好的是WolframAlpha,它设法以n = 150(此处)进行计算。


6
也许这不是正确的问题。这些z分数是虚假的,因为它们假设正态分布比实际分布要好得多。这有点像假设牛顿力学好于小数点后60万位。如果您确实只对计算极值的erf感兴趣n,那么此问题属于math.SE,而不是此处。
ub

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

感谢枢机主教,这个界限似乎很准确。你为什么不回答呢?
道格拉斯·斯通·斯通

@道格拉斯:如果您仍然有兴趣,我可以在第二天左右整理一些内容,并将其发布为更完整的答案。
主教

1
好吧...我认为值得将其添加为答案。可能范围是概率+统计中的常识,但我不知道。同样,这里的Q和A不仅用于OP。
道格拉斯·斯通·斯通

Answers:


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 / ERFCX - 1 X X 0 X 5.8x f(x)/erfc(x)1xx0x5.8

情节1

超过5.3左右后,计算将变得不稳定,并且无法传递5.8以上的一位有效数字。这不足为奇:推动了双精度算术的极限。因为没有证据表明较大的的相对误差会很小,所以我们需要做得更好。EXP - 5.8 210 - 14.6 Xxexp(5.82)1014.6x

使用扩展算术(使用Mathematica)执行计算可以改善我们对发生的情况的了解:

剧情2

误差随着迅速增加,并且没有平稳的迹象。过去左右,这种近似甚至不提供的信息的一个可靠的数字!x = 10xx=10

但是,该图开始看起来呈线性。我们可能会猜测相对误差与成正比。(从理论上讲这是有道理的:显然是一个奇数函数,而显然是偶数,因此它们的比率应该是一个奇数函数。因此,我们希望相对误差(如果它增加)表现得像一个奇数幂。)这促使我们研究相对误差除以。等效地,我选择检查,因为希望它应该具有恒定的极限值。这是它的图:ERFC ˚F X X X ERFCX / ˚F X 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

作为近似的第一个细化。当确实很大时(大于几千),这种近似值很好。因为它对于到左右的有趣参数范围仍然不够好,所以让我们迭代该过程。这次,反向相对误差-具体来说,表达式对于大,其行为应类似于(基于先前的奇偶性考虑) 。因此,我们乘以并找到下一个极限:5.3 2000 1 erfcx / f 1x 1 / x 2 x x 2x5.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.

误差与成正比。输入是比例常数,因此我们绘制:x6x6(1erfc(x)/f3(x))

剧情4

它迅速接近2660.59附近的极限值。使用近似值,我们获得的估计值,对于所有其相对精度均优于。一旦超过20左右,我们就有3个有效数字(或随着变大而增加)。核对一下,这是一张表格,将正确的值与到之间的近似值进行比较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

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%exp(x2)/(xπ)1.86003810434298


1
+1这是一个很好的答案,以某种方式我以前从未遇到过。
变形虫说莫妮卡(Reonica)

15

一个简单的上限

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同意。非常好,我感谢其他答案的链接。
Iterator

5

您可以使用更简单的函数来近似它- 有关更多信息,请参见此Wikipedia部分。基本的近似值是erf(x)sgn(x)1exp(x24/π+ax21+ax2)

文章具有该部分的错误链接。参考的PDF可以在Sergei Winitzki的文件中找到 -或在此链接中找到


1
出于某些原因,欢迎对此进行一些放大。首先,最好是答案可以独立存在。其次,该文章含糊地写了“在无穷邻域中”的近似质量:“非常准确”到底有多精确?(您对此有隐含的理解,但是所有有兴趣的读者都可以期望它。)在这里,“。00035”的规定值没有用。
ub

谢谢。我没注意到有使用TeX的基于Java的支持,这在写出来方面有所不同。
Iterator

1
2exp(x2+3(π4)2/(8(π3)))

@whuber,您可以为此发布Mathematica代码吗?:)我已经15年没有看过Mathematica了,也从来没有见过这种目的。
Iterator

我在单独的回复中发布了它。
ub
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.