d. Generación de Muestras de Variables Aleatorias



Documentos relacionados
ESTIMACIÓN. puntual y por intervalo

PROBABILIDADES Y ESTADÍSTICA (C) Práctica 2

PROBABILIDADES Y ESTADÍSTICA (C) Práctica 2

Generación de Números Pseudo-Aleatorios

SIMULACION. Formulación de modelos: solución obtenida de manera analítica

1. a) Definimos X =número de personas con síntomas si examino sólo una persona, la cual sigue una distribución B(1, p), donde

ESTADÍSTICA 2OO7/2OO8 TEMA 10: SIMULACIÓN DE VARIABLES ALEATORIAS

Determinación de primas de acuerdo al Apetito de riesgo de la Compañía por medio de simulaciones

Aproximación local. Plano tangente. Derivadas parciales.

CAPITULO 4 JUSTIFICACION DEL ESTUDIO. En este capítulo se presenta la justificación del estudio, supuestos y limitaciones de

5. DISTRIBUCIONES DE PROBABILIDADES

Tema 3: Variables aleatorias y vectores aleatorios bidimensionales

Generación de números aleatorios

Métodos generales de generación de variables aleatorias

Números aleatorios. Contenidos

Ejemplos de conversión de reales a enteros

Teoría de Colas o Fenómenos de Espera

Covarianza y coeficiente de correlación

Tema 1: Test de Distribuciones de Probabilidad

Introducción a la Teoría de Probabilidad

Explicación de la tarea 3 Felipe Guerra

Resumen ÁREA DE FACTURACIÓN::INFORMES::Pedidos Detalle Resumen ÁREA DE

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

Tema 1 con soluciones de los ejercicios. María Araceli Garín

Matrices equivalentes. El método de Gauss

ÍNDICE DISEÑO DE CONTADORES SÍNCRONOS JESÚS PIZARRO PELÁEZ

REPASO CONCEPTOS BÁSICOS DE ESTADÍSTICA. DISTRIBUCIÓN NORMAL.

Tema 3. Medidas de tendencia central Introducción. Contenido

Probabilidades y Estadística (Computación) Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Ana M. Bianco y Elena J.

Unidad II: Números pseudoaleatorios

1. MEDIDAS DE TENDENCIA CENTRAL

Cap. 24 La Ley de Gauss

Análisis de los datos

Práctica 5. Curso

Alvaro J. Riascos Villegas Universidad de los Andes y Quantil. Marzo 14 de 2012

4 Pruebas y análisis del software

ANÁLISIS DE DATOS NO NUMERICOS

SISTEMAS DE NUMERACIÓN. Sistema decimal

CAPÍTULO VI PREPARACIÓN DEL MODELO EN ALGOR. En este capítulo, se hablará acerca de los pasos a seguir para poder realizar el análisis de

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Diagnosis y Crítica del modelo -Ajuste de distribuciones con Statgraphics-

Metodología. del ajuste estacional. Tablero de Indicadores Económicos

Matrices Invertibles y Elementos de Álgebra Matricial

1.1. Introducción y conceptos básicos

CAPITULO V. SIMULACION DEL SISTEMA 5.1 DISEÑO DEL MODELO

Técnicas De Conteo. En este caso si k es grande, no es tan sencillo hacer un conteo exhaustivo de los puntos o resultados de S.

Ejercicios de Teoría de Colas

Administración de Empresas. 11 Métodos dinámicos de evaluación de inversiones 11.1

ECUACION DE DEMANDA. El siguiente ejemplo ilustra como se puede estimar la ecuación de demanda cuando se supone que es lineal.

Simulación Computacional. Tema 1: Generación de números aleatorios

Integrales y ejemplos de aplicación

Lección 22: Probabilidad (definición clásica)

by Tim Tran:

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

x

Espacios generados, dependencia lineal y bases

Profr. Efraín Soto Apolinar. La función lineal. y = a 0 + a 1 x. y = m x + b

Pronósticos. Pronósticos y gráficos Diapositiva 1

Ejercicio de estadística para 3º de la ESO

Medias Móviles: Señales para invertir en la Bolsa

a < b y se lee "a es menor que b" (desigualdad estricta) a > b y se lee "a es mayor que b" (desigualdad estricta)

Cifras significativas e incertidumbre en las mediciones

MUESTREO TIPOS DE MUESTREO

Tarea 4.2 Memoria Virtual

Unidad Temática 1: Unidad 3 Probabilidad Temas 6 y 7

TEMA 7: Análisis de la Capacidad del Proceso

Capitalización y descuento compuesto

Estimación. Intervalos de Confianza para la Media y para las Proporciones

TEMA 2: Representación de la Información en las computadoras

Programa para el Mejoramiento de la Enseñanza de la Matemática en ANEP Proyecto: Análisis, Reflexión y Producción. Fracciones

2. Probabilidad. Estadística. Curso Ingeniería Informática. Estadística (Aurora Torrente) 2. Probabilidad Curso / 24

x y 8000 x + y a) La región factible asociada a las restricciones anteriores es la siguiente: Pedro Castro Ortega lasmatematicas.

