44 votos

Aproximación de la función de error erf mediante funciones analíticas

El Función de error

$\mathrm{erf}(x)=\frac{2}{\sqrt{\pi}}\int_0^x e^{-t^2}\,dt$

aparece en muchos contextos, pero no se puede representar con funciones elementales .

Lo he comparado con otra función $f$ que también comienza linealmente, tiene $f(0)=0$ y converge contra el valor constante 1 rápidamente, a saber:

$\tanh{(x)} = \frac {e^x - e^{-x}} {e^x + e^{-x}}$ .

Sorprendentemente para mí, descubrí que nunca difieren en más de $|\Delta f|=0.0812$ y convergen entre sí con una rapidez exponencial.

Considero que $\tanh{(x)}$ para ser la función algo más bonita, y por eso quería encontrar una aproximación a $\text{erf}$ con "bonitas funciones" mediante una expresión corta. He intentado "naturalmente"

$f(x)=A\cdot\tanh(k\cdot x^a-d)$

Cambiar $A=1$ o $d=0$ por sí sola hace que la aproximación sea mala y el exponente $a$ es un poco difícil de tratar. Sin embargo, descubrí que para $k=\sqrt{\pi}\log{(2)}$ la situación "mejora". He conseguido que $k$ por el requisito de que la "norma" dada por

$\int_0^\infty\text{erf}(x)-f(x)dx,$

es decir, la diferencia de las áreas de las funciones, debe valer. Con este valor, la máxima diferencia de valores cae incluso por debajo de $|\Delta f| = 0.03$ . Y sea cual sea la elección de los límites de integración para un intervalo, la diferencia de área no es más que $0.017$ .

enter image description here

Desde el punto de vista numérico y en relación con una escala unitaria, las funciones $\text{erf}$ y $\tanh{(\sqrt{\pi}\log{(2)}x)}$ son esencialmente los mismos.


Mi pregunta es si puedo encontrar, o si se conocen, sustituciones de esta función no elemental en términos de las elementales. En el sentido anterior, es decir, la aproximación es compacta/recordable mientras que los valores son aún mejores, desde un punto de vista numérico.

El propósito es, por ejemplo, que si veo en algún sitio que para un cálculo tengo que integrar erf, pueda pensar "oh, sí, eso es quizás complicado, pero dentro de los límites de $10^{-3}$ utilizar, por ejemplo $\tanh(k\cdot x)$ es una aproximación increíblemente precisa".

1 votos

0 votos

Se trata de una aproximación muy práctica para la que la inversión también es bastante útil. Gracias.

1 votos

El stackexchange relacionado que encontré fue esclarecedor: math.stackexchange.com/questions/1892553/

14voto

Ron Gordon Puntos 96158

Depende de la precisión que necesites y en qué intervalo. Parece que te conformas con unos pocos porcentajes. Hay una aproximación en Abromowitz & Stegun que da $\text{erf}$ en términos de un polinomio racional por una gaussiana sobre $[0,\infty)$ a $\sim 10^{-5}$ precisión.

Por si te interesa, en la siguiente columna, hay una serie para erf de un número complejo que es exacta a $10^{-16}$ ¡error relativo! He utilizado esto en mi trabajo y he obtenido una precisión increíble con un solo término en la suma.

0 votos

¿Sabes por casualidad cuáles son las integrales de esas aproximaciones (del infinito negativo al positivo)? Lo pregunto para los casos en los que hay que evitar que el área total pase de 1.

6 votos

Hola. Siguiendo su enlace a Abromowitz & Stegun se puede leer que tomaron prestadas esas aproximaciones de Hasting: Aproximación para ordenadores digitales Pero tanto Hastings como A&S no explican cómo obtener esas aproximaciones. ¿Sabe usted cómo hacerlo o dónde se ha hecho? Gracias.

1 votos

Hola, estoy un poco confundido, ya que, siguiendo el enlace, me lleva a la página de un profesor MacDonald, sin mención de un artículo de Abromowitz y Stegun. ¿Ha cambiado el enlace? En caso afirmativo, ¿podría proporcionarme uno actualizado?

10voto

hoon Puntos 31

Una distribución logística $F$ -- que puede expresarse como una tangente hiperbólica reescalada, puede aproximarse a la función de distribución normal $\Phi$ . Asimismo, su función inversa -- la función "logit" $F^{-1}$ -- se puede reescalar para aproximar la CDF normal inversa -- la función "probit" $\Phi^{-1}$ .

