6 votos

Generar números aleatorios a partir de una trozos distribución exponencial

Me gustaría generar un número aleatorio a partir de una trozos distribución exponencial. Considero que la escala de tiempo se divide en $J$ intervalos de con límites $(s_{j-1},s_j]$$j=1,...,J$, y las tasas correspondientes a $\lambda_j$.

Teniendo en cuenta la memoryless propiedad de la estándar de la distribución exponencial, es correcto para generar el número aleatorio con el procedimiento siguiente para $i=1,...,J$?

  1. Generar $x_i$ a partir de un estándar de la distribución exponencial con una tasa de $\lambda_i$;
  2. Si $x_i<s_i$ el número aleatorio se obtiene como $y_i<x_i+s_{i-1}$, de lo contrario, continúe con la próxima $i$.

Además, el PDF de este trozos distribución exponencial es dada por: $$ k(t)=\prod_{h=1}^{j-1}(e^{-\lambda_h(s_h-s_{h-1})})(\lambda_j)(e^{-\lambda_j(t-s_{j-1})})I(s_{j-1}<t\leq s_j) $$

4voto

AdamSane Puntos 1825

Si usted sabe de los parámetros, y por lo tanto conoce el área de cada segmento, entonces usted puede elegir un segmento al azar de la distribución multinomial sobre $[1,2,\ldots,J]$.

Simplemente necesitas muestra de un (desplazado) exponencial truncada apropiado para ese segmento.

Hay una variedad de enfoques para la exponencial truncada, dependiendo de sus necesidades (velocidad, facilidad de generación, cualquiera de los hechos conocidos acerca de la probable ancho del intervalo en relación a la media de la untruncated exponencial, y así sucesivamente).

Si la velocidad es importante, y la distribución no cambia de dibujar para dibujar, uno podría, por ejemplo, el uso de un zigurat tipo de enfoque. O uno puede generar un exponencial truncada por tomar menos el registro de un uniforme en un subconjunto apropiado de la unidad de intervalo.

La generación de una exponencial truncada a través de un rechazo de enfoque a lo largo de las líneas que sugieren (yo no comprobar su pseudo-código era correcto pero la idea básica, ciertamente, puede ser hecho para trabajar) puede, en algunas circunstancias, ser extremadamente ineficiente.


Mirando más de cerca su pseudocódigo creo que es incorrecta en varios aspectos.

Tenga en cuenta que el intervalo de $s_{i-1}$ $s_i$es de longitud $s_i-s_{i-1}$, por lo que está truncada su generados exponencial en $s_i-s_{i-1}$ antes de la adición de $s_{i-1}$ a producir su valor aleatorio en el intervalo. Además, creo que su expresión después de que "el número aleatorio se obtiene como" debe tener "=" en lugar de "<".

4voto

Siguiendo sus sugerencias me decidí a utilizar la inversa de la CDF método (más simple).

Sé que las tasas de riesgo son constantes en el tiempo-intervalos $$ \lambda(t) = \begin{cases} \lambda_1, & \mbox{if } 0<t\leq t_1 \\ \lambda_2, & \mbox{if } t_1<t\leq t_2 \\ \vdots & \vdots\\ \lambda_J, & \mbox{if } t_{J-1}<t\leq t_J \end{casos} $$

que la función de riesgo acumulativa está dada por

$$ \Lambda(t) = \begin{cases} \lambda_1 t, & \mbox{if } 0<t\leq t_1 \\ \lambda_1 t_1+\lambda_2(t-t_1), & \mbox{if } t_1<t\leq t_2 \\ \vdots & \vdots\\ \sum_{i=1}^{J-1}\lambda_i(t_i-t_{i-1})+\lambda_J(t-t_{J-1}), & \mbox{if } t_{J-1}<t\leq t_J \end{casos} $$

y que el acumulado de función de densidad está dada por $F(t)=1-e^{-\Lambda(t)}$.

Para la generación de $u\sim U(0,1)$ (simulación de la CDF valor) es posible obtener un número ($t$) que sigue una trozos distribución exponencial. Más en los detalles, es posible utilizar la inversa de la función de riesgo acumulativa (como sigue), el cálculo de $x=-\ln(1-u)$,

$$ t=\Lambda^{-1}(x) = \begin{cases} \frac{x}{\lambda_1}, & \mbox{if } 0<x\leq \lambda_1t_1 \\ t_1+\frac{x-\lambda_1 t_1}{\lambda_2}, & \mbox{if } \lambda_1t_1<x\leq \lambda_1t_1+\lambda_2(t_2-t_1) \\ \vdots & \vdots\\ t_{J-1}+\frac{\sum_{i=1}^{J-1}\lambda_i(t_i-t_{i-1})}{\lambda_J}, & \mbox{if } \sum_{i=1}^{J-1}\lambda_i(t_i-t_{i-1})<x\leq \sum_{i=1}^{J}\lambda_i(t_i-t_{i-1}) \end{casos} $$

La única cosa que falta es cómo tratar a los valores de $x>\sum_{i=1}^{J}\lambda_i(t_i-t_{i-1})$.

¿Está usted de acuerdo que este procedimiento para generar los números aleatorios (piecewise exponencialmente distribuida) es mejor?

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