Índice 1 úmeros Aletorios 1 11 Estimación por Monte Carlo de la media 1 1 Generación de úmeros Pseudoaleatorios para Simulación 1 11 Transformación de Box-Müller 1 Generar muestras de una PDF dada p(z) Proceso de Wiener 6 1 Distribución de Probabilidad para W (t) 7 otas de la sesión 3: 009/10/0 Aclaración sobre la notación utilizada para el proceso binomial: Dado: X t = t Θ τ Θ τ +1 con probabilidad p 1 con probabilidad 1-p X t = X t 1 + Θ t Es una ecuación en diferencias con un término estocástico Trayectoria 1: X (1) 0 = 0 X (1) 1 = Θ (1) 1 X (1) = Θ (1) 1 + Θ (1) X (1) Trayectoria : X () 0 = 0 X () 1 = Θ () 1 X () = Θ () 1 + Θ () X () Trayectoria M: 1 úmeros Aletorios X (M) 0 = 0 X (M) 1 = Θ (M) 1 X (M) = Θ (M) 1 + Θ (M) X (M) 11 Estimación por Monte Carlo de la media Se tienen M trayectorias: X (1) Para aproximar la media en tiempo t se aplica: X t = 1 M t, X () t M X (m) t },, X (M) t ( ) σ t µ t, M La variable aletoria X t se aproxima asintóticamente a la media real µ t y el término muestreo que se reduce con la raíz cuadrada del número de muestras 1 Generación de úmeros Pseudoaleatorios para Simulación = = = Θ (1) τ Θ () τ Θ (M) τ σ t M es el error de ormalmente las librerías de los lenguajes de programación contienen una rutina de generación de variables uniformes De este modo en ASI c se tiene la función rand que genera números pseudo aleatorios entre 0 y RAD MAX Según The ASI C, Brian WKernighan and Dennis Ritchie, : 1
Función rand en ASI C unsigned long int next = 1; int rand(void) next = next * 110351545 + 1345; return (unsigned int)(next / 65536) % 3768; } void srand(unsigned int seed) next = seed; } Como semilla inicial se suele utilizar un valor realmente aleatorio Aunque la generación de números pseudoaleatorios es determinista normalmente bastará con que los números estén no tengan correlaciones que introduzcan sesgos en los valores estimados en la simulación umerical Recipies recomienda aplicar aletorización adicional porque la calidad de los números aleatorios generados por la rutina de la librería en distintas plataformas puede ser muy dispar 11 Transformación de Box-Müller Permite generar muestras de una gaussiana (0, 1) a partir de muestras de una distribución uniforme: Dados u 1 (0, 1), u (0, 1) (independientes) z 1 = log(u 1 ) cos(πu ) z = log(u 1 ) sin(πu ) Donde z 1 (0, 1) y z (0, 1) t son independientes 1 Generar muestras de una PDF dada p(z) Se dispone de un generador de variables aleatorias con distribución uniforme U[0, 1] Es decir, Se quiere generar muestras de una pdf La distribución de probabilidad acumulada para z es: u U(0, 1) ρ(u) = 1 para 0 u 1 P (z) = p(z) z dz p(z ) De acuerdo con la propiedad de conservación de la probabilidad: ρ(u )du = p(z )dz ρ(u ) du dz = p(z ) por lo que P (z) = z dz p(z ) = u 0 dz ρ(u ) du dz = z = P 1 (u) u 0 du ρ(u )) = u
Es decir, a partir de la muestra de variables aleatorias U[0,1] de tamaño M u 1, u,, u M } se puede obtener z1 = P 1 (u 1 ), z = P 1 (u ),, z 1 = P 1 (u M ) } Transformación de variables uniformes a variables gausianas cdf(z) 00 0 04 06 08 10 4 0 4 z Para cada realización de la variable uniforme u es necesario encontrar z tal que: o lo que es lo mismo: P (z ) = u P 1 (u) = z Existen diversos métodos numéricos para encontrar la función P 1 a partir de P pero solo deberá ser usados en caso de no poder obtener una solución analítica 1 ewton Raphson Dada la función g(z) P (z) u se verifica que g(z ) = 0 La solución se aproxima por sucesivas iteraciones 3
TOL: tolerancia, cuando la diferencia entre el valor encontrado y el objetivo sea menor que la tolerancia el algoritmo termina MAX IT ERAT IOS: número máximo de iteraciones para terminar en caso de no haber solución z 0 : semilla u: valor aleatorio U[0, 1] Algorithm 1 ewton-raphson 1: z z 0 : niteration 0 3: repeat 4: niteration niteration + 1 5: dz P (z) u p(z) 6: z z dz 7: until ( dz < T OL) or (niteration > MAX IT ERAT IOS) 8: if niteration > MAX IT ERAT IOS then 9: warning( Maximum number of iterations reached without convergence ) 10: end if En general ewton-raphson converge rápidamente a la solución (localmente, convergencia cuadrática, MAX IT ERACIOES 50 100) Sin embargo, dependiendo de la semilla inicial, puede diverger o encontrar ceros distintos a los buscados Esto no suele se problema en el caso de las cdfs porque son monótonas crecientes (no tienen un máximo) A pesar de esto, puede que numéricamente, el denominador p(z) sea muy próximo a cero y el algoritmo diverja o no converja Búsqueda por Intervalos Es una búsqueda binaria en la que las entradas son: TOL: tolerancia, cuando la diferencia entre el valor encontrado y el objetivo sea menor que la tolerancia el algoritmo termina MAX ITERATIOS: número máximo de iteraciones para terminar en caso de no haber solución max, min: intervalo en el que se buscará u: valor aleatorio U[0, 1] Algorithm Búsqueda por Intervalos 1: z min+max : niteration 0 3: repeat 4: niteration niteration + 1 5: if u < P (z) then 6: max z 7: else 8: min z 9: end if 10: z0 z 11: z min+max 1: until ( z z0 < T OL) or (niteration > MAX IT ERAT IOS) 13: if niteration > MAX IT ERAT IOS then 14: warning( Maximum number of iterations reached without convergence ) 15: end if 4
Para que funcione es necesario partir de un intervalo inicial que contenga la solución Para la distribución gaussiana: p(z) = 1 π e z / Con precisión double el intervalo [-10, 10] contiene todo el área de la distribución 5
Proceso de Wiener Vamos a describir un proceso en tiempo continuo en el intervalo de tiempo [0, T ] Para ello, discretizamos este intervalo en subintervalos de duración t = T/ Definimos los instantes de tiempo en los que se simularán valores: El valor del proceso en el instante t n es t n n t, n = 1,,, W n W (t n ), n = 1,,, Dado que es un proceso estocástico, simularemos M trayectorias distintas El valor Wn m el valor del proceso aleatorio en el instante t n para la trayectoria m Dado X n (m) (0, 1) el proceso de Wiener se describe como: debe interpretarse como o como ecuación en diferencias: n = n i=1 X (m) i t n = n 1 + X(m) n t Se dice que X es un ruido (por ser variables aleatorias) blanco (por ser independientes) gaussiano (por ser identicamente distribuidas y porque cada valor proviene de una gaussiana) Cada trayectoria se representa de la siguiente manera: Trayectoria 1: W (1) 0 = 0 W (1) 1 = X (1) (1) 1 t W = (X (1) 1 + X (1) ) t W (1) Trayectoria : W () 0 = 0 W () 1 = X () () 1 t W = (X () 1 + X () ) t W () Trayectoria M: W (M) 0 = 0 W (M) 1 = X (M) 1 t W (M) = (X (M) 1 + X (M) ) t W (M) = = n=1 = n=1 n=1 X n (1) t X n () t X n (M) t 6
1 Distribución de Probabilidad para W (t) } M Para : 1 W 1 = X 1 t E[W 1 ] = E[X 1 ] t = 0 E es un operador lineal Para } M V ar[w 1 ] = E[W 1 ] (E[W 1 ]) : = t 1 E[X 1 ] = t W = (X 1 + X ) t E es un operador lineal Para E[W ] = E[X 1 + X ] t = ( E[X 1 ] + E[X ]) t = 0 V ar[w ] = E[W ] (E[W ]) 3 } M = t E[(X 1 + X ) ] = t E[X 1 + X + X 1 X ] = t E[X 1 ] + E[X ] + E[X 1 X ] E es un operador lineal = t E[X 1 ] + E[X ] + E[X 1 ]E[X ] X 1 y X son independientes = t ( 1 E[X1 ] + 1 E[X ] + 0 E[X 1 ] 0 E[X ] ) = t : W 3 = (X 1 + X + X 3 ) t E[W 3 ] = 0 V ar[w 3 ] = 3 t En general: W n (0, n t), o, de manera equivalente W (t n ) (0, t n ) El proceso de Wiener es de difusión al tener una varianza que se incrementa linealmente con el tiempo V ar[w (t)] = t 7