Problemas indecidibles

Apuntes de Matemática Discreta 9. Funciones

ESTIMACION DE INTERVALOS DE CONFIANZA

E 1 E 2 E 2 E 3 E 4 E 5 2E 4

T.1 CONVERGENCIA Y TEOREMAS LÍMITE

MEDICION DEL TRABAJO

1.4.- D E S I G U A L D A D E S

PROGRAMACIÓN LINEAL Introducción Inecuaciones lineales con 2 variables

1.4 Cálculo de Probabilidades con Métodos de Conteo. Considerere un espacio muestral finito,

Comparar las siguientes ecuaciones, y hallar sus soluciones:

Clase 4: Probabilidades de un evento

Tema 5. Variables aleatorias discretas

Variables aleatorias continuas

Las Finanzas Módulo 1

❷ Aritmética Binaria Entera

Anexo B. Comunicaciones entre mc y PC

MATERIAL 2 EXCEL 2007

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

Medidas de tendencia central o de posición: situación de los valores alrededor

UNIDADES DE ALMACENAMIENTO DE DATOS

Universidad Diego Portales Facultad de Economía y Empresa

Programación en R para Estadística. Simulación

DISEÑO DEL SOFTWARE TRAFFIC ANALYZER. Analyzer. En este capítulo se reporta el desarrollo que se llevó a cabo para realizar el software

Eduardo Kido 26-Mayo-2004 ANÁLISIS DE DATOS

Divisibilidad y números primos

DESARROLLO DE HABILIDADES DEL PENSAMIENTO LÓGICO

Los números racionales

Transcripción:

25 Conceptos de Probabilidad, Variables Aleatorias Marco Aurelio Alzate Monroy y Procesos Estocásticos en Redes de Comunicaciones Universidad Distrital F.J.C. 79 d. Generación de Muestras de Variables Aleatorias Hemos insistido en que la aleatoriedad de un experimento se refiere a la imposibilidad de predecir su resultado antes de ejecutar el experimento. La característica más sobresaliente de un programa de computador es, precisamente, que los resultados son perfectamente predecibles, pues resultan de la realización de un algoritmo específico Cómo puede una máquina así generar muestras de variables aleatorias? La verdad es que no lo hace, pues no puede lanzar dados o monedas. En vez de esto, se usa un algoritmo determinístico para generar secuencias de números completamente determinísticas que "se comportan" como si fueran aleatorias. Por ejemplo, considere los primeros dígitos de la expansión decimal de (34592653 5897932384 6264338327 95288497 69399375 58297494 45923786 46286289 986283482 5342767 98248865 32823664 79384469 55582237 25359482 848745 284279 3852555 9644622948 95493389 64428897 5665933446 284756482 337867836 527299 456485669 23463486 454326648 23393672 6249427 37245876 6635588 74885292 962829254 etc.). La gráfica izquierda de la Figura 83 muestra cómo la distribución de cada dígito es perfectamente uniforme (cada dígito aparece cerca de veces). Si condicionamos en el dígito anterior, por ejemplo si calculamos la frecuencia relativa de los dígitos precedidos por un, como muestra la gráfica intermedia de la Figura 83, la distribución sigue siendo uniforme (cada dígito aparece cerca de veces después de un ). Más aún, la función de autocovarianza normalizada es un impulso unitario, lo cual enfatiza la sugerencia de independencia, pues ninguna sub-secuencia de dígitos parece contener información sobre cuál será el siguiente dígito, como muestra la gráfica de la derecha de la Figura 83. Otra característica interesante es que una secuencia de N dígitos sólo se repetirá cerca de 5-N veces. Por ejemplo, la secuencia '3' aparece 26 veces, la secuencia '3' aparece 975 veces, la secuencia '34' aparece 95 veces, la secuencia '34' aparece 9 veces y la secuencia '345' aparece 2 veces, pero la secuencia '3459' sólo aparece una vez (de hecho aparecen todas las secuencias de 4 dígitos o menos, pero sólo aparece el 37% de las secuencias de 5 dígitos). Si pudiésemos generar dígitos decimales realmente aleatorios, todas estas características también se cumplirían..5 distribución de los dígitos de distribución de los dígitos de que siguen a un.5.2 Covarianza entre los dígitos de fracción de ocurrencias..5 fracción de ocurrencias..5 Covarianza.8.6.4.2 2 3 4 5 6 7 8 9 dígito 2 3 4 5 6 7 8 9 dígito -2-2 separación Figura 83. Características estadísticas de los primeros dígitos de la expansión decimal de Así como existen algoritmos para generar la secuencia de dígitos de, que es una secuencia determinística que satisface todos los criterios de aleatoriedad, existen diferentes algoritmos para generar secuencias de números enteros que satisfagan criterios de aleatoriedad como los mencionados anteriormente, aunque en realidad sean completamente determinísticos. Por esa razón se conocen como secuencias pseudo-aleatorias. La idea es que un generador de números enteros entre y m-, que satisfaga criterios como los anteriores, puede usarse para generar números

