1 votos

¿Debe fijarse la semilla en la previsión de los rendimientos en un MCMC

Supongamos que estamos estimando un modelo lineal utilizando una técnica de Monte Carlo de cadena de Markov, como un muestreador de Gibbs, extrayendo de los posteriors en un marco de Bayes. Supongamos que la muestra completa de datos que tenemos es del tiempo $t = 1, \dots,\tau\dots, T$ y queremos pronosticar los rendimientos en un período futuro utilizando una ventana recursiva que comienza en el tiempo $t = \tau$ hasta el momento $t = T$ . Hemos entrenado el modelo de tiempo $t=1$ al tiempo $t=\tau$ entonces queremos pronosticar los rendimientos fuera de la muestra en el momento $t=\tau+1$ :

\begin{equation} y_{\tau +1} = \beta' \mathbf{x}_\tau + \sigma \varepsilon_{\tau + 1}, \; \; \varepsilon_{\tau + 1} \sim \mathcal{N}(0,1) \end{equation}

Cuando probé esto sin establecer la semilla en cada período el término de error $\varepsilon_{\tau+1}$ era tan estocástico a través de la $I$ iteraciones del algoritmo MCMC que $y_{\tau+1}$ era esencialmente un paseo aleatorio. Cuando establecí la semilla en cada período de tal manera que el $I$ iteraciones en el muestreador de Gibbs utilizaron el mismo $\varepsilon_{\tau+1}$ Encontré resultados mucho mejores en términos de RMSFE.

¿Debemos establecer la semilla en el generador de números aleatorios en cada período $\tau$ , de tal manera que todos los $I$ iteraciones de evaluación de $y_{\tau+1}$ utilizan el mismo término de error $\varepsilon_{\tau+1}$ al calcular esta previsión?

2voto

Vitalik Puntos 184

Tengo entendido que el consejo estándar es seleccionar aleatoriamente un valor de semilla, y luego mantener esa semilla para todo su análisis. Esto permite que el mismo código informático dé resultados idénticos cada vez.

Véase, por ejemplo, el Manual de Stata :

Las funciones de generación de números aleatorios de Stata, como runiform() y rnormal(), no producen realmente números aleatorios. Estas funciones son algoritmos deterministas que producen números que pueden pasar runiform() produce números que pueden pasar por extracciones independientes de una distribución rectangular sobre[0,1); rnormal()produce números que pueden pasar por extracciones independientes de N(0,1). Las funciones de números aleatorios de Stata se llaman formalmente Las secuencias que producen estas funciones están determinadas por la semilla están determinadas por la semilla, que es sólo un número y que se fija en 123456789 cada vez que se lanza Stata. ... Si se registra la semilla que se establece, los resultados pseudoaleatorios como resultados pseudoaleatorios, como los resultados de una simulación o los valores imputados de mi imputación, pueden ser reproducirse más tarde. Lo que hagas después de poner la semilla, si se pone la semilla al mismo valor y se repite lo que se hizo, se obtendrán obtendrá los mismos resultados ... No importa realmente cómo siempre que no haya un patrón obvio en las semillas que se coloquen siempre que no haya un patrón obvio en las semillas que se coloquen y que no se coloquen demasiado a menudo durante una sesión. sesión

Sin embargo, si se utiliza la paralelización para hacer muchas simulaciones separadas, hay que asegurarse de no utilizar la misma semilla, o una semilla basada en el tiempo, en cada nodo:

Sembrar correctamente su generador. Incluso el moderno Mersenne Twister tuvo problemas al principio porque los autores habían descuidado la cuestión de la siembra adecuada..... Esta regla es VITAL si vas a ejecutar simulaciones paralelas en un clúster Beowulf, por ejemplo. Esta regla es VITAL si vas a ejecutar simulaciones paralelas en un clúster Beowulf, por ejemplo. La forma más sencilla de sembrar un RNG es tomar algo como la hora actual, por ejemplo utilizando la función time() que se encuentra en Unix y en la mayoría de las bibliotecas C, que que devuelve un entero de 32 bits que da el número de segundos desde el 1 de enero de 1970. 1970. ...Cientos de trabajos en diferentes nodos comenzarán casi exactamente a la misma hora -por lo tanto muchos de sus trabajos estarán con exactamente la misma semilla y, por lo tanto, los que tienen la misma misma semilla generarán exactamente los mismos resultados (asumiendo que su código no tenga errores).

Buenas prácticas en la generación de números (pseudo) aleatorios para aplicaciones bioinformáticas

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X