误差函数之间的区别

Difference between Error functions

在 Mathematica 中有一个选项 see this question 可以计算两个误差函数之间的差异。但是,我还没有在 R 中发现任何类似的东西。

我需要计算 Erf(1604.041) - Erf(3117.127) 之类的东西并得到一个非零值...

你可以接近@James评论中给出的4e-1117421的结果。 首先,可以在 R 中像这样计算误差函数:

1 - 2 * pnorm(-sqrt(2) * x)

但是,由于浮点精度,这会给你数字零。幸运的是,pnorm可以return登录p-values。然后您可以使用任意精度数字对它取幂:

library(Rmpfr)
2 * exp(mpfr(pnorm(-sqrt(2) * 1604.041, log.p = TRUE), precBits = 32)) -
  2 * exp(mpfr(pnorm(-sqrt(2) * 3117.127, log.p = TRUE), precBits = 32)) 
#1 'mpfr' number of precision  32   bits 
#[1] 4.2826176801e-1117421

(请注意,您只能获得 log-p-values 的浮点精度。)

但是,我想知道在哪种应用程序中需要这样的精度。它本质上是一个零值。

编辑: 我刚刚发现 Rmpfr 提供了互补误差函数的实现。你可以简单地这样做:

erfc(mpfr(3117.127, precBits = 32)) - erfc(mpfr(1604.041, precBits = 32))
#1 'mpfr' number of precision  32   bits 
#[1] -4.2854514871e-1117421