25 Conceptos de Probabilidad, Variables Aleatorias Marco Aurelio Alzate Monroy y Procesos Estocásticos en Redes de Comunicaciones Universidad Distrital F.J.C. 8 racionales en el intervalo [,) si dividimos cada entero de la secuencia entre m; estos racionales podrían interpretarse como probabilidades en el programa simulador. El área de la generación de números pseudo-aleatorios y la generación de muestras con otras distribuciones distintas a la uniforme ha sido ampliamente estudiada desde la teoría de números y ha arrojado muy interesantes algoritmos. Aquí mencionaremos unos pocos aspectos introductorios para que el estudiante tenga una idea muy general y pueda ser, al menos, un buen usuario de las funciones disponibles en las bibliotecas de los lenguajes de programación que utiliza. Uno de los algoritmos más usados en la generación de secuencias uniformemente distribuidas de números enteros es el generador congruencial lineal que, partiendo de una semilla Z, genera los términos de la secuencia así: Zn Zn mod m, n Este es un algoritmo rápido que requiere poca memoria. Como los números obtenidos se evalúan módulo m, el conjunto de números que puede generar es Z{,,,m-}. Si la semilla Z se repite después de K iteraciones, Z = Z K, toda la secuencia se repetirá a partir de ahí y, por consiguiente, el período del generador será Z = K. La teoría de números describe condiciones en,, m y Z para que () la secuencia esté uniformemente distribuida en Z, (2) los números de la secuencia sean estadísticamente independientes, y (3) tengan un período tan grande como sea posible (ojalá m) en efecto, si un programa de simulación necesita números aleatorios, no sirve un generador que repita la secuencia después de 5 muestra. Obsérvese que, si hace falta, cualquier secuencia puede ser reproducible inicializando Z adecuadamente; esto es de gran importancia para comparar resultados de diferentes modelos de simulación bajo idénticas condiciones. Por ejemplo, empezando con Z =, el generador lineal congruencial {Z n = (5Z n- + ) mod 6} genera la secuencia {, 6, 5, 2, 3, 2,, 8, 9, 4, 7, 4, 5,, 3, } que es perfectamente uniforme y tiene máximo período, aunque se pueden ver fácilmente ciertas correlaciones (en cuatro ocasiones ocurre el par (n, n+), pero nunca ocurre el par (n, n+2), por ejemplo). Un generador útil debe tener un valor alto de m (para un período suficientemente grande) y un valor alto de (para proporcionar suficiente aleatoriedad). Algunos generadores lineales congruenciales usados en diferentes lenguajes de programación son los siguientes: Z n = (355245 Z n- + 2345) mod 2 3 (la librería de GNU para el lenguaje C) Z n = (22695477 Z n- + ) mod 2 32 (C/C++ de Borland) Z n = (6364362238467935 Z n- + ) mod 2 64 (la librería estándar C de newlib) Z n = (687 Z n- + ) mod 2 3 - (original de matlab ) etc. Sin embargo, existen otros algoritmos recientemente desarrollados con mejores características. Por ejemplo, matlab permite escoger entre el generador multiplicativo congruencial anterior y otros métodos como el siguiente generador multiplicativo retardado de Fibonacci,

25 Conceptos de Probabilidad, Variables Aleatorias Marco Aurelio Alzate Monroy y Procesos Estocásticos en Redes de Comunicaciones Universidad Distrital F.J.C. 8 Z n = (Z n-3 * Z n-63 ) mod 2 64 que tiene un período de 2 24, o el más aceptado en la actualidad, el "Mersene twister", que tiene un increíble período de 2 9937 - y mucho mejores características estadísticas, aunque requiere más recursos de cómputo y de memoria para su evaluación. Para calcular Z n se usa una forma generalizada de generadores por registros de desplazamiento y generadores retardados de Fibonancci. Matlab usa, por defecto, el generador Mersene twister y le da al usuario la opción de cambiarlo por otros de su preferencia. Con cualquiera de estos generadores, la secuencia r n = Z n /m corresponde a una serie de números uniformemente distribuidos en el intervalo [, ), independientes entre ellos, de manera que podemos usar la secuencia como una generadora de probabilidades. En la mayoría de lenguajes de programación, existe la función rand() para generar el siguiente número de la secuencia (como en matlab). Así, por ejemplo, para simular la lanzada de una moneda, asignamos los valores y a los elementos del espacio muestral cara y sello, respectivamente, y escogemos cada uno de los posibles valores con probabilidad /2. Esto es, evaluamos r = rand() y, si r cae en el intervalo [,.5), escogemos y, si r cae en el intervalo [.5,), escogemos. >> lado = {'cara','sello'}; >> moneda = (rand()>=.5); disp(lado{moneda+}) Cada vez que repitamos la última línea obtendremos el resultado 'cara' o 'sello' con idéntica probabilidad, independientemente de anteriores resultados. Este algoritmo equivale a invertir la función de distribución acumulativa de Bernoulli, como muestra la Figura 84. F X (x). r 2 (sello).5 x F rnd() X r (cara) (cara) (sello) Figura 84. Obtención de muestras de variables de Bernoulli mediante inversión de la CDF Si tenemos un enlace que permanece ocupado el 8% del tiempo y queremos generar una muestra de cuántos enlaces están ocupados en un instante dado usamos la siguiente línea: x >> EnlacesOcupados = (rand()>=.2) que retorna con probabilidad.8 y con probabilidad.2. Si transmitimos un bit sobre un canal con BER= -5 y queremos generar una muestra de cuántos bits se dañaron durante la transmisión, usamos la siguiente línea

