Generación de variables aleatorias

Contexto

En el contexto de la simulación de eventos discretos, generar variables aleatorias se refiere al proceso de obtener valores de variables que siguen distribuciones de probabilidad determinadas, de manera que los resultados sean inciertos pero estén sujetos a un patrón estadístico predefinido.

La simulación de eventos discretos implica modelar un sistema que evoluciona con el tiempo en pasos discretos, como en la simulación de sistemas de colas, cadenas de suministro, o procesos de fabricación. Durante la simulación, ciertos eventos ocurren en momentos aleatorios (por ejemplo, la llegada de un cliente a una tienda o el tiempo entre fallas de una máquina). Para modelar estos eventos de forma realista, es necesario simular esas incertidumbres usando variables aleatorias.

Ejemplo:

Si estamos simulando el tiempo entre llegadas de vehículos a una estación de peaje y sabemos que estas llegadas siguen una distribución exponencial (lo cual es común en procesos de Poisson), la generación de una variable aleatoria sería el proceso de generar un número aleatori que siga esa distribución exponencial. Esto se haría usando un generador de números aleatorios que proporcione valores con las características estadísticas deseadas (por ejemplo, una media de 5 minutos entre llegadas).

En resumen, generar variables aleatorias en la simulación de eventos discretos significa crear valores que simulen el comportamiento estocástico (aleatorio) del sistema, de acuerdo con las distribuciones de probabilidad que caracterizan los tiempos de espera, los tiempos entre eventos, o cualquier otro aspecto del proceso que se esté modelando.

Para la generación de variables aleatorias existen diversos métodos, entre los que se encuentran:

  • Transformada inversa.

  • Aceptación rechazo.

  • Convolución.

  • Transformada directa.

Transformada inversa.

Para generar variables aleatorias siguiendo el proceso de la transformada inversa se deben seguir los siguientes pasos:

0. \(X\) es una variable aleatoria contínua con función de densidad \(f(x)\), por lo tanto, se define la función de distribución acumulada como \(F(x)\) como se muestra en la Ecuación 1

\[\begin{align} F(x) = \int_{-\infty}^x f(t)~dt \end{align} \tag{1}\]

La función de distribución acumulada tiene las siguientes propiedades:

  • \(0 \leq F(x) \leq 1\)

  • \(\lim_{x\rightarrow\infty} F(x) =1\)

  • \(\lim_{x\rightarrow ~~-\infty} F(x) =0\)

  • Monótona no decreciente: si \(x_1 \leq x_2~~\rightarrow~~ F(x_1) \leq F(x_2)\)

1. Obtener la inversa \(F(x)^{-1}\) de \(F(x)\)

2. Generar una secuencia de \(n\) números aleatorios \(R_i\):

\[\begin{align} R_i = \{R_1, R_2,..., R_n\} \end{align}\]

3. Dado que:

\[\begin{align} R = F(x)~~ \rightarrow~~ x = F^{-1} (R) \end{align}\]

Entonces, dado \(R\), se pueden generar \(n\) variables aleatorias:

\[\begin{align} x_i = \{ F(x_1), F(x_2), F(x_3),..., F(x_n) \} \end{align}\]

Ejemplo 1: generador para variables aleatorias \(X \sim U(a,b)\):

Encuentre un generador para una variable aleatoria que sigue una distribución uniforme entre \(a\) y \(b\)

\[\begin{align} X \sim U(a,b) \end{align}\]

La función de densidad de probabilidad \(f(x)\) está dada por:

\[\begin{align} f(x) = \left\{ \begin{array}{lcc} \frac{1}{b-a} & si & a \leq x \leq b \\ \\ 0 & &dlc \end{array} \right. \end{align}\]

  1. Se halla la función de distribución acumulada \(F(x)\) de acuerdo a Ecuación 1,

\[\begin{align} F(x) = \int_{-\infty}^x f(t)~dt \end{align}\]

\(x\) está definida \(a \leq x \leq b\) por lo tanto:

\[\begin{align} F(x) = \int_{a}^x f(t)~dt \end{align}\]

Reemplazando la función de densidad \(f(x)\) se obtiene:

\[\begin{align} F(x) &= \int_{a}^x \frac{1}{b-a}~dt \\ \\ F(x) &= \frac{1}{b-a} \int_{a}^x ~dt \\ \\ F(x) &= \frac{1}{b-a}~t \Big |_a^x \\ \\ F(x) &= \frac{x}{b-a} - \frac{a}{b-a} = \frac{x-a}{b-a} \end{align}\]

Como \(R= F(x)\) y \(x = F^{-1}(R)\), se obtiene que:

\[\begin{align} R& = \frac{x-a}{b-a}\\ \\ x &= a + R(b-a) \end{align}\]

  1. Se genera una secuencia de números aleatorios \(R_i\) como se observa en la Tabla 1
Tabla 1: Secuencia \(R_i\)
\(i\) Secuencia \(R_i\)
1 0.2875775
2 0.7883051
3 0.4089769
4 0.8830174
5 0.9404673
6 0.0455565
7 0.5281055
8 0.8924190
9 0.5514350
10 0.4566147

Se usa el generador \(x = a + R(b-a)\) para variables aleatorias \(X \sim U(0,1)\) y con, por ejemplo, \(a=5\) y \(b=15\) y se obtienen las variables aleatorias que se muestran en la Tabla 2.

Tabla 2: Variables aleatorias \(X \sim U(5,15)\)
\(i\) Secuencia \(R_i\) Variable aleatoria \(x_i\)
1 0.2875775 7.875775
2 0.7883051 12.883051
3 0.4089769 9.089769
4 0.8830174 13.830174
5 0.9404673 14.404673
6 0.0455565 5.455565
7 0.5281055 10.281055
8 0.8924190 13.924190
9 0.5514350 10.514350
10 0.4566147 9.566147

Ejemplo 2 generador para variables aleatorias \(X \sim EXP(\lambda)\):

Encuentre un generador para una variable aleatoria que sigue una distribución exponencial:

\[\begin{align} X \sim EXP(\lambda) \end{align}\]

La función de densidad de probabilidad \(f(x)\) está dada por:

\[\begin{align} f(x) = \lambda e^{-\lambda~x};~~~ \lambda > 0;~~~ x \geq 0 \end{align}\]

  1. Se halla la función de distribución acumulada \(F(x)\) de acuerdo a Ecuación 1,

\[\begin{align} F(x) = \int_{-\infty}^x f(t)~dt \end{align}\]

\(x\) está definida \(0 \leq x \leq \infty\) por lo tanto:

\[\begin{align} F(x) = \int_{0}^x f(t)~dt \end{align}\]

Reemplazando la función de densidad \(f(x)\) se obtiene:

\[\begin{align} F(x) &= \int_{0}^x \lambda e^{-\lambda~t}~dt\\ \\ F(x) &= \lambda \int_{0}^xe^{-\lambda~t}~dt \end{align}\]

Se realiza sustitución simple:

\[\begin{align} u = \lambda~t \rightarrow du= \lambda~dt \rightarrow dt= \frac{1}{\lambda}du \end{align}\]

Los límites de integración quedan:

\[\begin{align} Si~t=0 \rightarrow u=0\\ \\ Si~t= \rightarrow u=\lambda~x \end{align}\]

Por lo tanto:

\[\begin{align} F(x) &= \lambda \int_{0}^xe^{-\lambda~t}~dt = \lambda \int_{0}^{\lambda~x} \frac{1}{\lambda}e^{-u}~du\\ \\ \\ \lambda \int_{0}^{\lambda~x} \frac{1}{\lambda}e^{-u}~du &= -e^{-u} \Big |_0^{\lambda~x}\\ \\ -e^{-u} \Big |_0^{\lambda~x} &= (-e^{-\lambda~x}) - (-e^{-0})\\ \\ F(x) &= 1-e^{-\lambda~x} \end{align}\]

Como \(R= F(x)\) y \(x = F^{-1}(R)\), se obtiene que:

\[\begin{align} R &= 1-e^{-\lambda~x}\\ \\ e^{-\lambda~x} &=1-R\\ \\ -\lambda~x &= ln(1-R)\\ \\ x &= -\frac{1}{\lambda} ln(1-R) \end{align}\]

  1. Se genera una secuencia de números aleatorios \(R_i\) como se observa en la Tabla 3
Tabla 3: Secuencia \(R_i\)
\(i\) Secuencia \(R_i\)
1 0.0895516
2 0.2105123
3 0.7329553
4 0.8521335
5 0.7883979
6 0.3319600
7 0.0824327
8 0.2855269
9 0.2375033
10 0.3852362

Se usa el generador \(x = -\frac{1}{\lambda} ln(1-R)\) para variables aleatorias \(X \sim EXP(\lambda)\) y con, por ejemplo, \(\lambda=2.5\) y se obtienen las variables aleatorias que se muestran en la Tabla 4.

Tabla 4: Variables aleatorias \(X \sim EXP(\lambda)\)
\(i\) Secuencia \(R_i\) Variable aleatoria \(x_i\)
1 0.0895516 0.0375272
2 0.2105123 0.0945484
3 0.7329553 0.5281356
4 0.8521335 0.7645783
5 0.7883979 0.6212191
6 0.3319600 0.1613629
7 0.0824327 0.0344118
8 0.2855269 0.1344840
9 0.2375033 0.1084628
10 0.3852362 0.1946068

Ejemplo 3 generador para variables aleatorias \(X \sim Triangular(a,b,c)\):

\[\begin{align} X \sim TRIANGULAR(a,b,c) \end{align}\]

La función de densidad de probabilidad \(f(x)\) está dada por:

\[\begin{align} f(x) = \left\{ \begin{array}{lcc} \frac{2(x-a)}{(b-a)(c-a)} & si & a \leq x \leq c \\ \\ \frac{2(b-x)}{(b-a)(b-c)}& si & c \leq x \leq b \\ \\ 0 & & dlc\end{array} \right. \end{align}\]

Se evaluará un caso particular, teniendo en cuenta que:

$$\[\begin{align} a&=0 \\ c&=1\\ b&= 2 \end{align}\]$$

Dado lo anterior, la función de densidad \(f(x)\) sería:

\[\begin{align} f(x) = \left\{ \begin{array}{lcc} x & si & 0 \leq x \leq 1 \\ \\ 2-x& si & 1 \leq x \leq 2 \\ \\ 0 & & dlc\end{array} \right. \end{align}\]

  1. Se halla la función de distribución acumulada \(F(x)\) de acuerdo a Ecuación 1,

\[\begin{align} F(x) = \int_{-\infty}^x f(t)~dt \end{align}\]

Si \(0 \leq x \leq 1\) se tiene:

\[\begin{align} F(x) &= \int_{-\infty}^x t~dt = \frac{t^2}{2} \Big|_0^x = \frac{x^2}{2} \end{align}\]

Si \(1 \leq x \leq 2\) se tiene que:

\[\begin{align} F(x) &= \frac{1}{2} + \int_1^x (2-t)dt = \frac{1}{2} + \left[ 2t - \frac{t^2}{2} \right]\Big|_1^x\\ \\ F(x) &= \frac{1}{2} + \left[ 2x - \frac{x^2}{2} - 2 + \frac{1}{2}\right] \\ \\ F(x) &= \frac{-x^2}{2}+2x-1 = 1- \frac{1}{2}(2-x)^2 \end{align}\]

Como \(R= F(x)\) y \(x = F^{-1}(R)\), para \(0\leq x \leq 1\) se obtiene que:

\[\begin{align} F(x) &= \frac{1}{2}x^2\\ \\ 2R &= x^2\\ \\ x &= \sqrt{2R} \end{align}\]

Para \(1\leq x \leq 2\) se obtiene que:

\[\begin{align} F(x) &= 1 - \frac{1}{2} (2-x)^2=R\\ \\ 1-R &= \frac{1}{2} (2-x)^2\\ \\ 2(1-R) &= (2-x)^2\\ \\ 2-x &= \pm \sqrt{2(1-R)}\\ \\ x &= 2 \pm \sqrt{2(1-R)} \end{align}\]

En conclusión, los generadores serían:

\[\begin{align} Si&~~ 0\leq R_i \leq 0.5 \rightarrow x = \sqrt{2R}\\ \\ Si&~~ 0.5\leq R_i \leq 1 \rightarrow x = 2 - \sqrt{2(1-R)} \end{align}\]

Si tomamos \(x = 2 + \sqrt{2(1-R)}\) se producirían variables aleatorias por fuera de \(b\).