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)

  1. Generar \(J\) con distribución \(P\left( J=j \right) = p_j\).

  2. 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):

  1. Generar \(U,V \sim \mathcal{U}(0, 1)\).

  2. Si \(U<0.5\) devolver \(X= -\ln( 1-V )/\lambda\).

  3. 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)

  1. Generar \(Y\sim h\).

  2. 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.