25 Conceptos de Probabilidad, Variables Aleatorias Marco Aurelio Alzate Monroy y Procesos Estocásticos en Redes de Comunicaciones Universidad Distrital F.J.C. 82 >> BitsErrados = (rand()<e-5) que retorna con probabilidad -5 y con probabilidad - -5. En cada caso, hemos invertido la CDF de la variable aleatoria de Bernoulli correspondiente. Si deseamos generar el estado de ocupación de enlaces o el estado de error de bits usaríamos líneas como las siguientes >> EnlacesOcupados = (rand(,)>=.2); >> BitsErrados = (rand(,)<e-5); Igual podemos hacer, por ejemplo, para lanzar cien dados: >> r = rand(,); dado = (r>=)+(r>=/6)+(r>=/3)+(r>=/2)+(r>=2/3)+(r>=5/6); Con la anterior instrucción, el vector dado será un arreglo de números uniformemente distribuidos en {,2,3,4,5,6} e independientes entre ellos pues, efectivamente, hemos hecho la inversión de la CDF, dado = F - (rnd()), como muestra la Figura 85. F X (x) Primero se genera una probabilidad, r = rnd () r 5/6 2/3 /2 /3 /6 2 3 4 5 6 x F r X x Figura 85. Simulación de lanzar un dado mediante inversión de la CDF Supongamos que queremos generar una muestra de una variable aleatoria geométricamente distribuida en {,,2, } con parámetro p, esto es, P[X=k] = p k (-p). La CDF de esta variable es n j n FX ( n) p ( p) p de manera que, si hacemos rand() = F X (n), obtenemos n = log(- j Después se invierte la CDF rand())/log(p). Como muestra la Figura 86, debemos seleccionar el mínimo entero no menor a n y, como -rand() es otro número probabilidad, podemos usar rand() en vez de -rand(). Por ejemplo, las siguientes líneas en matlab generan muestras de una variable aleatoria geométrica y comparan su histograma con la pmf P[X=k] = p k (-p), como muestra la gráfica izquierda de la Figura 87. >> r = rand(,);

25 Conceptos de Probabilidad, Variables Aleatorias Marco Aurelio Alzate Monroy y Procesos Estocásticos en Redes de Comunicaciones Universidad Distrital F.J.C. 83 >> n = ceil(log(r)/log(.8) - ); mx = max(n); >> h = hist(n,:mx); h = h/sum(h); >> stem(:mx,h,'bo'); hold on; stem(:mx,.2*.8.^(:mx),'rx') F X (x).9.8.7.6.5.4.3.2. 2 4 6 8 2 4 6 8 2 Figura 86. Generación de muestras de una variable aleatoria geométrica Como último ejemplo, consideremos una variable aleatoria T exponencialmente distribuida con promedio /, F T (t) = -e -t. Usando como probabilidad -rand() obtenemos t = -log(rand())/. La siguiente secuencia de instrucciones de matalab genera los tiempos de servicio de paquetes distribuidos exponencialmente con promedio 2 ms y estima la pdf mediante el histograma, como muestra la gráfica derecha de la Figura 87. x >> t = -log(rand(,))/5; >> [h,s] = hist(t,2); >> d = s(2)-s(); >> f = h/sum(h)/d; >> g = 5*exp(-5*s); >> plot(s,f,'b-',s,g,'r--').2.5 pmf de la variable geométrica estimada teórica 4 35 3 pdf de la variable exponencial estimada teórica 25. 2 5.5 5 2 3 4 5 6.5..5.2 Figura 87. Distribuciones teóricas y empíricas, estimadas de muestras pseudo-aleatorias Desafortunadamente no todas las funciones acumulativas de distribución son invertibles. Por ejemplo, la Gaussiana ni siquiera tiene una expresión en forma cerrada. Entonces se usan otras propiedades estadísticas como, por ejemplo, el hecho de que un punto al azar en un cuadrado

