Anda di halaman 1dari 6

Laboratorio 2 Probabilidad y Estadstica con MATLAB GENERACIN DE VARIABLES ALEATORIAS Y SIMULACIN

Introduccin
Muchos de los mtodos de estadstica computacional requieren la capacidad de generar variables aleatorias de distribuciones de probabilidad conocidas. Esto es el ncleo para poder realizar simulacin estadstica. El objetivo de este taller es proveer las herramientas necesarias para generar los tipos de variables aleatorias que a menudo surgen en la prctica y para ello se darn algunos ejemplos que ilustran los mtodos. La primera parte se tratar las tcnicas generales para la generacin de variables aleatorias, como la transformacin inversa. Luego, se proporcionarn algoritmos y el cdigo de MATLAB para la generacin de variables aleatorias para algunas distribuciones tiles. Por ltimo se propondr como ejercicio de simulacin de un servidor ftp.

Tcnicas generales para la generacin de variables aleatorias.


1. Los nmeros aleatorios uniformes
La mayora de los mtodos para la generacin de variables aleatorias inician con nmeros aleatorios que estn distribuidos uniformemente en un intervalo (0,1). En este taller, vamos a denotar dichas variables aleatorias por la letra U. Tengamos en cuenta que actualmente con el avance de los computadores, ahora tenemos la capacidad de generar variables aleatorias uniformes con mucha facilidad. Sin embargo, hay que advertir que los nmeros generados por los computadores son realmente pseudo-aleatorios, pues se generan mediante un algoritmo determinista. Las tcnicas utilizadas para generar variables aleatorias uniformes han sido ampliamente estudiadas, y se ha demostrado que algunos generadores tienen defectos graves [Gentle, 1998]. Como vimos en el laboratorio anterior, el programa de MATLAB bsico tiene una funcin rand para la generacin de variables aleatorias uniformes. Hay varios argumentos opcionales, trabajaremos un poco en ellos porque pueden ser tiles en la simulacin. La funcin rand sin argumentos devuelve una nica instancia de la variable aleatoria U. Para obtener un arreglo de variables aleatorias uniforme m n, puede usar la sintaxis rand (m, n). Recuerde que si utiliza rand (n), entonces se obtiene una matriz n n. La secuencia de nmeros aleatorios que se genera en MATLAB depende de la semilla o el estado del generador. El estado se restablece al valor predeterminado cuando se inicia, por lo que las mismas secuencias de variables aleatorias se generan cada vez que se inicia MATLAB. Esto a veces puede ser una ventaja en situaciones donde nos gustara obtener una muestra aleatoria especfica, como se muestra en el siguiente ejemplo. Si usted llama a la funcin utilizando rand (state, 0), entonces MATLAB restablece el generador a su estado inicial. Si desea especificar otro estado, entonces utilice la sintaxis de rand ('state', j) para establecer el generador en el j-estado. Usted puede obtener el estado actual utilizando la sentencia S = rand ('state'), donde S es un vector de 35 elementos. Para restablecer el estado a ste, utilice rand('state', S).

Cabe sealar que los nmeros aleatorios que se distribuyen uniformemente en un intervalo de A a B pueden ser generados por una simple transformacin, como la siguiente: X=(b-a).U+a

Ejemplo 2.1
% Obtiene un vector de variables aleatorias uniformes en (0,1). x = rand(1,1000); % Hacer un histograma. % Primero obtenemos el alto de las barras. [N,X]=hist(x,15); %Se usa la funcin bar para dibujar. bar(X,N,1,'w') title('HISTOGRAMA DE VARIABLES ALEATORIAS UNIFORMES') xlabel('X') ylabel('FRECUENCIA') % Genera 3 muestras aleatorias de tamao 5. x=zeros(3,5); % almacenar for i=1:3 rand('state',i) % cambia el estado x(i,:)=rand(1,5); end %Establecer un estado anterior. rand('state',2) xt = rand(1,5); %Compare x con xt

2. Mtodo de la transformada inversa


El mtodo de la transformada inversa puede ser usado para generar variables aleatorias de una distribucin continua. Se utiliza el hecho de que la funcion acumulada distribucin F es uniforme entre (0,1).

U = F ( X ).
Si U es una variable aleatoria uniforme (0,1), entonces se puede obtener la variable aleatoria deseada X de la siguiente relacin:

X = F 1 (U ).
Veamos primero un ejemplo de cmo utilizar el mtodo de la transformada inversa cuando hablamos de la generacin de variables aleatorias de la distribucin exponencial El procedimiento general para el mtodo de transformacin inversa es el siguiente: PROCEDIMIENTO Mtodo de la transformada inversa (continua) 1. Deducir la expresin de la funcin de distribucin inversa X = F 1 (U ) . 2. Generar un nmero aleatorio uniforme U. 3. Obtener la X deseada de X = F 1 (U )

Ejemplos: Generacin de Variables aleatorias continas Ejemplo 2.2 -Distribucin exponencial El mtodo de al transformada inversa puede ser usado para generar variables aleatorias de una distribucin exponencial y sirve como un ejemplo de este procedimiento. La funcin de distribucin para una variable aleatoria exponencial con el parmetro esta dada por

Dejando:

Resolviendo x: (resuelva para x) ????

El siguiente cdigo de MATLAB genera variables aleatorias exponenciales para un dado.


