TEMA 3. Generaci´ on de recorridos aleatorios, movimienon to Browniano y proceso de Poisson 1.
Intr In trod odu ucci´ ci´ on on
El dise˜ no no de m´etodos eto dos de generaci´ gene raci´ on de procesos aleatorios que evolucionan en el tiemon po requiere de algoritmos m´ as complejos que los asociados a la generaci´ as on on de variables aleatorias, dada la presencia de correlaciones en el tiempo de las componentes aleatorias que definen dichos procesos. Generalmente, se suelen realizar simplificaciones sobre la estructura de dichos procesos. Por ejemplo, se considera una discretizaci´ on del par´ametro ametro temporal, temp oral, comenz c omenz´´andose andos e por la implementac imple mentaci´ i´ on de t´ecnicas ecnic as de simulaci´ simulacion o´n de procesos constituidos por componentes aleatorias independientes, o bien, se consideran estructuras de dependencia dependen cia d´ebil ebil tales como c omo las asociadas aso ciadas a modelos mo delos o procesos p rocesos de Markov (e.g. Cadenas Cadena s de Markov). En este es te cap ca p´ıtulo, comenzare comen zaremos mos dise˜ d ise˜ nando algoritmos de simulaci´ nando on on sencillos, sencillos, basados en la hip´otesis otesis de independencia, para la generaci´ on de procesos aleatorios elementales on tales como los recorridos aleatorios, el movimiento Browniano y el proceso de Poisson. N´otese otese que los recorridos aleatorios se construyen a partir de secuencias de variables aleatorias aleatorias independientes. independientes. Bajo Ba jo ciertas condiciones, condiciones, el movimien movimiento to Browniano Browniano admite una definici´on on como proceso l´ımite de un recorrido aleatorio. Este proceso posee incrementos incrementos independientes al igual que el proceso de Poisson, que tambi´en en se generar´ a y visualizar´ visualizar´ a en este cap´ cap´ıtulo. Con frecuencia este tipo de procesos son de gran inter´es es en aplicaciones dada su f´acil acil impementaci´ impementaci´ on, on, an´alisis alisis estad esta d´ıstico e interpr i nterpretaci etaci´ on. o´n.
2.
Generacion o ´n de recorridos aleatorios
Un recorrido aleatorio es una formalizaci´ on on matem´ atica de una trayectoria definida atica mediante una secuencia de saltos aleatorios. El recorrido aleatorio constituye un modelo de proceso estoc´astico astico amplimente amplimente utilizado utilizado en el an´ alisis y representaci´ on on de sistemas en diversas areas a´reas aplicadas tales como Ciencias de la Computaci´ on, on , F´ısica ısi ca,, Ecol Ec olog´ og´ıa, ıa , Econom Econ om´´ıa, etc. Por ejemplo e jemplo la trayectoria trayecto ria descrita descr ita por una mol´ecula ecula en un l´ıquido o gas, g as, el precio de un stock con fluctuaciones, etc. Por otra parte los recorridos aleatorios permiten aproximar asint´ oticamente diversos procesos tales como procesos tipo movimien movimiento to Browniano, Browniano, procesos tipo L´evy, evy, etc. Los recorridos aleatorios se hallan relacionados con los procesos de difusi´ on y constituyen una herramienta fundamental en el estudio de procesos de Markov. Existe una gran variedad de modelos de recorridos aleatorios. De hecho, un recorrido aleatorio aleatorio puede asociarse a un grafo, una l´ l´ınea, un plano, o bien, a espacios espacios de dimensi´ dimensi´ on
1
superior. En el caso m´ as sencillo, un recorrido aleatorio se suele definir sobre los n´ umeros enteros.
2.1.
Recorrido aleatorio simple
Sea S n , n ∈ N, un recorrido aleatorio simple, siendo S 0 = 0, es decir, que comienza en cero. En cada paso, el recorrido realiza un salto unitario ±1 (ascendente o descendente) con igual probabilidad. Formalmente, se construye a partir de una secuencia de variables aleatorias independientes Z 1 , Z 2 , . . . , Zk , . . . , cada una de las cuales toma el valor 1 con probabilidad 1/2 y el valor −1 con probabilidad 1/2. Se considera entonces la variable aleatoria suma S n definida mediante la ecuaci´on S n =
n
Z j .
j =1
La secuencia {S n, n ∈ N} recibe el nombre de recorrido aleatorio simple. Este concepto admite una formulaci´ on general, en t´erminos de una probabilidad p ∈ (0, 1) de tomar el valor 1 (ascenso) y una probabilidad 1 − p de tomar el valor − 1 (descenso) para cada una de las variables aleatorias Z i , i ∈ N, de la secuencia involucrada en la definici´ o n de un recorrido aleatorio {S n, n ∈ N} . Seguidamente se muestra un algoritmo de generaci´ on de un recorrido aleatorio simple con probabilidad de salto ascendente p y descendente (1 − p) en c´odigo MatLab.
clear all p=0.5; y=[0 cumsum(2.*(rand(1, n − 1) <= p) − 1)]; plot([0 : n − 1],y);
2.2.
Recorrido aleatorio con longitud de salto aleatoria
Se define de forma an´ aloga al caso anterior (recorrido aleatorio simple), considerando en lugar de saltos unitarios, saltos (ascendentes o descendentes) de tama˜ no aleatorio, definido mediante una distribuci´ on de probabilidad centrada. Seguidamente se muestra, en c´ odigo MatLab, un algoritmo de generaci´ on de un recorrido aleatorio simple con longitud de salto aleatoria, definida mediante una distribuci´ on uniforme.
clear all x=rand(1,n)-1/2; y=[0 cumsum(x)-1)]; plot([0:n-1],y);
2
3.
Movimiento Browniano
La universalidad del movimiento Browniano dentro de la teor´ıa de procesos estoc´ asticos es similar a la de la distribuci´on normal dentro de la teor´ıa de variables aleatorias. De hecho, el proceso movimiento Browniano se puede interpretar como una versi´ on continua de un recorrido aleatorio. Aunque inicialmente este proceso surge como modelo para el movimiento de part´ıculas suspendidas en un l´ıquido o un gas, posteriormente, ha sido utilizado en la representaci´ on de procesos aleatorios en diversos campos aplicados, tales como las Finanzas, Ingenier´ıa, Biolog´ıa, Geof´ısica, Medio-Ambiente, etc. Existen, por tanto, diferentes caracterizaciones del proceso movimiento Browniano asociadas a diferentes campos (Matem´ aticas, F´ısica, etc.). Resumiremos su caracterizaci´ on matem´ atica habitual. El proceso Movimiento Browniano se define como un proceso estoc´ astico B(t), t ≥ 0, satisfaciendo: B(0) = 0 B(t) es continuo casi seguramente B posee incrementos independientes con B(s + t) − B(s) ∼ N (0, t), para cualquier s ≥ 0, t > 0. Seguidamente se muestra, en c´ odigo MatLab, un algoritmo de generaci´ on del movimiento Browniano a partir de su aproximaci´ on mediante un recorrido aleatorio en tiempo discreto.
clear all n=1000; dt=1; y=[0 cumsum(dt∧ 0.5.*randn(1,n))]; plot([0:n],y);
4.
Proceso de Poisson
El proceso de Poisson es un ejemplo cl´ asico de Cadena de Markov en tiempo continuo. Asimismo, se suele introducir desde la teor´ıa de procesos de recuento y procesos ´ de renovaci´ on. Este es tambi´en un modelo universal. Su distribuci´ on de probabilidad y propiedades se caracterizan mediante un u´nico par´ ametro λ, que representa la tasa de ocurrencia de los sucesos aleatorios que contabiliza. Desde el punto de vista estad´ıstico, es un modelo id´oneo para la inferencia ya que se halla caracterizado en t´erminos de un unico ´ par´ ametro. La inferencia sobre este modelo se centra, pues, en la estimaci´ on puntual y por intervalos de confianza del par´ ametro λ, as´ı como en el planteamiento de contrastes 3
de hip´otesis sobre dicho par´ ametro y funciones del mismo. El proceso de Poisson ha sido ampliamente utilizado como modelo para representar el n´ umero de fallos de un sistema en Fiabilidad, el n´umero de nacimientos o muertes en An´ alisis de Supervivencia, la distribuci´on de excesos sobre umbrales en Medicina, la ocurrencia de incendios forestales en Medio-Ambiente, etc. Matem´aticamente, el proceso de Poisson {N (t), t ≥ 0} , con par´ ametro λ, se define como un proceso de recuento, es decir, N (t) − N (0) = N (t) contabiliza el n´ umero de sucesos aleatorios ocurridos en un intervalo de longitud t, satisfaciendo las siguientes condiciones: Posee incrementos independientes (el n´ umero de sucesos aleatorios ocurridos en dos intervalos temporales disjuntos se distribuye de forma independiente). Posee incrementos estacionarios (el n´ umero de sucesos aleatorios ocurridos en un intervalo temporal no depende de su localizaci´ on sino de su longitud). Para cualquier t ∈ R+ y h > 0, N (t + h) − N (t) ∼ P (λh), donde se denota por P (λh) la distribuci´on de Poisson con par´ ametro λh. Adicionalmente, se tiene que los tiempos aleatorios entre ocurrencias de sucesos se distribuyen seg´ un una esponencial con par´ ametro λ y que los tiempos de espera hasta que se produce la ocurrencia de n sucesos aleatorios se distribuyen seg´ un una Gamma con par´ametro nλ. Seguidamente se muestra, en c´ odigo MatLab, un algoritmo de generaci´ on del Proceso de Poisson con par´ ametro λ considerando un n´ umero fijo de ocurrencias de sucesos aleatorios, es decir, se simulan n tiempos aleatorios entre ocurrencias de sucesos a partir de la distribuci´on exponencial con par´ametro λ.
clear all interarr=[0 -log(rand(1, n))./lambda]; stairs(cumsum(interarr), 0:n); Otra opci´ o n en el dise˜ no de algoritmos para la simulaci´on del proceso de Poisson es considerar un intervalo temporal fijo [0, T ] y contabilizar el n´ umero de sucesos aleatorios que ocurren en dicho intervalo. El n´ umero de sucesos ocurridos en dicho intervalo se distribuye seg´ un una Poisson con media λT. Condicionando al n´ umero de sucesos que ocurrieron, los sucesos se distribuyen uniformemente en el intervalo. Seguidamente se muestra, en c´ odigo MatLab, un algoritmo de generaci´ on del Proceso de Poisson con par´ ametro λ considerando un intervalo temporal fijo [0, T ] 4
clear all npoints = poissrnd(lambda*T); if (npoints > 0) arrt = [0; sort(rand(npoints, 1)*T)]; else arrt = 0; end stairs(arrt, 0:npoints); Una versi´on vectorial del algoritmo anterior es dif´ıcil de obtener, sin embargo, se puede realizar una versi´ on alternativa desde la teor´ıa de procesos de renovaci´ on con tiempos aleatorios entre renovaciones exponencialmente distribuidos. Seguidamente se muestra, en c´odigo MatLab, un algoritmo de generaci´ on del Proceso de Poisson desde la perspectiva de procesos de renovaci´ on.
clear all tarr = zeros(1, nproc); i = 1; while (min(tarr(i,:))<= T) tarr = [tarr; tarr(i, :)-log(rand(1, nproc))/lambda]; i = i+1; end tarr2=tarr’; X=min(tarr2); stairs(X, 0:size(tarr, 1)-1);
5.
Versiones multidimensionales
En esta secci´ on, se introducen extensiones de los algoritmos anteriores para la generaci´on de versiones multidimensionales de recorridos aleatorios, movimiento Browniano y proceso de Poisson.
5.1.
Recorrido aleatorio bidimensional y tridimensional
Se introducen a continuaci´ on dos algoritmos, en c´ odigo MatLab, para la generaci´ on de recorridos aleatorios bidimensionales y tridimensionales.
Recorrido aleatorio bidimensional
5
clear all n=100000; colorstr=[’b’ ’r’ ’g’ ’y’]; for k=1:4 z=2.*(rand(2,n)¡0.5)-1; x=[zeros(1,2); cumsum(z’)]; col=colorstr(k); plot(x(:,1),x(:,2),col); hold on end grid
Recorrido aleatorio tridimensional
clear all p=0.5; n=10000; colorstr=[’b’ ’r’ ’g’ ’y’]; for k=1:4 z=2.*(rand(3,n)<=p)-1; x=[zeros(1,3); cumsum(z’)]; col=colorstr(k); plot3(x(:,1),x(:,2),x(:,3),col); hold on end grid
5.2.
Movimiento Browniano tridimensional
En el siguiente algoritmo, escrito en c´ odigo MatLab, se implementa un m´etodo de generaci´on del movimiento Browniano tridimensional.
clear all npoints = 5000; dt = 1; bm = cumsum([zeros(1, 3); dt∧ 0.5*randn(npoints-1, 3)]); figure(1); plot3(bm(:, 1), bm(:, 2), bm(:, 3), ’k’); pcol = (bm-repmat(min(bm), npoints, 1))./ ... repmat(max(bm)-min(bm), npoints, 1); 6
hold on; scatter3(bm(:, 1), bm(:, 2), bm(:, 3), ... 10, pcol, ’filled’); grid on; hold off;
5.3.
Proceso de Poisson bidimensional y tridimensional
El proceso de Poisson bidimensional permite representar puntos localizados aleatoriamente en el espacio, o bien, en el espacio y tiempo. La intensidad de puntos es proporcional al a´rea espacial, o bien, al volumen del conjunto tridimensional considerado. El n´ umero de puntos que se localizan en dos conjuntos bidimensionales o tridimensionales disjuntos se distribuyen de forma independiente. Se introduce a continuaci´ on un algoritmo, en c´ odigo MatLab, para la generaci´ on del Proceso de Poisson en el cubo unidad.
clear all lambda=100; nmb=poissrnd(lambda) x=rand(1,nmb); y=rand(1,nmb); z=rand(1,nmb); grid scatter3(x,y,z,5,5.*rand(1,nmb));
7