12 votos

Generación de números aleatorios Log-Cauchy

Necesito extraer números aleatorios de una distribución log-cauchy que tiene densidad: $$f(x;\mu,\sigma)=\frac{1}{x\pi\sigma\left[1+\left(\frac{ln(x)-\mu}{\sigma}\right)^2\right]}\qquad x>0.$$ ¿Alguien puede ayudarme o indicarme un libro/documento que pueda mostrarme cómo hacerlo?

15voto

Niall Puntos 51

Una variable $X$ tiene una distribución log-cauchy si $\log(X)$ tiene una distribución de Cauchy. Por lo tanto, sólo tenemos que generar variables aleatorias cauchy y exponerlas para obtener algo que se distribuya log-cauchy.

Podemos generar a partir de la distribución de Cauchy utilizando muestreo por transformación inversa que dice que si se introducen uniformes aleatorios en la FCD inversa de una distribución, entonces lo que se obtiene tiene esa distribución. La distribución de Cauchy con ubicación $\mu$ y escala $\sigma$ tiene CDF:

$$ F(x) = \frac{1}{\pi} \arctan\left(\frac{x-\mu}{\sigma}\right)+\frac{1}{2} $$

es sencillo invertir esta función para encontrar que

$$ F^{-1}(y) =\mu + \sigma\,\tan\left[\pi\left(y-\tfrac{1}{2}\right)\right] $$

Por lo tanto, si $U \sim {\rm Uniform}(0,1)$ entonces $Y = \mu + \sigma\,\tan\left[\pi\left(U-\tfrac{1}{2}\right)\right]$ tiene una distribución de Cauchy con ubicación $\mu$ y escala $\sigma$ y $\exp(Y)$ tiene una distribución log-cauchy. Algunos R para generar desde esta distribución (sin usar rcauchy :))

rlogcauchy <- function(n, mu, sigma)
{
    u = runif(n)
    x = mu + sigma*tan(pi*(u-.5))
    return( exp(x) ) 
}

Nota: Como la distribución de Cauchy es de colas muy largas, al exponerlas en un ordenador se pueden obtener valores numéricamente "infinitos". No estoy seguro de que se pueda hacer algo al respecto.

También hay que tener en cuenta que si se hiciera un muestreo por transformada inversa utilizando la función cuantil log-cauchy directamente, se tendría el mismo problema, ya que, después de hacer el cálculo, en realidad se termina con el acto mismo - $\exp \left( \mu + \sigma\,\tan\left[\pi\left(U-\tfrac{1}{2}\right)\right] \right)$

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