25 Conceptos de Probabilidad, Variables Aleatorias Marco Aurelio Alzate Monroy y Procesos Estocásticos en Redes de Comunicaciones Universidad Distrital F.J.C. 84 unitario, (u, u 2 ), puede transformarse en dos muestras independientes de variables aleatorias gaussianas con media cero y varianza mediante la transformación x cos(2 u2) 2log(u ) x 2 sin(2 u2) que en matlab se consigue así (por ejemplo) >> u = rand(2,); >> x = sqrt(-2*log(u()))*cos(2*pi*u(2)); >> x2 = sqrt(-2*log(u()))*sin(2*pi*u(2)); En efecto, despejando para u y u 2 obtenemos 2 2 x x2 /2 x u 2 e u2 tan 2 x cuyo jacobiano es la es la función de densidad de probabilidad conjunta de dos variables normales independientes, u u x 2 2 2 2 x2 (x x2)/2 x /2 x 2/2 e e e u2 u2 2 2 2 x x 2 Usando este método Box-Muller, como se le conoce, podemos verificar la función de densidad de probabilidad de las muestras obtenidas (ver Figura 88): >> u = rand(,2); >> x = sqrt(-2*log(u(:,))).*cos(2*pi*u(:,2)); >> x2 = sqrt(-2*log(u(:,))).*sin(2*pi*u(:,2)); >> [h,s] = hist([x; x2],2); >> d = s(2)-s(); >> f = h/sum(h)/d; >> g = exp(-s.*s/2)/sqrt(2*pi); >> plot(s,f,'b-',s,g,'r--') >> legend('estimada','teórica').5.4 pdf de la variable gaussiana N(,) estimada teórica.3.2. -4-3 -2-2 3 4 5 Figura 88. Estimación de la pdf N(,) a partir de muestras generadas mediante Box-Muller

25 Conceptos de Probabilidad, Variables Aleatorias Marco Aurelio Alzate Monroy y Procesos Estocásticos en Redes de Comunicaciones Universidad Distrital F.J.C. 85 Como la CDF en un punto es el área debajo de la pdf desde - hasta ese punto, otro algoritmo típico consiste en generar puntos uniformemente distribuidos en un rectángulo que contenga toda el área debajo de la pdf. Si el punto cae debajo de la curva, su coordenada x es una muestra de la variable aleatoria. Si no, se rechaza el punto seleccionado y se repite el procedimiento hasta obtener una muestra válida. Este 'método de rechazo', como se le conoce, tiene algunas variantes interesantes que buscan mayor eficiencia o mayor exactitud, como el método ziggurat. En general, los métodos de generación de números pseudo-aleatorios y de muestras de variables aleatorias con distintas distribuciones es un campo de la teoría de números que avanza aceleradamente y que tiene importantes aplicaciones no sólo en simulación sino en criptografía, por ejemplo (aunque en esa área existen requerimientos adicionales de seguridad). En este aparte sólo queríamos mostrar una breve introducción a algunos de los métodos utilizados, en especial si el estudiante requiere generar muestras de sus propias distribuciones empíricas o teóricas. Matlab, en particular, no sólo permite seleccionar el algoritmo con que se obtienen muestras uniformes en [,) sino que también permite escoger el algoritmo con que se obtienen muestras de la variable normal a partir de las uniformes (ver en la documentación del matlab los detalles de la instrucción RandStream()). Excepto por razones de compatibilidad con programas existentes, o por la necesidad de usar múltiples flujos, es adecuado usar los algoritmos por defecto que matlab propone (Mersenne twister para números uniformes en [,) y Ziggurat para números gaussianos con media cero y norma ) pues, hasta ahora, son los que mejores características presentan. De otro lado, matlab incluye rutinas para generar muestras de una gran cantidad de distribuciones mediante la instrucción random() Beta, Binomial, 2, F, Exponencial, Gamma, Gaussiana, Geométrica, hipergeométrica, lognormal, Pareto, Poisson, Rayleigh, t de student, uniforme continua o discreta, Valor Extremo, Weibull, etc.. Por ejemplo, si en el programa simulador del Listado 7 cambiamos los tiempos entre llegadas constantes por tiempos exponencialmente distribuidos con promedio / y cambiamos los tiempos de servicio constantes por tiempos exponencialmente distribuidos con promedio /, habremos pasado de simular la cola D/D/n/k a simular la cola M/M/n/k. Aunque el cambio es mínimo en cuanto a la modificación del listado del programa simulador, el cambio en el análisis de los resultados de simulación es monumental, como veremos en el siguiente subtítulo. e. Simulación de colas aleatorias: Análisis de resultados Como mencionamos, para convertir el programa simulador de la cola D/D/n/k a un programa que simule la cola M/M/n/k basta con cambiar la distribución de los tiempos entre llegadas y tiempos de servicio, de determinística a exponencial. Las tres líneas relevantes del programa del Listado 7 son las siguientes 3 proximallegada = reloj + /lambda; % Programa la próxima llegada 37 proximasalida(ss) = reloj + /mu; % Programa la próxima salida de este servidor 59 proximasalida(k) = reloj + /mu; % Programa la próxima salida de este servidor

