4.4 Método de composición (o de simulación condicional)
En ocasiones la densidad de interés se puede expresar como una mixtura discreta de densidades: \[f(x)=\sum_{j=1}^{k}p_{j}f_{j}(x)\] con \(\sum_{j=1}^{k}p_j=1\), \(p_j\geq 0\) y \(f_j\) densidades (sería también válido para funciones de distribución, incluyendo el caso discreto).
Algoritmo 4.6 (simulación de una mixtura discreta)
Generar \(J\) con distribución \(P\left( J=j \right) = p_j\).
Generar \(X\sim f_J\).
Ejemplo 4.6 (distribución doble exponencial)
A partir de la densidad de la distribución doble exponencial: \[f(x) =\frac{\lambda }{2}e^{-\lambda \left\vert x\right\vert } \text{, }\forall x\in \mathbb{R},\] se deduce que: \[f(x) = \frac{1}{2}f_{1}(x) + \frac{1}{2}f_{2}(x)\] siendo: \[f_{1}(x) = \left\{ \begin{array}{ll} \lambda e^{-\lambda x} & \text{si } x\geq 0 \\ 0 & \text{si } x<0 \end{array} \right., \ f_{2}(x) = \left\{ \begin{array}{ll} \lambda e^{\lambda x} & \text{si } x<0 \\ 0 & \text{si } x\geq 0 \end{array} \ \right.\]
El algoritmo resultante sería el siguiente (empleando dos números pseudoaleatorios uniformes, el primero para seleccionar el índice y el segundo para generar un valor de la correspondiente componente mediante el método de inversión):
Generar \(U,V \sim \mathcal{U}(0, 1)\).
Si \(U<0.5\) devolver \(X= -\ln( 1-V )/\lambda\).
En caso contrario devolver \(X= \ln(V)/\lambda\).
Este método está implementado en la función rdexp()
del paquete simres
(fichero ddexp.R).
Observaciones:
En ocasiones se hace un reciclado de los números aleatorios (solo se genera una uniforme, e.g. \(V=2(U-0.5)\) si \(U\in (0.5,1)\)).
En ciertas ocasiones por comodidad, para simular una muestra de tamaño \(n\), se simulan muestras de tamaño \(np_{i}\) con densidad \(f_{i}\) y se combinan aleatoriamente.
Otro ejemplo de una mixtura discreta es el estimador tipo núcleo de la densidad (ver e.g. la ayuda de la función density()
de R o la Sección 9.3).
Simular a partir de una estimación de este tipo es lo que se conoce como bootstrap suavizado.
En el caso de una mixtura continua tendríamos: \[f(x)=\int g(x|y)h(y)dy\]
Algoritmo 4.7 (simulación de una mixtura continua)
Generar \(Y\sim h\).
Generar \(X\sim g(\cdot |Y)\).
Este algoritmo es muy empleado en Inferencia Bayesiana y en la simulación de algunas variables discretas (como la Binomial Negativa, denominada también distribución Gamma-Poisson, o la distribución Beta-Binomial; ver Sección 5.7), ya que el resultado sería válido cambiando las funciones de densidad \(f\) y \(g\) por funciones de masa de probabilidad.