En comparación, la distribución logística tiene colas más gruesas (lo que puede ser deseable). Mientras que la FCD y la FCD inversa de la distribución normal ("probit") no pueden expresarse mediante funciones elementales, las expresiones de forma cerrada para la FCD de la distribución logística y su inversa se derivan fácilmente y se comportan como funciones algebraicas elementales.

La distribución logística surge de la ecuación diferencial $\frac{d}{dx}f(x) = f(x)(1-f(x))$ . Intuitivamente, esta función se suele utilizar para modelar un proceso de crecimiento en el que la tasa se comporta como una curva de campana.

En comparación, la distribución normal surge de la siguiente ecuación diferencial: $ \frac{d \,f(x)}{dx}=f(x)\frac{(\mu-x)}{\sigma^2}$ ). La distribución normal se utiliza habitualmente para modelar procesos de difusión. Por ejemplo, un proceso de Wiener es un proceso estocástico que tiene incrementos independientes distribuidos normalmente con media $\mu$ y la varianza $\sigma^2$ . En el límite, se trata de un movimiento browniano.

Curiosamente, la distribución logística surge en un proceso físico análogo al movimiento browniano. El "Distribución límite de un movimiento aleatorio amortiguado de velocidad finita descrito por un proceso telegráfico en el que los tiempos aleatorios entre cambios de velocidad consecutivos tienen distribuciones exponenciales independientes con parámetros linealmente crecientes".

Obsérvese que la FCD de la distribución logística $F$ puede expresarse mediante la función tangente hiperbólica:

$F(x;\mu ,s)={\frac {1}{1+e^{{-{\frac {x-\mu }{s}}}}}}={\frac 12}+{\frac 12}\;\operatorname {Tanh}\!\left({\frac {x-\mu }{2s}}\right)$

Dado que la varianza de la distribución es ${\tfrac {s^{2}\pi ^{2}}{3}}$ la distribución logística puede escalarse para aproximarse a la distribución normal multiplicando su varianza $\frac{3}{\pi ^2}$ . La aproximación resultante tendrá los mismos primeros y segundos momentos que la distribución normal, pero tendrá una cola más gruesa (es decir, "platocurótica").

También, $\Phi$ está relacionada con la función de error (y su complemento) por: $\Phi (x)={\frac {1}{2}}+{\frac {1}{2}}\operatorname {erf} \left(x/{\sqrt {2}}\right)={\frac {1}{2}}\operatorname {erfc} \left(-x/{\sqrt {2}}\right)$

La principal ventaja de aproximar la normal con la distribución logística es que la FCD y la FCD inversa pueden expresarse fácilmente mediante funciones elementales. Varios campos de la ciencia aplicada utilizan esta aproximación.

Sin embargo, la principal desventaja es el error de estimación. El error absoluto máximo para la función logística escalada y la FCD normal es $0.0226628$ para $X = \pm 0.682761$ . Además, los errores máximos de la función logística inversa (logit) y de la función probit están limitados a $.0802364$ en la región $[-0.841941,0.841941]$ pero se vuelven asintóticamente grandes fuera de ese rango. Es importante señalar que estas funciones se comportan de manera muy diferente en "las colas".


Así, para una distribución normal estándar con $\mu =0$ y $\sigma =1$ : $$\operatorname{erf}(\frac{x}{\sqrt{2}}) \approx \operatorname{Tanh}\left(\frac{x \, \pi}{2 \sqrt{3}} \right) \equiv \frac{e^{\frac{\pi\,x}{\sqrt{3}}}-1}{e^{\frac{\pi\,x}{\sqrt{3}}}+1} $$

$$\operatorname{erf}(x) \approx \operatorname{Tanh}\left(\frac{x \, \pi}{ \sqrt{6}} \right) \equiv \frac{e^{\pi\,x\frac{2}{\sqrt{3}}}-1}{e^{\pi\,x\frac{2}{\sqrt{3}}}+1} $$

$$\Phi \left( x \right) \approx \frac{1}{2} + \frac{1}{2} \operatorname{Tanh} \left( \frac{\pi \, x}{2 \sqrt{3}} \right) $$

Y fácilmente, así: $$x \mapsto \Phi^{-1}\left(p\right) \approx -\frac{2\sqrt{3}\operatorname{ArcTanh}\left( 1-2p \right)}{\pi}$$


Mathematica para analizar los errores:

Definir:

normsdistApprox[X_] = (1/2 + 1/2 Tanh[(\[Pi] X)/(2 Sqrt[3])]) 
normsinvApprox[p_] = X /. Solve[ p == normsdistApprox[X]  , X][[1]]
normalPDFApprox = D[normsdistApprox[X], X]

Trama:

Plot[{CDF[NormalDistribution[], X], normsdistApprox[X]}, {X, -5, 5}, 
 PlotLabel -> "Logistic Approximation to Normal CDF", 
 PlotLegends -> "Expressions", ImageSize -> 600]

Plot[{Abs[CDF[NormalDistribution[], X] - normsdistApprox[X] ]}, {X, 0,
   5}, PlotLabel -> 
  "Error of the Logistic Approximation to the Normal CDF", 
 ImageSize -> 600]

Plot[{InverseCDF[NormalDistribution[0, 1], p], normsinvApprox[p]}, {p,
   0, 1}, PlotLabel -> 
  "Logistic Approximation to the Inverse Normal CDF (Probit \
Function)", PlotLegends -> "Expressions", ImageSize -> 600]

Plot[{InverseCDF[NormalDistribution[0, 1], p] - 
   normsinvApprox[p]}, {p, 0, 1}, 
 PlotLabel -> 
  "Error of the Logit Approximation to the Inverse Normal CDF (Probit \
Function)", PlotLegends -> "Expressions", ImageSize -> 600]

enter image description here

enter image description here

enter image description here

enter image description here

Por último, dar los errores máximos:

FindMaximum[Abs[CDF[NormalDistribution[], X] - normsdistApprox[X]], X]

FindMaximum[{Abs[
   InverseCDF[NormalDistribution[0, 1], p] - normsinvApprox[p]], 
  p >= 1*10^-2, p <= 1 - 1 *10^-2}, p]

FindMaximum[{Abs[
   InverseCDF[NormalDistribution[0, 1], p] - normsinvApprox[p]], 
  p >= 1*10^-16, p <= 1*10^-2}, p]

Fuera:

{0.0226628, {X -> 0.682761}}

{0.0802364, {p -> 0.841941}}

{12.032, {p -> 1.*10^-16}}

9voto

jlupolt Puntos 369

Sospecho que la razón por la que el $\tanh x$ solución "funciona" tan bien es porque resulta ser el segundo orden Aproximación de Pade en $e^x$ . por desgracia, las aproximaciones de Pade de orden superior no parecen funcionar tan bien. Otra cosa que podrías hacer es intentar aproximar $\text{erf}(x)$ sólo en $(-3,3)$ y asumir que es $\pm 1$ en todos los demás lugares.

7voto

Robert Puntos 121

He señalado esta estrecha correspondencia en la sección 2.4 de L. Ingber, ``Mecánica estadística de las interacciones neocorticales. I. Basic formulation,'' Physica D 5, 83-107 (1982). [ URL http://www.ingber.com/smni82_basic.pdf ]

6voto

mcmayer Puntos 1

Además de las respuestas anteriores, hay que tener en cuenta dos cosas que pueden ser importantes. Ambas están relacionadas con el hecho de que, dependiendo de su aplicación, la aproximación puede no ser tan buena como parece. Esto puede llevarte a elegir otras aproximaciones, como las ya mencionadas.

En primer lugar, el comportamiento de la cola del $\mathrm{erf}$ y $\tanh$ funciones es muy diferente. Asintóticamente $\mathrm{erf}$ se comporta como $e^{-x^2}$ mientras que $\tanh$ se comporta como $e^{-x}$ . A grandes rasgos, un evento de uno en 100 años en la distribución normal se convierte en un evento de uno en 10 años en la distribución $\tanh$ aproximación - esto podría importar.

Otra cosa que hay que tener en cuenta es que los valores de $\mathrm{erf}$ funciones normalmente significan probabilidades. Pero las diferencias de probabilidades no son cantidades significativas. Por lo tanto, dependiendo de su aplicación, otra medida de similitud puede ser más apropiada, por ejemplo la divergencia de Kullback Leibler $-\left[(p\log{q}+(1-p)\log(1-q)\right]$ , donde $p=\mathrm{erf}(\dots)$ y $q=\tanh(\dots)$ .

Como nota al margen: se pueden obtener aproximaciones igualmente buenas con menos operaciones uniendo dos $e^{-x}$ funciones, por ejemplo $f(x)=\mathrm{sgn(x)}\,e^{-\alpha|x|}$ .

0 votos

Sí. La divergencia es especialmente importante con las pequeñas $x$ .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X