25 Conceptos de Probabilidad, Variables Aleatorias Marco Aurelio Alzate Monroy y Procesos Estocásticos en Redes de Comunicaciones Universidad Distrital F.J.C. 86 que ahora deberán expresar lo siguiente: 3 proximallegada = reloj + random('exp',/lambda); % Programa la próxima llegada 37 proximasalida(ss) = reloj + random('exp',/mu); % Programa la próxima salida de este servidor 59 proximasalida(k) = reloj + random('exp',/mu); % Programa la próxima salida de este servidor Igualmente valdría la pena cambiar ahora la primera línea para indicar que es la cola M/M y no la cola D/D: function [EN, EQ, ET, EW, PB, G] = ColaMMnk(lambda,mu,servidores,cupo,tiempoSimulacion) Mientras que al simular la cola D/D/n/k basta con obtener una traza y tomar las estadísticas temporales de esa traza, pues todas las simulaciones arrojarán la misma traza ya que no hay ningún componente aleatorio en ellas, cada ejecución del programa simulador de la cola M/M/n/k arrojará una traza diferente debido a la inclusión de muestras de variables aleatorias. Esto genera una incertidumbre en los resultados de la simulación de la cola M/M/n/k que no existían con la simulación de la cola D/D/n/k. Por ejemplo, si ejecutamos tres veces el programa simulador de la cola D/D/ con =.8 y =, obtendremos tres veces la traza observada en la tercera gráfica de la Figura 78, pero si ejecutamos tres veces el programa simulador de la cola M/M/ con los mismos parámetros, obtendremos tres trazas diferentes, como muestra la Figura 89. Número de paquetes 8 6 4 2 Número de paquetes en un sistema M/M/ con =.8 y = simulación simulación 2 simulación 3 2 3 4 5 6 7 8 9 tiempo en segundos Figura 89. Tres simulaciones distintas de un mismo sistema M/M/ Este ejemplo ilustra muy bien el concepto de proceso estocástico: Cada ejecución del programa simulador es un experimento aleatorio que genera como resultado una traza del número de paquetes en función del tiempo. Con n simulaciones tenemos n trazas, {N i (t), t}, i=,2, n. Si hacemos n simulaciones, podemos estimar el número promedio de paquetes en el sistema en un instante t cualquiera mediante el estimador n Eˆ[ Nt ( )] Ni ( t ) n i Si suponemos que el sistema alcanza la estacionariedad, podríamos considerar que la función de valor medio llega a dejar de depender del tiempo: n Eˆ[ N ] lim Ni ( t ) t n i

25 Conceptos de Probabilidad, Variables Aleatorias y Procesos Estocásticos en Redes de Comunicaciones Marco Aurelio Alzate Monroy Universidadd Distrital F.J.C. 87 Y, si la varianza es finita, al tomar más y más muestras se va reduciendo la incertidumbre de la estimación: n E[ N] lim lim N ( t ) Por otro lado, con una sola traza, las propiedades de ergodicidad y estacionariedad nos permiten saber que basta con simular durante un tiempo infinito paraa calcular T E N lim N( tdt ) n t n i T T i tal como lo hacíamos con la cola D/D/n/k. Claro, con la cola D/D/n/k no queremos estimar la media de un proceso estocástico estacionario y ergódico, como con la cola M/M/n/k, sino que sólo queremos minimizar el efecto del período transiente. Así pues, realicemos veinte simulaciones paraa generar veinte trazas como las de la Figura 89 {N i (t), t}, i= =,2, 2, y calculemos el promedio del número de paquetes en cada instante: for i= =:2 % Corre 2 simulaciones [traza,en,eq,et,ew,g,pb] = ColaMMnk(.77,,,inf,5); % genera una traza dt = traza(2: :end,) - traza(:end- -,); % tiempo entre eventos areas = traza(:end-,2).*dt; % Áreas de los rectángulos EN = cumsum(areas)./traza(2:end,) ); % Promedio acumulado hasta plot(traza(2: :end,),en); % cada instante (Figura 8) hold on end Si tomamos muestras de EN cada segundo, podemos promediar los veinte promedios temporales en instantes enteros para considerar el promedio temporal (en la variable tiempo) y el promedio probabilístico (en la variable del espacio muestral). El resultado se aprecia en la Figura 9 para =.755 y =. Figura 9. Trazas obtenidas de 2 simulaciones y función de valor medio Como podemos notar, cada trazaa (y el promedio estadístico de las trazas) sufre un transiente antes de alcanzar la estabilidad, aunque el promedio estadísticoo se estabilizaa más rápido, tendiendo más claramente a lo que parece ser el verdadero valor esperadoo del número de paquetes en el sistema. El tiempo de simulación debe ser tan pequeño como se pueda por razoness de eficiencia, pero también