% Example 2.2 % Establecer los parmetros. lam = 2; n = 1000; % Genera las variables aleatorias. uni = rand(1,n); X = -log(uni)/lam;% . x=0:.1:5; % Esta es una funcin del Statistics Toolbox. y=exppdf(x,1/2); % Obtenemos la informacin del histograma. [N,h]=hist(X,10); % Cambiar el ancho de la barras para hacer que corresponda con la densidad %de probabilidad terica -ver taller anterior, ecuacin 1. N=N/(h(2)-h(1))/n; % Graficamos. bar(h,N,1,'w') hold on plot(x,y) hold off xlabel('X') ylabel('f(x) - Exponencial')

Ejemplo 2.3 DISTRIBUCIN BETA La distribucin beta es til en simulaciones, ya que abarca un amplio rango de formas de distribucin, dependiendo de los valores de los parmetros y Estas formas incluyen distribuciones sesgadas, uniformes y aproximadamente normales. En primer lugar, se describir un mtodo sencillo para la generacin de variables aleatorias beta con parmetros y , cuando ambos son nmeros enteros [Rubinstein, 1981; Gentle, 1998]. Se sabe [David, 1981] que la estadstica de orden K o de uniforme N (0,1) variables se distribuye de acuerdo a una distribucin beta con K parmetros y .Esto significa

n k +1

que podemos generar de distribucin beta mediante el procedimiento siguiente.

variables

aleatorias

PROCEDIMIENTO - BETA variables aleatorias (INTEGER PARMETROS) 1. Generar

+ +1

nmeros aleatorios uniformes:

2. Deliver, que es el estadstico orden


close all % Hacer a = 3, b = 3 n=500; a=3; b=3; rvs = betarnd(a,b,1,n); % Ahora el histograma. [N,h]=hist(rvs,10); % Cambiar el ancho de las barras. N=N/(h(2)-h(1))/n; % Ahora obtenemos la densidad de probabilidad terica. x = 0:.05:1; y = betapdf(x,a,b); plot(x,y) axis equal bar(h,N,1,'w') hold on plot(x,y,'k') hold off

El resultado se muestra en el grfico izquierdo de la figura 4.6. Tenga en cuenta que esta densidad se ve aproximadamente en forma de campana. La densidad de beta de la derecha tiene los parmetros de Y vemos que esta curva tiene un bao en el centro con los modos en cada extremo. Se pide al lector para la construccin de esta parcela en los ejercicios. Para el siguiente laboratorio veremos un mtodo para la generacin de Variables aleatorias discretas.

SIMULACIN

Suponga que el canal de comunicacin tiene una capacidad fija de R bps y que soporta solamente una conexin abierta al tiempo. Se ha desarrollado un registro de los accesos de los usuarios al servidor por medio de un archivo de registro ubicado en la siguiente direccin: ftp://integratic.net/Lab_Stat_Matlab/log_ftp.xls Cada usuario que se conect, solicit un nmero de archivos que est dado por una distribucin Poisson con lambda=2.5 archivos/sesin, y cada archivo es de un tamao que puede ser estimado por medio de una distribucin pseudo uniforme por tramos de las siguientes caractersticas: El archivo puede tener un tamao inferior a 500 bytes o superior a 500 bytes con la misma probabilidad de 0.48 cada grupo. Los archivos mas pequeos tienen distribucin uniforme entre 1 y 500 bytes y los mas grandes tienen distribucin uniforme entre 500 y 100.000 bytes. Existe un ltimo grupo de archivos, de tamao mayores a 100.000 bytes, que ocurren con una probabilidad de 0.04 y que tienen una distribucin uniforme entre 100.000 y 1.000.000 bytes. Cada uno de estos archivos son enviados a travs del enlace y su tiempo de transmisin es igual a la longitud del archivo, dividida por la velocidad del enlace en bits/seg. Se debe realizar lo siguiente: 1. El ajuste de una curva de probabilidad a los tiempos entre conexiones de los usuarios al servidor de FTP, para ello utilice la herramienta fittool de Matlab. Cuidado, lo mas seguro es que no pueda ajustar una curva a todo el archivo, pues no son constantes los parmetros durante todo el da, es decir, no es lo mismo hacer el anlisis a las 3 de la maana que a las 3 de la tarde. 2. Realizar los generadores aleatorios para cada uno de los casos anteriores, tanto para el tiempo en el cual los usuarios se conectan al sistema (que se obtiene a partir del log de ftp), como para el nmero de archivos pedidos al servidor y el tamao de cada archivo solicitado. En general, el tamao de archivos solicitados ser igual a la suma del nmero de archivos solicitados multiplicado por su tamao. 3. Se debe realizar la codificacin de la simulacin en Matlab o cualquier otro programa que desee, en la cual se modele el sistema como una cola de un servidor, con llegadas de usuarios con distribucin genrica (no necesariamente exponencial, depende de lo

obtenido en el tiempo 1) y tiempo de atencin definitivamente no exponencial, pues depende del tamao de los archivos solicitados por el usuario y de la velocidad del canal de comunicacin. 4. Se debe analizar las siguientes variables aleatorias, el tamao promedio de la cola, el retardo promedio de los archivos solicitados en conjunto (es decir, desde que el usuario solicita todo el conjunto de archivos hasta que los recibe completamente) y la utilizacin promedio del canal. Para cada uno de ellos, se debe entregar claramente la definicin de los estadsticos utilizados y el intervalo de confianza de los resultados con un nivel de significacin del 5%. (esto ltimo si en clase se ha visto el tema)

[Gentle, 1998]: Gentle, James E. 1998. Random Number Generation and Monte Carlo Methods, New York: Springer-Verlag.

Anda mungkin juga menyukai