25 Conceptos de Probabilidad, Variables Aleatorias Marco Aurelio Alzate Monroy y Procesos Estocásticos en Redes de Comunicaciones Universidad Distrital F.J.C. 88 debe ser tan grande como se pueda para asegurar que el sistema alcanza el estado estable en el que queremos medir los promedios. De otro lado, a menos que empecemos a tomar estadísticas una vez haya transcurrido el período transiente, debemos alargar el tiempo de simulación para que el efecto de este período transiente sobre las estadísticas temporales se haga despreciable. En general, el tiempo de simulación se escoge de acuerdo con algunas pruebas piloto como las de la Figura 9. El otro aspecto importante en la planeación de experimentos consiste en la selección del número de repeticiones que debemos hacer para asegurar cierto nivel de confianza en los resultados de la simulación. Una alternativa es hacer una única simulación durante un tiempo increíblemente largo, pues la ergodicidad nos asegura que así nos acercaremos indefectiblemente al verdadero valor medio. El problema es que puede que el tiempo que se requiera sea excesivamente largo y, aun así, no tendríamos manera de medir si ya estamos suficientemente cerca del verdadero promedio o si debemos alargar el tiempo de simulación para acercarnos con un nivel de confianza suficiente. Supongamos, entonces, que escogimos un tiempo total de simulación T y repetimos la simulación n veces para obtener n trazas {N i (t), t T}, i=,2, n. Con cada simulación calculamos el promedio temporal T Ni N ( ),,2,..., i t dt i n y finalmente calculamos el promedio estadístico T de los n resultados, n ˆ N Ni. Este valor será nuestro estimador del número promedio de n i paquetes en el sistema, pero qué tan cerca o qué tan lejos podemos estar del verdadero valor esperado? Consideremos cada N i (el promedio temporal de cada simulación) como una variable aleatoria cuyo valor esperado es el verdadero promedio que queremos encontrar, m = E[N], y que tiene una varianza finita, 2 (esta varianza será más pequeña entre mayor sea el tiempo de simulación, T, pero hemos supuesto T fijo para todas las simulaciones). Sabemos entonces que el promedio ˆN tiende a tener una distribución normal con media m y varianza 2 /n, y la variable normalizada Z = ( ˆN - m)/(/n) tiende a tener una distribución normal con media cero y varianza, N(,), a medida que aumenta el número de simulaciones, n. El % percentil superior de Z es el valor z para el cual P[Z>z ] =, de manera que P[ Z z /2 ]=-, como muestra la Figura 9. z 2 /2 fz ( z) e 2 z 2 /2 fz ( z) e 2 área Pz Z z /2 /2 área PZ z área PZ z /2 /2 área PZ z /2 /2 z z z /2 z /2 Figura 9. Conceptos de percentil (a) e intervalo de confianza (b) z En matlab resulta muy fácil hallar los percentiles de la distribución normal. Por ejemplo, el valor de z que hace P[Z>z]=.5 (el 5% percentil) se calcula así:

25 Conceptos de Probabilidad, Variables Aleatorias Marco Aurelio Alzate Monroy y Procesos Estocásticos en Redes de Comunicaciones Universidad Distrital F.J.C. 89 >> z_5 = norminv( -.5,,) pues la instrucción norminv invierte la CDF de la distribución normal, de manera que norminv(p,,) retorna el valor de x que hace F X (x) = P[Xx] = p si X~N(,). Tomemos la última expresión y remplacemos Z por ( ˆN - m)/(/n) para multiplicar por /n en los tres términos dentro del argumento de la probabilidad: Nˆ m z/2 /2 /2 /2 ˆ z P z Z z Pz/2 z/2 P N m / n n n Restando ˆN en los tres términos y multiplicando por -, obtenemos la siguiente expresión. Ella determina un intervalo alrededor de ˆN donde se encuentra la verdadera media, m, con una confianza de -: ˆ z/2 ˆ z/2 PN m N n n El intervalo que delimita m, ˆN z/2 /n, se denomina "intervalo de confianza" y la cantidad - es el "nivel de confianza", pues - es la probabilidad con que podemos asegurar que m se encuentra en dicho intervalo. Por ejemplo, si queremos un nivel de confianza del 95% (=.5), usamos el percentil 2.5%, que es z.25 =.96 (norminv(-.25,,)=.96) y, con él, calculamos el intervalo del 95% de confianza en términos de ˆN, 2 y n. Desafortunadamente la anterior expresión se basa en el conocimiento de la varianza, 2, cuando apenas estamos tratando de estimar la media, m. Una alternativa es estimar 2 a partir de las muestras de las simulaciones mediante la expresión n 2 ˆ 2 S ( Ni N) n i pero, en este caso, la variable normalizada T = ( ˆN - m)/(s/n) no es exactamente normal, sino que tiene una distribución t de student con n- grados de libertad. La Figura 92 muestra la distribución t de student con, 2, 5 e grados de libertad, donde el último caso corresponde exactamente a la variable N(,). Como era de esperarse, la distribución t es más dispersa que la distribución normal debido a que el uso del estimador S 2 en vez de la varianza 2 introduce mayor incertidumbre. ft (; tdf).4.35.3.25 grado de libertad 2 grados de libertad 5 grados de libertad 9 grados de libertad grados de libertad (N(,)).2.5..5-4 -3-2 - 2 3 4 Figura 92. Comparación entre la distribución t de student y la distribución gaussiana t

25 Conceptos de Probabilidad, Variables Aleatorias Marco Aurelio Alzate Monroy y Procesos Estocásticos en Redes de Comunicaciones Universidad Distrital F.J.C. 9 Procediendo de la misma manera que cuando se conocía la varianza, ˆ t/2; n S ˆ t/2; ns PN m N n n donde t ;df es el % percentil de la distribución t de student con df grados de libertad, esto es, P[T>t ;df ]= si T es una variable aleatoria con distribución t de student con df grados de libertad. El percentil t ;df es igualmente fácil de calcular con matlab: >> t_alfa_df = tinv(-alfa,df); El programa del Listado 8 realiza tantas simulaciones como sean necesarias para satisfacer unos requerimientos de confianza específicos. Por ejemplo, supongamos que queremos obtener un intervalo del 95% de confianza para el número promedio de paquetes en una cola M/M/ con =.75 y =, que sea 5% del promedio estimado. La manera de invocar el programa sería así: >> [m,v,delta]=simulacionesmmnk(.75,,,inf,8,.5,.95) Un posible resultado sería el siguiente, en el que se requirieron 8 simulaciones: Con 2 simulaciones, el número promedio de paquetes es 2.8562 más o menos 243.646% Con 3 simulaciones, el número promedio de paquetes es 2.94 más o menos 47.3829% Con 4 simulaciones, el número promedio de paquetes es 2.9323 más o menos 24.7332% Con 5 simulaciones, el número promedio de paquetes es 2.949 más o menos 6.6842% Con 6 simulaciones, el número promedio de paquetes es 2.933 más o menos 2.6756% Con 7 simulaciones, el número promedio de paquetes es 2.8847 más o menos.464% Con 8 simulaciones, el número promedio de paquetes es 2.898 más o menos 9.3492% Con 9 simulaciones, el número promedio de paquetes es 2.923 más o menos 8.855% Con simulaciones, el número promedio de paquetes es 2.9673 más o menos 7.895% Con simulaciones, el número promedio de paquetes es 2.9848 más o menos 7.8% Con 2 simulaciones, el número promedio de paquetes es 2.9848 más o menos 6.423% Con 3 simulaciones, el número promedio de paquetes es 3.277 más o menos 6.5325% Con 4 simulaciones, el número promedio de paquetes es 3.239 más o menos 6.% Con 5 simulaciones, el número promedio de paquetes es 3.22 más o menos 5.867% Con 6 simulaciones, el número promedio de paquetes es 3.99 más o menos 5.47% Con 7 simulaciones, el número promedio de paquetes es 3. más o menos 5.25% Con 8 simulaciones, el número promedio de paquetes es 2.9862 más o menos 4.9235% function [m,v,delta] = SimulacionesMMnk(lambda, mu, servidores, cupo,... tiemposimulacion, intervalo, confianza) % [m,v,delta]=n_simulaciones_mmnk(.75,,,inf,8,.5,.95) % Ejecuta no menos de 5 ni más de 5 simulaciones de una cola M/M/servidores/cupo % con tasa de llegadas lambda y tasa de servicio mu. Cada simulación se ejecuta % durante tiemposimulación segundos. El número de simulaciones se detiene si los % intervalos del 95% de confianza se alcanzan a estimar dentro de más o menos 5% % del promedio estimado. Devuelve la media (m), la varianza (v) y el intervalo de % E[N], E[Q], E[T], E[W], Gamma y Pb % suma = [ ]; % Acumula las muestras de las 6 variables suma2 = [ ]; % Acumula los cuadrados de las muestras numerosimulaciones = ; % Cuenta las simulaciones que debe hacer porcentaje = ; % Nivel de confianza while ((porcentaje/ > intervalo) * (numerosimulaciones<5) +...

25 Conceptos de Probabilidad, Variables Aleatorias Marco Aurelio Alzate Monroy y Procesos Estocásticos en Redes de Comunicaciones Universidad Distrital F.J.C. 9 (numerosimulaciones<2)) % no menos de dos ni más de 5 simulaciones, esperando satisfacer el % intervalo de confianza solicitado numerosimulaciones = numerosimulaciones + ; % Una simulación más [traza,en,eq,et,ew,g,pb] = ColaMMnk(lambda, mu, servidores, cupo,... tiemposimulacion); suma = suma + [EN EQ ET EW G PB]; % Acumula las medidas suma2 = suma2 + [EN^2 EQ^2 ET^2 EW^2 G^2 PB^2]; % y sus cuadrados if numerosimulaciones > m = suma/numerosimulaciones; % Estima los promedios y las varianzas v = (suma2 - suma.*suma/numerosimulaciones)/(numerosimulaciones-); percentil = tinv(.5+confianza/2,numerosimulaciones-); delta = percentil*sqrt(v/numerosimulaciones); porcentaje = *delta()/m(); disp(['con ' num2str(numerosimulaciones) ' simulaciones, el '... 'número promedio de paquetes es ' num2str(m()) ' más o '... 'menos ' num2str(porcentaje) '%']); end end Listado 8. Este programa hace tantas simulaciones como sean necesarias para obtener un intervalo de confianza y un nivel de confianza específicos. Es interesante notar que un estudio de simulación que involucre aleatoriedad jamás podrá arrojar resultados como "el número promedio de paquetes es 3", sino que sus resultados deben tener la siguiente forma: "Según el estudio de simulación, con un nivel de confianza del 95% el número promedio de paquetes se encuentra entre 2.9 y 3.".