Simulación estadı́stica 26 de enero de 2009 2 Capı́tulo 1 Introducción 1.1. Conceptos básicos La simulación es la técnica que consiste en realizar experimentos de muestreo sobre el modelo de un sistema. Un modelo no es más que un conjunto de variables junto con ecuaciones matemáticas que las relacionan y restricciones sobre dichas variables. La modelización es una etapa presente en la mayor parte de los trabajos de investigación (especialmente en las ciencias experimentales). En muchas ocasiones, la realidad es bastante compleja como para ser estudiada directamente y es preferible la formulación de un modelo que contenga las variables más relevantes que aparececen en el fenómeno en estudio y las relaciones más importantes entre ellas. Frecuentemente, la resolución de los problemas que se pretenden abordar puede realizarse por procedimientos analı́ticos sobre el modelo construido (normalmente mediante el uso de herramientas matemáticas como las de resolución de ecuaciones ordinarias o de ecuaciones diferenciales, el cálculo de probabilidades, etc.). En otras circunstancias dicha resolución analı́tica no es posible (o es tremendamente complicada o costosa) y es preferible una aproximación de la solución mediante simulación. 1.2. Experimentación real y simulación La experimentación directa sobre la realidad puede tener muchos inconvenientes: un coste muy alto gran lentitud en ocasiones las pruebas son destructivas a veces no es ética (experimentación sobre seres humanos) puede resultar imposible (un acontecimiento futuro) 3 4 CAPÍTULO 1. INTRODUCCIÓN Razones como esas (y algunas otras) pueden indicar la ventaja de trabajar con un modelo del sistema real. La estadı́stica es la ciencia que se preocupa de cómo estimar los parámetros y contrastar la validez de un modelo a partir de los datos observados del sistema real que se pretende modelizar. Una vez se ha construido un modelo, la primera tentativa debe ser siempre tratar de resolver analı́ticamente el problema que nos ocupa. En caso de ser esto posible, la solución es exacta (a menudo la resolución también es rápida). En caso contrario puede recurrirse a la simulación que involucrará mucha labor de procesado. Gracias a la gran potencia de cálculo de los computadores actuales los programas de simulación pueden ofrecer una solución aproximada rápida en la mayor parte de los problemas susceptibles de ser modelados. Ejemplo 1.2.1 Supóngase que se quiere calcular la probabilidad de aparición de exactamente dos caras en tres lanzamientos de una moneda. La experimentación sobre la situación real consistirı́a en repetir numerosas veces los tres lanzamientos y observar con qué frecuencia se obtienen exactamente dos caras. El sistema real es el mecanismo por el cual se realizan los lanzamientos. Un modelo razonable para este sistema es el de una variable aleatoria X ∈ B (3, 0. 5) (supuesto que la moneda tiene la misma probabilidad de cara que de cruz). Bajo este modelo, se tratarı́a de calcular P (X = 2). En este caso la resolución analı́tica es factible y muy sencilla 2 1 1 3 3 1 = = 0. 375 P (X = 2) = 2 2 8 2 La simulación consistirı́a en obtener números aleatorios (en ordenador) para replicar artificialmente los tres lanzamientos en gran cantidad de ocasiones, observando la frecuencia relativa con la que aparecen exactamente dos caras. Ejemplo 1.2.2 Supóngase el siguiente juego: un jugador lanza una moneda (abonando un euro por cada lanzamiento) hasta que el número de caras supere en tres al número de cruces obtenidas. En ese momento el jugador recibe 10 unidades monetarias. ¿Resulta rentable jugar? De nuevo aquı́ la experimentación real es muy lenta. La modelización puede realizarse de nuevo gracias a la teorı́a de la probabilidad. En esta ocasión, sin embargo, la resolución analı́tica serı́a complicada (salvo que se tengan conocimientos de cadenas de Markov). Parece, por tanto, conveniente una aproximación mediante simulación. Se tratarı́a de ir replicando artificialmente el lanzamiento de la moneda simulando un gran número de posibles partidas y examinando la pérdida o ganancia media. 1.3. VENTAJAS E INCONVENIENTES DE LA SIMULACIÓN 1.3. 5 Ventajas e inconvenientes de la simulación Ventajas: 1. En casos en los que la resolución analı́tica no puede llevarse a cabo. 2. Cuando existen medios de resolver analı́ticamente el problema pero dicha resolución es complicada y costosa. 3. Si se desea experimentar antes de que exista el sistema. 4. Cuando es imposible experimentar sobre el sistema real por ser dicha experimentación destructiva. 5. En ocasiones en las que la experimentación sobre el sistema es posible pero no ética. 6. Es de utilidad en sistemas que evolucionan muy lentamente en el tiempo. Inconvenientes: 1. La construcción de un buen modelo puede ser una tarea muy laboriosa. 2. Frecuentemente el modelo omite variables o relaciones importantes entre ellas. 3. Resulta difı́cil conocer la precisión de la simulación, especialmente en lo relativo a la precisión del modelo formulado. 6 CAPÍTULO 1. INTRODUCCIÓN Capı́tulo 2 Generación de números pseudoaleatorios uniformes en (0. 1) 2.1. Introducción Casi todos los métodos de simulación se basan en la posibilidad de generar números aleatorios con distribución U (0. 1). Hasta el gran desarrollo de los ordenadores los números aleatorios se obtenı́an por procedimientos experimentales (loterı́as, ruletas) y se almacenaban en tablas. En la actualidad estos números son generados por ordenador y se denominan pseudoaleatorios ya que, en realidad, todos los números de la sucesión que se genera son predecibles a partir del primero, llamado semilla. En cualquier caso, todo generador de números pseudoaleatorios mı́nimamente aceptable debe comportarse como si se tratase de una muestra genuina de datos independientes de una U (0. 1). 2.1.1. Propiedades deseables de un generador de números pseudoaleatorios Para poder utilizar sin reservas un generador de números pseudoaleatorio éste debe satisfacer los contrastes estadı́sticos más habituales en este contexto: los de aleatoriedad (los contrastes de rachas o los de saltos), los de independencia (como los basados en autocorrelaciones, el test de Ljung-Box, el contraste de pares seriados, etc) y los de bondad de ajuste a una U (0. 1) (entre ellos es test chi-cuadrado y el de KolmogorovSmirnov). También existen otros contrastes especı́ficos que tratan de indagar a la vez sobre varios de los aspectos anteriores. Entre ellos destacamos el contraste del poker y el del coleccionista. 7 8 CAPÍTULO 2. GENERACIÓN DE NÚMEROS UNIFORMES EN (0. 1) Además de estas propiedades de tipo estadı́stico existen otros requisitos computacionales. Unos y otros pueden resumirse en la siguiente lista. Requisitos deseables para un generador 1. Producir muestras según una distribución U (0. 1). 2. Pasar los contrastes de aleatoriedad e independencia más habituales. 3. Que la sucesión generada sea reproducible a partir de la semilla. 4. Tener una longitud de ciclo tan grande como se desee. 5. Generar valores a alta velocidad. 6. Ocupar poca memoria. 2.2. Método de los cuadrados medios Es debido a von Neumann y tiene fundamentalmente sólo interés histórico. 1. Se toma un número entero inicial, x0 , llamado semilla, de 2n cifras. 2. Se eleva al cuadrado obteniendo un número de 4n cifras (completando, quizá, con ceros a la izquierda). 3. Se considera x1 el número entero formado por las 2n cifras centrales. 4. Se eleva al cuadrado x1 y se repite el proceso anterior tantas veces como sea preciso. 5. Finalmente se consideran los números ui = xi , 102n ya en el intervalo (0. 1). Ejemplo 2.2.1 Tómese n = 2 y x0 = 4122. Resulta: x0 = 4122 x20 = 16|9908|84 x1 = 9908 x21 = 98|1684|64 x2 = 1684 x22 = 02|8358|56 x3 = 8358 x23 = 69|8561|64 x4 = 8561 x24 = 73|2907|21 x5 = 2907 x25 = 08|4506|49 De esta forma, los números pseudoaleatorios en (0. 1) son u0 = 0. 4122 u1 = 0. 9908 u2 = 0. 1684 u3 = 0. 8385 u4 = 0. 8561 u5 = 0. 2907 Siguiendo, de nuevo, con n = 2, pero tomando como semilla x0 = 3708, se obtiene x0 x2 x4 x6 x8 = 3708 = 1300 = 6100 = 4100 = 6100 x20 x22 x24 x26 = 13|7492|64 = 01|6900|00 = 37|2100|00 = 16|8100|00 x1 x3 x5 x7 = 7292 = 6900 = 2100 = 8100 x21 x23 x25 x27 = 56|1300|64 = 47|6100|00 = 04|4100|00 = 65|6100|00 Ası́ pues, como x8 = x4 , los valores u4, u5 , u6 , u7 se repetirán cı́clicamente de forma indefinida. Este tipo de fenómenos de ciclo corto son su mayor inconveniente. 2.3. MÉTODO DE LEHMER 2.3. 9 Método de Lehmer El método consiste en los siguientes pasos: 1. Se toma como semilla un número entero, x0 , de n cifras. 2. Se elige otro entero, c, de k cifras. Suele tomarse k < n. 3. Se calcula x0 · c, número de, a lo sumo, n + k cifras. 4. Se separan las k cifras de la izquierda de x0 · c y al número formado por las n cifras restantes se le resta el que forman esas k cifras de la izquierda, dando lugar a x1 . 5. Se repite este proceso tantas veces como sea necesario. 6. Se devuelven los valores ui = xi . 102n Ejemplo 2.3.1 Tomando n = 4, k = 2, x0 = 4122 y c = 76, se obtiene x0 x1 x2 x3 x4 x5 = 4122 = 3241 = 6292 = 8145 = 8959 = 0816 x0 · c = 31|3272 x1 · c = 24|6316 x2 · c = 47|8192 x3 · c = 61|9020 x4 · c = 68|0884 x5 · c = 06|2016 3272 − 31 = 3241 6316 − 24 = 6292 8192 − 47 = 8145 9020 − 61 = 8959 0884 − 68 = 0816 2016 − 06 = 2010 De esta forma u0 = 0. 4122 u1 = 0. 3241 u2 = 0. 6292 u3 = 0. 8145 u4 = 0. 8959 u5 = 0. 0816 Todavı́a en el caso de que n = 4 y k = 2, pero con x0 = 2000 y c = 50, se tiene x0 · c = 10|0000 y ası́ x1 = 0000 − 10 = −10 < 0. Este es precisamente uno de los peores inconvenientes de este método: la aparición de iterantes negativos. También aparecen, con frecuencia, ciclos cortos (en particular, el cero es un valor absorbente de este generador). 10 CAPÍTULO 2. GENERACIÓN DE NÚMEROS UNIFORMES EN (0. 1) 2.4. Métodos congruenciales Se basan en la idea de considerar una combinación lineal de los últimos k enteros generados y calcular su resto al dividir por un entero fijo m. El método congruencial lineal simple que procede como sigue: 1. Elegir un número entero positivo m (normalmente en relación con el tipo de enteros que se va a usar) y otros dos números enteros, a y c, tales que 0 < a < m y 0 ≤ c < m. 2. Fijar la semilla x0 , un valor entero inicial que cumpla 0 ≤ x0 < m. 3. Obtener de forma recurrente xn = (axn−1 + c) mod m para n = 1, 2, . . . 4. Devolver los valores un = xn , m n = 0. 1, . . . Cuando tomamos c = 0 el generador se dice congruencial multiplicativo. Si c > 0, se dice congruencial mixto. Ejemplo 2.4.1 Considérese un generador congruencial con m = 8, a = 5, c = 4: xn = (5xn−1 + 4) mod 8 Tomando como semilla los valores 5 ó 2 se obtiene: x0 = 5 x1 = 5 x2 = 5 · · · x0 = 2 x1 = 6 x2 = 2 x3 = 6 · · · que presentan ciclos de longitud 1 y 2 respectivamente. Cambiando el valor de c a 2 se tiene xn = (5xn−1 + 2) mod 8 y ası́, x0 = 5 x1 = 3 x2 = 1 x3 = 7 x4 = 5 · · · x0 = 2 x1 = 4 x2 = 6 x3 = 0 x4 = 2 · · · donde ambos ciclos son de longitud cuatro. Finalmente dejando el mismo valor de m pero eligiendo a = 5 y c = 5, se tiene xn = (5xn−1 + 5) mod 8, que conduce a x0 x5 x0 x5 =5 =2 =2 =3 x1 x6 x1 x6 =6 =7 =7 =4 x2 x7 x2 x7 =3 =0 =0 =1 x3 x8 x3 x8 =4 =5 =5 =2 con ciclo de longitud 8, que es el máximo valor posible. x4 = 1 ··· x4 = 6 ··· 2.4. MÉTODOS CONGRUENCIALES 2.4.1. 11 Generadores congruenciales de ciclo máximo Además de las propiedades estadı́sticas deseables para cualquier generador, una cuestión importante para los generadores congruenciales (como se ha visto en los ejemplos previos) es la de garantizar que el ciclo del generador sea máximo (o, cuando menos, muy elevado). En la práctica tratará de tomarse el ciclo igual o muy próximo al número de enteros de tipo largo del lenguaje en cuestión. En general, se define la longitud del ciclo (o perı́odo) de un generador de números pseudoaleatorios uniformes, como el menor número entero positivo, p, que cumple que existe un n0 natural tal que xi+p = xi para todo i = n0 . n0 + 1, . . . En el caso de un generador congruencial mixto el máximo valor para el perı́odo es m. También puede demostrarse que si un generador congruencial tiene ciclo máximo para cierta elección de la semilla, entonces lo tiene para cualquier otra. Un resultado que sirve para caracterizar qué propiedades deben cumplir los parámetros de un generador congruencial para que tenga perı́odo máximo es el teorema de Knuth (1969). Teorema 2.4.1 (Knuth) Las siguientes condiciones son necesarias y suficientes para que un generador congruencial con parámetros m, a y c, tenga perı́odo máximo (i.e. p = m). 1. c y m son primos entre sı́ (i.e. m.c.d. (c, m) = 1). 2. a − 1 es múltiplo de todos los factores primos de m (i.e. a ≡ 1mod g, para todo g factor primo de m). 3. Si m es múltiplo de 4, entonces a − 1 también lo ha de ser (i.e. m ≡ 0 mod 4 ⇒ a ≡ 1 mod 4). A la luz del teorema de Knuth, es fácil darse cuenta porqué sólo el tercero de los generadores del ejemplo anterior tenı́a perı́odo óptimo. 12 CAPÍTULO 2. GENERACIÓN DE NÚMEROS UNIFORMES EN (0. 1) 2.4.2. Generadores congruenciales de algunos lenguajes y bibliotecas de rutinas En ordenadores binarios es muy común elegir m = 2β o m = 2β − 1, donde β depende del tamaño de palabra (tı́picamente m será el mayor entero representable en el ordenador o una unidad mayor que él). En los generadores con m = 2β resulta especialmente fácil expresar las condiciones del teorema de Knuth de forma mucho más sencilla: Ası́, al ser m una potencia de 2, su único factor primo es el 2 y, por tanto la primera condición equivale a que c sea impar. Para β ≥ 2 se tiene que m es múltiplo de 4 y, por tanto la tercera condición impone que a − 1 también lo sea. Por último, de nuevo por ser el 2 el único factor primo de m, la segunda condición pedirı́a que a − 1 fuese par, lo cual ya es consecuencia de que sea múltiplo de 4. En resumen, si m = 2β , con β ≥ 2, el generador congruencial tiene perı́odo máximo si y sólo sı́ c es impar y a = 4k + 1, siendo k un número natural. Algunos generadores habituales en lenguajes con enteros (con signo) de 36 bits corresponden con las elecciones m = 235 m = 235 a = 27 + 1 c = 1 a = 515 c=1 Todos ellos tienen tienen perı́odo máximo (e igual a 235 ' 3,44 × 1010 ). Otros generadores congruenciales para enteros (con o sin signo) de 32 bits y algunos lenguaje o bibliotecas que los usan o los han usado en el pasado son m = 231 m = 231 − 1 m = 231 − 1 m = 232 a = 314159269 a = 16807 a = 630360016 a = 663608941 c = 453805245 c=0 APL, IMSL y SIMPL/I c=0 Algunos FORTRAN c=0 Ahrens y Dieter (1974) Aunque sólo el primero tiene perı́odo máximo, los demás lo tienen muy elevado. El lenguaje C (bajo UNIX) posee un generador congruencial de números pseudoaleatorios de 48 bits: el drand48. Sus parámetros son m = 248 , a = 25214903917 y c = 11. La semilla se establece mediante la sentencia srand48() introduciendo como argumento un entero de 32 bits que corresponde a los 32 bits más significativos de x0 (entero de 48 bits). Los 16 bits de menor orden se toman siempre coincidentes con el número (decimal) 13070. Los parámetros a y c se pueden modificar por el usuario desde otras rutinas del C. Los valores por defecto para estas cantidades ofrecen un generador de perı́odo máximo ya que m = 2β , con β = 48, c es impar y a = 6 303 725 979 · 4 + 1. 2.5. MEDIDAS ESTADÍSTICAS DE LA CALIDAD DE UN GENERADOR 2.4.3. 13 Otros generadores congruenciales Generador congruencial lineal múltiple xn = (a1 xn−1 + a2 xn−2 + · · · + ak xn−k + c) mod m Generadores congruenciales no lineales xn = g(xn−1 ) mod m Knuth(1981): xn = g(xn−1 ) mod m, con g(x) = ax2 + bx + c. Generadores congruenciales matriciales xn = (Axn−1 + C) mod m con xn un vector d−dimensional y A y C matrices d × d. Los elementos de los vectores y de las matrices son enteros entre 1 y m − 1. 2.5. Medidas estadı́sticas de la calidad de un generador de números pseudoaleatorios La mayorı́a de los contrastes estadı́sticos para estudiar la calidad de un generador de números aleatorios se basan en medir posibles discrepancias (en algún sentido) de las muestras generadas por el método en cuestión con respecto a las hipótesis de aleatoriedad, independencia y ajuste a una distribución U (0. 1). En casi todos los casos se acaba recurriendo a un contraste de tipo chi-cuadrado en el que se comparan las frecuencias esperadas, ei , de ciertas modalidades, con las observadas, oi , mediante el estadı́stico D= k X (oi − ei )2 i=1 ei , que seguirá, aproximadamente, una distribución χ2k−1 , bajo la hipótesis nula que se contrasta. A continuación detallamos algunos de los contrastes más habituales. 2.5.1. Contraste chi-cuadrado de Pearson El test chi-cuadrado está basado en un estadı́stico que, para una variable discreta o de tipo cualitativo, compara la frecuencia de aparición de cada una de las modalidades observadas (ni ) con las frecuencias esperadas, en base a la distribución de probabilidad especificada (ei ). Concretamente, para una variable discreta con k modalidades, el contraste se basa en el estadı́stico sugerido por Pearson en el año 1900: Q= k X (ni − ei )2 i=1 ei 14 CAPÍTULO 2. GENERACIÓN DE NÚMEROS UNIFORMES EN (0. 1) cuya distribución aproximada es la de una χ2k−1 , siempre que la distribución especificada sea la correcta. Comentarios: 1. Es muy corriente aplicar el test chi-cuadrado aún en casos en los que la distribución de la variable no está totalmente especificada sino que depende de algún parámetro que, por tanto, habrá de ser estimado (por ejemplo el caso en que se suponga que la variable en concreto sigue una distribución de Poisson y resta por especificar su parámetro λ). En estos casos la distribución aproximada del test ha de ser corregida para incorporar esta información pasando a ser una χ2k−r−1 , siendo r el número de parámetros estimados por máxima verosimilitud. 2. El contraste chi-cuadrado se utiliza habitualmente incluso cuando la variable objeto de estudio es continua. En este caso, dicha variable ha de ser agrupada en intervalos de clase. 3. Una limitación, bastante recomendable en la práctica, es la de no llevar a cabo el contraste chi-cuadrado cuando la frecuencia esperada de alguna clase sea menor que 5. Aquellos casos en que esta condición falla pueden tratarse agrupando varios valores distintos hasta que se cumpla esta restricción. Ejemplo 2.5.1 Considérese los siguientes datos sobre “espacio de disco (en MBytes) ocupado por usuario en una estación de trabajo”: 35, 45, 47, 50. 31, 30. 25, 33, 35, 40. 45, 47, 49, 42, 40. 50. 46, 55, 42, 46. Estúdiese la bondad de ajuste de dichos datos a una distribución U [a, b], realizando el contraste chi-cuadrado. En primer lugar se estiman por máxima verosimilitud los parámetros de la distribución uniforme, obteniéndose respectivamente el mı́nimo y el máximo muestral: â = 25 y b̂ = 55. Dividiendo el intervalo [25, 55] en cuatro clases de igual longitud se obtiene la siguiente tabla: clases ni [25, 320 5) 3 [320 5, 40) 5 [40. 470 5) 8 [470 5, 55] 4 Total 20 ei (ni − ei )2 /ei 5 00 8 5 0 5 10 8 5 00 2 20 20 8 En este caso el valor del estadı́stico es Q = 20 8, que corresponde a un nivel crı́tico de p = 00 09426, para una distribución chi-cuadrado con 4 − 2 − 1 = 1 grado de libertad, con lo cual aunque puede aceptarse la hipótesis de que la distribución poblacional es uniforme con α = 00 01 o α = 00 05, no se aceptarı́a con α = 00 1. 2.5. MEDIDAS ESTADÍSTICAS DE LA CALIDAD DE UN GENERADOR 2.5.2. 15 Contraste de Kolmogorov-Smirnov A diferencia del procedimiento anterior, el test de Kolmogorov-Smirnov está especialmente diseñado para el contraste de ajuste a distribuciones continuas. El contraste de Kolmogorov-Smirnov está basado en la distribución del estadı́stico Dn : Dn = sup |Fn (x) − F (x)| x∈R que representa la máxima discrepancia, en vertical, entre la función de distribución empı́rica Número de observaciones Xi ≤ x Fn (x) = n y la teórica (F ). Dn = máx Dn,i = máx{|Fn (x(i) ) − F (x(i) )|, |Fn− (x(i) ) − F (x(i) )|} i=1,2,...,n Ejemplo 2.5.2 Contrastar que la muestra de datos de ocupación de disco provenga de una distribución N (40. 3). x(i) 25 30 31 33 35 40 42 45 46 47 49 50 55 F (x(i) ) Fn (x(i) ) Fn− (x(i) ) 0 00 05 0 0 0 0 0 00043 0 10 0 05 0 0 0 00135 0 15 00 10 00 00982 00 20 00 15 00 04779 00 30 00 20 0 0 05 0 40 00 30 00 74751 00 50 00 40 00 95221 00 60 00 50 0 0 0 97725 0 70 00 60 00 99019 00 80 00 70 0 0 0 99865 0 85 00 80 00 99957 00 95 00 85 1 1 00 95 Dn,i 00 05 00 09957 00 14865 00 19018 00 25221 00 2 00 34751 00 45221 00 37725 00 29019 00 19865 00 14957 00 05 Se obtiene Dn = 00 45221, cuyo nivel crı́tico es p < 00 01, que indica un claro rechazo de la hipótesis establecida. 2.5.3. Contrastes de independencia Una de las hipótesis estadı́sticas más importantes asumidas en toda la inferencia paramétrica clásica es que la muestra no es más que una realización de un conjunto de variables independientes. Métodos gráficos Como paso previo a la utilización de métodos cuantitativos siempre será ilustrativo representar gráficamente los datos frente al tiempo, es decir, secuencialmente según su orden de recogida (Xi frente al ı́ndice i). 16 CAPÍTULO 2. GENERACIÓN DE NÚMEROS UNIFORMES EN (0. 1) Las situaciones de dependencia se corresponden con gráficas demasiado estables o demasiado cambiantes, es decir, o bien muy planas, o bien en continuos dientes de sierra o zigzagueantes. Por el contrario, los casos de ausencia de dependencia se identificarán mediante gráficas moderadamente cambiantes. Otro tipo de gráficas que también permite detectar situaciones de dependencia son las gráficas en las que se representa cada valor de la muestra frente al valor anteriormente observado (Xi+1 frente a Xi ). Otra forma de estudiar si hay dependencia en la muestra es mediante el cálculo de los coeficientes de autocorrelación. Del mismo modo que el coeficiente de correlación lineal mide, de alguna forma, la presencia o ausencia de dependencia entre las variables en cuestión, pueden definirse toda una serie de coeficientes de autocorrelación que, en ese mismo sentido, miden la dependencia entre los datos observados con cierto número de instantes de diferencia. Dada una muestra X1 , X2 , . . . , Xn , se define el coeficiente de autocorrelación muestral de orden uno como el valor Pn (Xi − X)(Xi−1 − X) r(1) = i=2 Pn 2 i=1 (Xi − X) que expresa, de alguna manera, la correlación entre cada dato y el observado un instante antes. En general, el coeficiente de autocorrelación de orden k (o a k retardos), se define por Pn r(k) = i=k+1 (Xi − X)(Xi−k Pn 2 i=1 (Xi − X) − X) Una forma gráfica de visualizar los coeficientes de autocorrelación es el llamado correlograma. En él se representan, para los primeros retardos, unas barras con altura igual al coeficiente de autocorrelación correspondiente al retardo en cuestión. Ası́ pues, las barras del correlograma oscilan entre −1 y 1. Es obvio que la dependencia positiva se caracterizará por la presencia de muchos coeficientes de correlación sustancialmente mayores que cero, mientras que la negativa vendrá dada por autocorrelaciones de signo alternado, siendo la del primer retardo negativa. El caso de independencia se corresponde con autocorrelaciones cercanas a cero. Bajo la hipótesis de independencia, cada coeficiente de autocorrelación muestral, r(k), tiene distribución lı́mite normal de media cero y varianza 1/n. Este hecho permite, por sı́ mismo, el contrastar la hipótesis sobre si el coeficiente de autocorrelación teórico es cero. √De hecho, es habitual incluir en el correlograma bandas de confianza a una distancia 2/ n del eje horizontal, de manera que se considerarán siginificativamente distintos de cero aquellas autocorrelaciones que sobresalgan de los lı́mites. Otra posibilidad es incluir bandas de amplitud variable, teniendo en cuenta que, en el supuesto de que sean no nulas las primeras k − 1 autocorrelaciones (ρ1 , . . . , ρk−1 ), la P 2 1 + k−1 j=1 ρj varianza de r(k) es . n 2.5. MEDIDAS ESTADÍSTICAS DE LA CALIDAD DE UN GENERADOR 17 Contrastes basados en rachas Pensemos en una muestra de una variable con dos posibles resultados (por ejemplo ESSSEESEESES, con E: “error en un dispositivo” y S: “dispositivo sin error”). Definición 2.5.1 Una racha es una sucesión de valores consecutivos repetidos que esté flanqueada por valores adyacentes distintos. En el ejemplo anterior las rachas serı́an E, SSS, EE, S, EE, S, E, S. Independientemente de lo probable que sea observar los valores concretos de la variable, es obvio que el número total de rachas (o las longitudes de las mismas) constituye una medida de lo aleatoriamente que están repartidos los posibles valores en cuestión a lo largo de la muestra observada. Demasiadas rachas implican excesiva alternancia de valores (dependencia negativa), mientras que pocas rachas indican largas sucesiones de valores contiguos repetidos (dependencia positiva). El contraste del número total de rachas Considérese una muestra de tamaño n correspondiente a una variable con dos posibles resultados, de manera que existen n1 observaciones de un tipo y n2 iguales al otro valor de la variable en cuestión (n1 + n2 = n). Si llamamos R al número total de rachas observadas en la muestra, pueden obtenerse la media y la varianza de esta variable aleatoria (condicionadas a que hay n1 y n2 de elementos de cada tipo): E(R) = 1 + V ar(R) = 2n1 n2 n 2n1 n2 (2n1 n2 − n) n2 (n − 1) Cuando el tamaño muestral n tiende a infinito, de forma que además n1 /n tienda a una la distribución de la variable R se puede aproximar por la distribución constante, p N E(R), V ar(R) . Aunque originalmente el test de las rachas está diseñado para una distribución con sólo dos posibles valores, suele aplicarse a aquellos casos en los que la distribución en cuestión es continua codificando las observaciones con los valores + o −, según el dato en cuestión quede por arriba o por abajo de la mediana muestral. 18 CAPÍTULO 2. GENERACIÓN DE NÚMEROS UNIFORMES EN (0. 1) El contraste de rachas ascendentes y descendentes Cuando la variable en cuestión presenta una distribución de tipo continuo, a pesar de que el test de las rachas por encima o por debajo de la mediana se puede usar, existe una contraste, basado en el número de cierto tipo de rachas, que trata de hacer un uso más intensivo de la continuidad de la variable. Se trata del contraste basado en el número total de rachas ascendentes o descendentes: Para cada par de datos consecutivos se anota un signo + si están en orden ascendente y − si están en orden descendente. Con el conjunto de datos (n en total) se consigue formar una tira de n − 1 signos + o −, sobre los cuales se cuenta el número total de rachas R. La distribución del estadı́stico R está tabulada para tamaños muestrales pequeños (normalmente para n < 25), mientras que, cuando el número de datos, n, excede tabulados, puede usarse una aproximación por la distribución de los valores p N (2n − 1)/3, (16n − 29)/90 . El contraste de Ljung-Box Existen distintos procedimientos para contrastar la independencia mediante la realización de un contraste sobre si los primeros m coeficientes de autocorrelación son cero. Uno de los más utilizados a tal efecto es el de Ljung-Box, que utiliza para ello el estadı́stico m X r(k)2 Q = n(n + 2) n−k k=1 que se distribuye, aproximadamente, según una χ2m−1 . Ejemplo 2.5.3 Considerénse los datos de “espacio de disco duro ocupado por usuario”: 35, 45, 47, 50. 31, 30. 25, 33, 35, 40. 45, 47, 49, 42, 40. 50. 46, 55, 42, 46. Contrastar la independencia usando los test de las rachas y el de Ljung-Box. Test del número de rachas Dada la muestra original, se clasifican ahora los datos de la misma en función de que se hallen por encima o por debajo de la mediana, Me = (42 + 45)/2 = 430 5 : − + + + − − − − − − + + + − − + + + −+ El número de rachas es R = 8 y n1 = n2 = 10. En las tablas puede encontrarse el p-valor: p = 00 256. Por tanto, se acepta la independencia. 2.5. MEDIDAS ESTADÍSTICAS DE LA CALIDAD DE UN GENERADOR 19 Test de las rachas ascendentes y descendentes La secuncia de signos + y - correspondiente a los datos de la muestra es: + + + − − − + + + + + + − − + − + − + El número de rachas es R = 9. Bajo independencia, la probabilidad de que el número de rachas ascendentes y descendentes sea menor o igual que 9 es 00 0255. De aquı́ se deduce que el nivel crı́tico del contraste es p = 00 051. Este valor plantea serias dudas sobre la hipótesis de independencia: tendrı́amos una aceptación muy justa de dicha hipótesis con nivel α = 00 05 pero ya no con α = 00 06. Test de Ljung-Box Tomemos m = 4. Los cuatro primeros coeficientes de autocorrelación son r(1) = 0 0 52550. r(2) = 00 33034, r(3) = −00 09887 y r(4) = −00 06706. A partir de estos valores, el estadı́stico de Ljung-Box resulta Q = 90 44, cuyo pvalor está comprendido entre 00 01 y 00 025, como se puede ver en las tablas de una chi-cuadrado con tres grados de libertad. En resumen, parece que existen razones para rechazar la independencia. 2.5.4. El contraste del coleccionista Este procedimiento requiere fijar un entero positivo, M , y discretizar los valores generados, X1 , X2 , . . . , Xn , de la forma dM · Xi e+1, donde dxe denota la parte entera de x. Ası́ se consigue una sucesión de enteros aleatorios cuyos valores están comprendidos entre 1 y M . Ahora se procede (como un coleccionista) a contabilizar cuál es el número, Q, (aleatorio) de valores a generar hasta que se completa la colección de todos los enteros entre 1 y M . Obviamente, bajo las hipótesis de aleatoriedad y distribución U (0. 1), cada posible entero entre 1 y M tiene la misma probabilidad de aparecer en cada generación y, por tanto, resulta posible calcular la distribución de probabilidad de Q. De esta forma podemos utilizar los valores calculados de las probabilidades P (Q = M ) , P (Q = M + 1) , . . . para calcular las frecuencias esperadas de cada clase y confrontarlas con las observadas vı́a el estadı́stico chi-cuadrado. 20 CAPÍTULO 2. GENERACIÓN DE NÚMEROS UNIFORMES EN (0. 1) 2.5.5. Contrastes de salto Dados dos números α y β tales que 0 ≤ α < β ≤ 1, los contrastes de saltos tratan de examinar, para cada valor generado, Xi , si se cumple α ≤ Xi ≤ β, anotando, en ese caso, un 1 (0 en caso contrario). En estas condiciones, la probabilidad de que aparezca un 1 es p = β − α y la de que aparezcan j ceros desde la aparición de un uno hasta la del siguiente uno es pj = p (1 − p)j , j = 0. 1, 2, . . . (que corresponde a una distribución geométrica). De nuevo puede aplicarse el test chi-cuadrado a las clases resultantes. Las elecciones más habituales de α y β dan lugar a los siguientes contrastes: El test de rachas bajo la mediana Consiste en tomar α = 0 y β = 1/2. El test de rachas sobre la mediana Corresponde al caso α = 1/2 y β = 1. El test del tercio medio Que no es más que la elección α = 1/3 y β = 2/3. 2.5.6. El contraste de permutaciones Dada la sucesión de números pseudoaleatorios generada se consideran bloques de T valores consecutivos. Cada uno de los bloques puede presentar una cualquiera de las T ! posibles ordenaciones de esos T valores. Además, de ser el generador adecuado, cada posible ordenación ocurrirá con igual probabilidad: T1! . El test consiste en observar una gran número de bloques y comparar las frecuencias observadas de cada posible ordenación con las esperadas mediante el test chi-cuadrado. Las elecciones más comunes son T = 3, 4, ó 5. 2.5.7. El contraste del poker En un primer momento se procede como en el contraste del coleccionista con M = 10. A partir de aquı́ hay varias formas de actuar: Poker 1 Se toman conjuntos sucesivos de cinco enteros y, para cada uno, se determina cuál de las siguientes posibilidades se da: 1. Un mismo entero se repite cinco veces (abreviadamente, AAAAA). 2. Un mismo entero se repite cuatro veces y otro distinto aparece una vez (AAAAB). 3. Un entero se repite tres veces y otro distinto se repite dos (AAABB). 4. Un entero se repite tres veces y otros dos distintos aparecen una vez cada uno (AAABC). 2.5. MEDIDAS ESTADÍSTICAS DE LA CALIDAD DE UN GENERADOR 21 5. Un entero se repite dos veces, otro distinto se repite también dos veces y un tercer entero diferente aparece una sóla vez (AABBC). 6. Un entero se repite dos veces y otros tres distintos aparecen una vez cada uno (AABCD). 7. Los cinco enteros que aparecen son todos distintos (ABCDE). Bajo la hipótesis de aleatoriedad y ajuste a una U (0. 1), pueden calcularse las probabilidades de estas modalidades: P (AAAAA) = 0. 0001, P (AAAAB) = 0. 0045, P (AAABB) = 0. 0090. P (AAABC) = 0. 0720. P (AABBC) = 0. 1080. P (AABCD) = 0. 5040. P (ABCDE) = 0. 3024. Es frecuente que las clases AAAAA y AAAAB se agrupen a la hora de aplicar el test chi-cuadrado, ya que, en caso contrario, la restricción habitual ei ≥ 5 llevarı́a a que 0. 0001 · n5 ≥ 5, es decir, n ≥ 250 000. Poker 2 Algo también bastante habitual es usar conjuntos de cinco enteros (como en el caso anterior) pero definiendo las categorı́as según el número de enteros distintos de entre los cinco observados. Ası́ P (1 entero diferente) = 0. 0001, P (2 enteros diferentes) = 0. 0135, P (3 enteros diferentes) = 0. 1800. P (4 enteros diferentes) = 0. 5040. P (5 enteros diferentes) = 0. 3024, procediendo frecuentemente a agrupar las dos primeras modalidades. Poker 3 A menudo se consideran conjuntos de cuatro enteros. En tal caso, P (AAAA) = 0. 001, P (AAAB) = 0. 036, P (AABB) = 0. 027, P (AABC) = 0. 432, P (ABCD) = 0. 504, siendo también bastante habitual el agrupar las dos primeras categorı́as. 22 2.5.8. CAPÍTULO 2. GENERACIÓN DE NÚMEROS UNIFORMES EN (0. 1) El contraste de pares seriados La idea consiste en fijar un entero M ≥ 2 y considerar los enteros dM · Xi e + 1, tomar ahora estos valores apareados y utilizar el contrate chi-cuadrado considerando como categorı́as los posibles pares (i, j) tales que i, j ∈ {1, 2, . . . , M }. Ası́ se medirá la discrepancia entre la frecuencias observadas en estas categorı́as y las esperadas, iguales todas a n2 M12 . La elecciones más frecuentes son M = 3, 10 ó 20. 2.5.9. Chi-cuadrado sobre chi-cuadrado Todos los contrastes anteriores se han planteado desde la perspectiva de la realización de una única prueba. Es decir, se toma un número, n (normalmente grande), de valores obtenidos por el generador y se realiza el contraste evaluando el estadı́stico y comparándolo con el punto crı́tico de una chi-cuadrado para decidir si se acepta o rechaza la hipótesis (independencia, ajuste, aleatoriedad). En realidad tiene mucho más sentido la realización de un gran número de pruebas, evaluando en cada una el valor del estadı́stico y, o bien observar que la proporción de rechazos del test se aproxima al valor nominal fijado (normalmente α = 0. 01 ó α = 0. 05), o más precisamente aplicando, de nuevo, el contraste chi cuadrado para comprobar el ajuste de la distribución del estadı́stico a la chi-cuadrado especificada bajo la hipótesis nula. Capı́tulo 3 Métodos universales para la simulación de variables continuas En lo que sigue se expondrán dos de los métodos generales para simular distribuciones continuas: el método de inversión y el de aceptación/rechazo. Ambos son aplicables a gran número de contextos siempre que la distribución que se desea simular tenga ciertas caracterı́sticas. En ambos casos la herramienta indispensable es algún método de generación de números pseudoaleatorios uniformes en (0,1). 3.1. El método de inversión Es el método universal por antonomasia para simular distribuciones continuas. También a veces se denota método de Montecarlo. Está basado en el siguiente resultado teórico. Teorema 3.1.1 (de inversión) Sea X una variable aleatoria con función de distribución F , continua e invertible. Entonces, la variable aleatoria U = F (X), transformada ˙ de la original mediante su propia función de distribución, tiene distribución U (0, 1). Recı́procamente, si U ∈ U (0, 1) entonces la variable F −1 (U ) tiene función de distribución F (la misma distribución que la de X). Demostración: Denotando por G la función de distribución de U y dado un valor u ∈ (0, 1), se tiene G (u) = P (U ≤ u) = P (F (X) ≤ u) = P X ≤ F −1 (u) = F F −1 (u) = u Por otra parte es obvio que G (u) = 0 si u ≤ 0 y G (u) = 1 si u ≥ 1, con lo cual G es la función de distribución de una U (0, 1). Para la segunda parte, denotando por H la función de distribución de X = F −1 (U ), con U (0, 1), H (x) = P (X ≤ x) = P F −1 (U ) ≤ x = P (U ≤ F (x)) = F (x) 23 24 CAPÍTULO 3. MÉTODOS UNIVERSALES PARA VARIABLES CONTINUAS El resultado anterior da pie al siguiente algoritmo genérico para simular cualquier variable continua con función de distribución F invertible: Algoritmo (método de inversión) 1. Generar U ∼ U (0, 1). 2. Devolver X = F −1 (U ). Ejemplo 3.1.1 Dar un algoritmo, basado en el método de inversión, para simular la distribución exponencial de parámetro λ > 0. La función de densidad de una exp (λ) es λe−λx si x ≥ 0 f (x) = 0 si x < 0 y su función de distribución: F (x) = 1 − e−λx 0 si x ≥ 0 si x < 0 que es continua e invertible en el intervalo [0. ∞). Obsérvese que x = F −1 (u) ⇔ F (x) = u ⇔ 1 − e−λx = u ln (1 − u) . ⇔ 1 − u = e−λx ⇔ x = − λ Como consecuencia, el algoritmo serı́a 1. Generar U ∼ U (0, 1). ) . 2. Devolver X = − ln(1−U λ que, en versión simplificada, resulta: 0. Hacer L = −1/λ. 1. Generar U ∼ U (0, 1). 2. Devolver X = L · ln U 3. Repetir los pasos 1-2 tantas veces como se precise. 3.1. EL MÉTODO DE INVERSIÓN 3.1.1. 25 Ventajas e inconvenientes del método de inversión La ventaja más importante del método de inversión es que, en general, es aplicable a cualquier distribución continua. No obstante presenta algunos inconvenientes. Inconvenientes del método de inversión 1. En ocasiones la función de distribución no tiene una expresión explı́cita (por ejemplo para la distribución normal). 2. A veces, aún teniendo una expresión explı́cita para F (x), es imposible despejar x en la ecuación F (x) = u (es decir, encontrar una expresión explı́cita para F −1 (u)). 3. Aún siendo posible encontrar x = F −1 (u), puede ocurrir que esta expresión sea complicada y conlleve una gran lentitud de cálculo. El primero de los inconvenientes expuesto puede, a veces, subsanarse mediante el uso de aproximaciones de la distribución en cuestión o mediante tabulaciones de la misma. El segundo suele abordarse mediante la utilización de métodos numéricos para la resolución aproximada de la ecuación F (x) = u. El mayor problema práctico que esto conlleva es la necesidad de resolver numéricamente una ecuación cada vez que se desee generar un nuevo número aleatorio que siga esa distribución (sin que los cálculos hechos para el anterior valor simulado sean de ayuda). 3.1.2. Algunas distribuciones que pueden simularse por el método de inversión En lo que sigue u representa un número pseudoaleatorio en el intervalo (0,1). Distribución exponencial (Exp(λ), λ > 0) Función de densidad: f (x) = λe−λx , x ≥ 0. Función de distribución: F (x) = 1 − e−λx , x ≥ 0. ln (1 − u) , Inversa de la distribución: F −1 (u) = − λ ln u Forma simplificada de la inversa: S(u) = − ,. λ Distribución de Cauchy 1 , x ∈ R. π (1 + x2 ) 1 arctan x Función de distribución: F (x) = + , x ∈ R. 2 π Inversa de la distribución: F −1 (u) = tan π u − 12 . Forma simplificada de la inversa: S(u) = tan πu. Función de densidad: f (x) = 26 CAPÍTULO 3. MÉTODOS UNIVERSALES PARA VARIABLES CONTINUAS Distribución triangular en (0. a) 2 x 1− , 0 < x < a. a a x2 2 x− , 0 < x < a. Función de distribución: F (x) = a 2a √ Inversa de la distribución: F −1 (u) = a 1 − 1 −√u . Forma simplificada de la inversa: S(u) = a (1 − u) . Función de densidad: f (x) = Distribución de Pareto (a > 0 , b > 0) aba , x ≥ b. xa+1 a b , x ≥ b. Función de distribución: F (x) = 1 − x b . Inversa de la distribución: F −1 (u) = (1 − u)1/a b Forma simplificada de la inversa: S(u) = 1/a . u Función de densidad: f (x) = Distribución de Weibull (λ > 0 , α > 0) α Función de densidad: f (x) = αλα xα−1 e−(λx) , x ≥ 0 α Función de distribución: F (x) = 1 − e−(λx) , x ≥ 0. (− ln (1 − u))1/α −1 Inversa de la distribución: F (u) = . λ 1/α (− ln u) Forma simplificada de la inversa: S(u) = . λ La distribución de Laplace o doble exponencial (Lap(µ, λ) µ, λ > 0) Función de densidad: f (x) = λ2 e−λ|x−µ| , para todo x ∈ R. Función de distribución: 1 λ(x−µ) e si x < µ 2 F (x) = 1 −λ(x−µ) 1 − 2e si x ≥ µ Inversa de la distribución: ln 2u µ+ si u < 1/2 −1 λ F (u) = µ − ln 2(1 − u) si u ≥ 1/2 λ pudiéndose generar por el método de inversión, usando como auxiliar T ∼ Exp(λ) : Algoritmo basado en el método de inversión 1. Generar U, V ∼ U (0. 1). ln U 2. Hacer T = . λ 3. Si V < 1/2, devolver X = µ + T. En caso contrario, hacer X = µ − T . 3.1. EL MÉTODO DE INVERSIÓN 3.1.3. 27 Inversión aproximada Como se comentó anteriormente, en casos en los que no es posible determinar una expresión explı́cita para F (x) o en los que no se puede hallar la de su inversa, puede optarse por encontrar expresiones sencillas que aproximen razonablemente bien la función F −1 (u). Ejemplo 3.1.2 A continuación se detalla la aproximación encontrada por Odeh y Evans para la distribución normal estándar. Estos autores consideran la función auxiliar √ √ A −2 ln v √ , −2 ln v g (v) = B −2 ln v siendo A (x) = 4 X i ai x y B (x) = i=0 4 X bi xi , con i=0 a0 = −0. 322232431088 a2 = −0. 342242088547 a4 = −0. 0000453642210148 b1 = 0. 588581570495 b3 = 0. 103537752850 a1 = −1 a3 = −0. 0204231210245 b0 = 0. 0993484626060 b2 = 0. 531103462366 b4 = 0. 0038560700634 La aproximación consiste en utilizar g (1 − u) en lugar de F −1 (u) para los valores de / [10−20 , 1 − 10−20 ] (que sólo ocurre u ∈ [10−20 , 12 ] y −g (u) si u ∈ [ 12 , 1 − 10−20 ]. Para u ∈ con una probabilidad de 2 · 10−20 ) la aproximación no es recomendable. Algoritmo de Odeh y Evans 1. 2. 3. 4. Generar U ∼ U (0, 1) . Si U < 10−20 o U > 1 − 10−20 entonces volver a 1. Si U < 0. 5 entonces hacer X = g (1 − U ) sino hacer X = −g (U ) . Devolver X. 28 CAPÍTULO 3. MÉTODOS UNIVERSALES PARA VARIABLES CONTINUAS 3.2. El método de aceptación/rechazo Es un método universal alternativo al de inversión que está adaptado al caso en que, aunque se desconozca una fórmula explı́cita para F (x) o sea difı́cil de resolver F (x) = u, sı́ se disponga de una expresión (preferiblemente sencilla) para la función de densidad f (x). El método está basado en el siguiente resultado teórico. Teorema 3.2.1 (de aceptacion/rechazo) Sea X una variable aleatoria con función de densidad f y sea U otra variable aleatoria, independiente de la anterior, con distribución U (0, 1). Entonces, para cada c > 0, la variable aleatoria bidimensional (X, c · U · f (X)) tiene distribución uniforme en el recinto A = {(x, y) ∈ R2 /0 ≤ y ≤ cf (x)} Recı́procamente, si dada una función de densidad f , un vector aleatorio (X, Y ) tiene distribución uniforme sobre el conjunto A, entonces, su primera componente, X, es una variable aleatoria unidimensional con función de densidad f . El teorema anterior establece la equivalencia entre la simulación de densidades unidimensionales y la simulación de variables bidimensionales con distribución uniforme sobre el hipografo de c · f (x) (el conjunto de puntos del plano que quedan por debajo de la gráfica de c · f pero por encima del eje OX). La idea del algoritmo consistirá en utilizar el recı́proco en el teorema para simular valores de ese tipo de distribuciones bidimensionales y luego tomar la primera componente. Para simular valores de esa distribución bidimensional se usa también el teorema en sentido directo aplicándolo a otra densidad auxiliar g, fácil de simular. Supóngase que se desea simular una distribución con densidad f y que no es factible hacerlo por el método de inversión. Considérese otra distribución, con densidad g, fácil de simular, de forma que exista cierta constante c > 0 tal que f (x) ≤ c · g (x) , para todo x ∈ R Teniendo en cuenta esta condición, Af ⊂ Acg , donde Af = {(x, y) /0 ≤ y ≤ f (x)} , Acg = {(x, y) /0 ≤ y ≤ c · g (x)} . son los hipografos de f y de c · g. Dado que la densidad g es fácil de simular, puede aplicarse la primera parte del teorema de aceptación/rechazo para encontrar una variable aleatoria bidimensional, (T, Y ), con distribución uniforme sobre Acg . Aceptando tan sólo los valores de (T, Y ) que pertenezcan a Af se tendrá una variable bidimensional con distribución uniforme sobre Af . Técnicamente hablando estamos afirmando que la distribución condicionada (T, Y ) |(T,Y )∈Af es uniforme sobre Af . Finalmente la segunda parte del teorema permite obtener una variable con densidad f sin más que tomar la primera componente del par obtenido. 3.2. EL MÉTODO DE ACEPTACIÓN/RECHAZO 29 De forma más detallada, el método constarı́a de los siguientes pasos: 1. Generar un valor T con densidad g. 2. Utilizar el teorema de aceptación/rechazo para generar un par (T, Y ) con distribución uniforme en Acg . 3. Comprobar si (T, Y ) ∈ Af . En caso afirmativo, hacer X = T , en caso contrario, volver al paso 1. El par de valores (T, Y ) se obtiene simplemente simulando U ∼ U (0, 1) y definiendo Y = c · U · g (T ). Además, la condición (T, Y ) ∈ Af que hay que comprobar en el último paso equivale a Y ≤ f (T ). Teniendo todo esto en cuenta el algoritmo procederı́a como sigue: Algoritmo de aceptación/rechazo 1. Repetir 1.1. Generar U ∼ U (0, 1) y T con densidad g. 2. Hasta que c · U · g (T ) ≤ f (T ) . 3. Devolver X = T. Ejemplo 3.2.1 (densidades acotadas en un intervalo cerrado) Sea f una función de densidad con soporte en un intervalo cerrado [a, b] (i.e., {x/f (x) 6= 0} = [a, b]) de tal forma que ∃M > 0 tal que f (x) ≤ M ∀x (es decir, f es acotada superiormente). En este caso puede tomarse como densidad auxiliar g la de una U [a, b]. En efecto, tomando c = M (b − a) y teniendo en cuenta que 1 si x ∈ [a, b] b−a g (x) = 0 si x ∈ / [a, b] c se tiene que f (x) ≤ M = b−a = c · g (x), ∀x ∈ [a, b]. Ası́ pues, el algoritmo quedarı́a como sigue: 1. Repetir 1.1. Generar U, V ∼ U (0, 1). 1.2. Hacer T = a + (b − a) V . 2. Hasta que M · U ≤ f (T ). 3. Devolver X = T . 30 CAPÍTULO 3. MÉTODOS UNIVERSALES PARA VARIABLES CONTINUAS 3.2.1. Eficiencia del algoritmo de aceptación/rechazo Dado que el algoritmo de aceptación/rechazo repite los pasos 1-2 un número aleatorio de veces, será importante medir, de alguna forma, la eficiencia del mismo. En primer lugar, existen restricciones obvias para la constante c que ha de elegirse en el algoritmo. Ası́, debido al hecho de que f (x) ≤ c · g (x), se tiene Z Z 1 = f (x) dx ≤ c g (x) dx = c, luego c ≥ 1. Puede demostrarse además que si c = 1 entonces f y g serı́an densidades correspondientes a la misma distribución (iguales salvo en un conjunto de probabilidad cero) y, por tanto, si g es fácil de simular igualmente fácil lo serı́a f . Ası́ pues, se tiene c > 1. La comprobación que aparece en el paso 2 del algoritmo es c · U · g (T ) ≤ f (T ). La probabilidad de aceptación de esta condición es R f (x) dx 1 area (Af ) =R = . p= area (Acg ) c c · g (x) dx De ésta se obtiene la probabilidad de rechazo: q = c−1 . El flujo del algoritmo es c aleatorio y el número de repeticiones de los pasos 1-2 hasta poder generar un valor de f (paso 3) es una variable aleatoria, N , con distribución geométrica (entendida ésta como el número de pruebas necesarias hasta obtener el primer éxito). En tales circunstancias el número medio de repeticiones de los pasos 1-2 es E (N ) = 1 =c p luego c puede interpretarse como el número medio de comparaciones necesarias (o de repeticiones de los pasos 1-2, o de pares de variables (T, U ) que se necesitan generar) hasta obtener un valor simulado de la variable X. Es obvio, por tanto, que cuanto más cercano a 1 sea el valor de c más eficiente será el algoritmo. 3.2.2. Elección de c Una vez fijada la densidad g es obvio que el mejor valor de c (que denotaremos por copt ) se obtiene al encontrar el más pequeño número real c que verifica f (x) ≤ c · g (x), es decir c≥ f (x) , para todo x del soporte de g (que ha de contener al de f ). g (x) De esta forma, ha de cumplirse que f (x) 6= 0 ⇒ g (x) 6= 0 y además f (x) . x/g(x)>0 g (x) c ≥ máx Ası́ pues, el menor valor posible que cumple esta condición es f (x) . x/g(x)>0 g (x) copt = máx 3.2. EL MÉTODO DE ACEPTACIÓN/RECHAZO 31 Ejemplo 3.2.2 (Simulacion de la normal mediante la doble exponencial) Se trata de simular la distribución normal estándar, cuya función de densidad viene dada por x2 1 f (x) = √ e− 2 , para todo x ∈ R, 2π mediante aceptación/rechazo, utilizando como densidad auxiliar la doble exponencial de parámetro 1 (o distribución de Laplace, Lap(0,1) o Lap(1)), cuya función de densidad viene dada por 1 g (x) = e−|x| , para todo x ∈ R. 2 El valor óptimo para c es 2 f (x) copt = máx = máx x∈R g (x) x∈R x √1 e− 2 2π 1 −|x| e 2 r = 2 máx eϕ(x) = π x∈R r 2 máxx∈R ϕ(x) e , π 2 donde ϕ (x) = − x2 + |x|. Dado que esta función es simétrica, continua en toda la recta real y diferenciable tantas veces como se desee salvo en x = 0, bastará encontrar su máximo absoluto en el intervalo [0. ∞]: x > 0 ⇒ ϕ0 (x) = −x + 1, ϕ00 (x) = −1; {x > 0. ϕ0 (x) = 0} ⇔ x = 1 ϕ00 (1) < 0. De esta forma, ϕ alcanza un máximo relativo en x = 1 y otro de idéntico valor en x = −1. Resulta fácil demostrar que ambos son máximos absolutos (por los intervalos de crecimiento y decrecimiento de la función). Consiguientemente, r r r 2 ϕ(1) 2 1/2 2e e = e = ' 1. 3155. copt = π π π Como consecuencia el algoritmo procederı́a del siguiente modo: 1. Repetir 1.1. Generar U, V, W ∼ U (0, 1). 1.2. Si W < 0. 5 hacer 2 T = ln V , sino hacer T = − ln V . 2. Hasta que U · exp T2 − |T | + 21 ≤ 1. 3. Devolver X = T . La condición que hay que comprobar para decidir si hay aceptación o rechazo surge de que r r 2 2 π T T 1 g (T ) 2e exp − |T | = U · exp − |T | + . c·U · = U 2 2 2 2 f (T ) π Dado que el número medio de repeticiones de los pasos 1-2 hasta que se obtiene un valor simulado p π para X es c ' 1. 3155 y la probabilidad de aceptación en el paso 2 es p = 1/c = 2e = 0. 76017, puede decirse que el algoritmo es bastante eficiente. 32 CAPÍTULO 3. MÉTODOS UNIVERSALES PARA VARIABLES CONTINUAS 3.2.3. Elección de la densidad auxiliar g Como se ha comentado anteriormente, un aspecto importante que influye en la eficiencia del método de aceptación/rechazo es el valor de la constante c. Conocida la densidad auxiliar g sabemos cómo elegir c de forma que el algoritmo sea lo más eficiente posible, sin embargo es obvio que algunas densidades auxiliares serı́an mejores candidatas que otras para conseguir un método eficiente. En general, cuanto más parecida sea la forma de g a la de f , más pequeño es el mı́nimo c necesario para conseguir que la gráfica de c · g quede por encima de la de f . De todas formas, el problema de encontrar la densidad auxiliar g que ofrezca un c (óptimo) lo menor posible, no tiene solución. Mejor dicho, tiene la solución trivial g = f , que es absolutamente inútil para la implementación del algoritmo, pues si f era difı́cil de simular, no podemos tomar como g la propia f (ya que serı́a igual de difı́cil de simular). Una solución intermedia al problema de elegir una función de densidad auxiliar, g, adecuada consiste en tomar cierta familia paramétrica de densidades que presenten un abanico de formas entre las que haya alguna que se parece bastante a la de f : {gθ /θ ∈ Θ}, encontrar el valor de c óptimo para cada densidad de esa familia: cθ = máx x f (x) gθ (x) y, finalmente, elegir el mejor valor del parámetro, θ0 , en el sentido de ofrecer el menor posible cθ : f (x) . cθ0 = mı́n máx x gθ (x) θ∈Θ 3.2. EL MÉTODO DE ACEPTACIÓN/RECHAZO 33 Ejemplo 3.2.3 Supóngase que se desea utilizar como densidad auxiliar en el método de aceptación/rechazo, para simular la normal estándar, la doble exponencial de parámetro λ > 0 (Lap(0,λ) o Lap(λ)) , gλ (x) = λ −λ|x| e , para todo x ∈ R. 2 Si pretendemos encontrar el mejor valor de λ, en términos de eficiencia del algoritmo, debemos calcular 2 f (x) = gλ (x) cλ0 = mı́n máx λ>0 x∈R x √1 e− 2 2π mı́n máx λ −λ|x| λ>0 x∈R e 2 . De forma totalmente análoga a la vista para el caso λ = 1, se tiene 2 cλ = x √1 e− 2 2π máx λ −λ|x| x∈R e 2 1 = λ r r 2 1 máx eϕλ (x) = π x∈R λ 2 máxx∈R ϕλ (x) e , π 2 donde ϕλ (x) = − x2 + λ |x|. De forma totalmente similar a aquel caso puede probarse que ϕλ alcanza su máximo absoluto en los puntos x = ±λ, siendo dicho valor máximo 2 ϕλ (±λ) = λ2 . Como consecuencia, 1 cλ = λ r λ2 2 ϕλ (±λ) e 2 e = π λ r 2 . π Ahora debemos encontrar λ0 tal que cλ0 = mı́nλ>0 cλ : dcλ = dλ r λ2 2 λe 2 λ − e π λ2 λ2 2 r = 2e π λ2 2 (λ2 − 1) , λ2 r λ2 λ2 λ2 d2 cλ 2 [λe 2 (λ2 − 1) + e 2 2λ]λ2 − e 2 (λ2 − 1) 2λ = dλ2 π λ4 r λ2 r λ2 2 e 2 (λ5 + λ3 − 2λ3 + 2λ) 2 e 2 (λ5 − λ3 + 2λ) = , = π λ4 π λ4 dcλ = 0 ⇔ λ = 1, ya que λ > 0 dλ r d2 cλ 2e =2 > 0, luego λ = 1 es un punto de mı́nimo. 2 dλ λ=1 π De esto se deduce que la mejor doble exponencial, como densidad auxiliar en el algoritmo, es la correspondiente a λ = 1, la usada en el ejemplo anterior. 34 CAPÍTULO 3. MÉTODOS UNIVERSALES PARA VARIABLES CONTINUAS 3.2.4. El método de aceptación/rechazo “squeeze” Esta variante del método de aceptación/rechazo es de gran utilidad en aquellas situaciones donde, para llevar a cabo la comprobación de la condición c·U ·g (T ) ≤ f (T ) , tiene un elavado coste computacional evaluar f (T ). La idea del método consiste en encontrar dos funciones h1 y h2 , fáciles de evaluar, que “aprieten”a f (i.e. h1 (x) ≤ f (x) ≤ h2 (x), ∀x), de manera que reduzcamos considerablemente el número de evaluaciones de ésta. Ası́ se conseguirı́a un algoritmo más eficiente, pues reemplazarı́amos las evaluaciones de f por evaluaciones de h1 o de h2 (mucho menos costosas computacionalmente). Algoritmo de aceptación/rechazo “squeeze” 1. Generar U ∼ U (0, 1) y T con densidad g. 2. 2.1 Si c · U · g (T ) ≤ h1 (T ) , hacer X = T. (Aceptación rápida) 2.2 Si c · U · g (T ) > h2 (T ) , volver a 1. (Rechazo rápido) 3. Si no se verifica ninguna de las condiciones del paso 2, comprobar la condición c · U · g (T ) ≤ f (T ) . Si c · U · g (T ) ≤ f (T ) , hacer X = T. Si no, volver a 1. Ejemplo 3.2.4 (Simulación “squeeze”de la distribución normal) Utilizando el teorema de Taylor, puede comprobarse que la funciónn de densidad de la normal estándar x2 1 f (x) = √ e− 2 , para todo x ∈ R, 2π 2 2 1 − x2 + 1− x √ puede “apretarse”por h1 (x) = √ 2 y h2 (x) = 2π 2π x4 8 . Capı́tulo 4 Métodos universales para la simulación de variables discretas En lo que sigue se expondrán algunos métodos generales para simular distribuciones discretas. En concreto, se estudiará el método de la transformación cuantil en su versión clásica y con etiquetados óptimos, el método de las tablas guı́a y los métodos de truncamiento. El problema consiste en simular una variable aleatoria discreta, X, que toma los valores x1 , x2 , . . ., xn (. . .), con probabilidades pj = P (X = xj ), j = 1, 2, . . . , n (. . .). Un planteamiento estándar, equivalente al anterior, consiste en resolver la cuestión de simular la variable aleatoria I que toma los valores 1, 2, . . . , n (. . .) con las mismas probabilidades pj , j = 1, 2, . . . , n (. . .). 4.1. El método de la transformación cuantil Este método es una adaptación del método de inversión (válido para el caso continuo) a distribuciones discretas. En primer lugar veamos porqué el método de inversión no es aplicable directamente en este caso. Dada una variable aletoria discreta, su función de distribución viene dada por X F (x) = pj , ∀x ∈ R. xj ≤x Supondremos (por comodidad) que los valores que toma la variable ya están ordenados y nos ceñiremos al caso finito. De esta forma tendrı́amos: x1 < x2 < · · · < xn . En este caso es obvio que el resultado dado por el teorema de inversión no es cierto ya que la variable aleatoria F (X) toma sólo los valores p1 , p1 +p2 , . . ., p1 +p2 +· · ·+pn . Siendo, por tanto, discreta y no pudiendo tener distribución U (0, 1). 35 36 CAPÍTULO 4. MÉTODOS UNIVERSALES PARA VARIABLES DISCRETAS De la misma forma, dada una variable U ∼ U (0, 1), tampoco puede ser cierto que F (U ) tenga la misma distribución que X. De hecho F −1 no está definida de forma única pues las funciones de distribución discretas no tienen inversa (para casi todo u ∈ [0, 1] no hay ningún x tal que F (x) = u y para un número finito (o infinito numerable) de u ∈ [0, 1] se tiene que existe todo un intervalo de valores para x cumpliendo F (x) = u). A pesar de ello puede definirse la llamada función cuantil (o inversa generalidada) de una distribución cualquiera F a partir de −1 Q (u) = ı́nf {x ∈ R/F (x) ≥ u} , ∀u ∈ (0, 1) . Es obvio que esta función siempre está definida y que cuando F sea invertible, Q = F −1 . El siguiente teorema da un resultado que generaliza al teorema de inversión a situaciones en las que F no es invertible. Teorema 4.1.1 (de inversion generalizada) Sea X una variable aleatoria con función de distribución F y con función cuantil Q. Si U es una variable aleatoria con distribución U (0, 1), la variable Q (U ) tiene la misma distribución que X. Demostración: Sea G la función de distribución de Q (U ). Dado x ∈ R, se tiene G (x) = P (Q (U ) ≤ x) = P (ı́nf {y ∈ R/F (y) ≥ U } ≤ x) Z F (x) = P (F (x) ≥ U ) = du = F (x) . 0 A partir del teorema de inversión generalizada puede obtenerse un algoritmo general para simular cualquier distribución de probabilidad discreta. Es el llamado algoritmo de transformación cuantil o de inversión generalizada. Algoritmo de transformación cuantil 1. Generar U ∼ U (0, 1). 2. Devolver X = Q (U ). La mayor dificultad en la implementación del algoritmo radica en el cálculo de ( , j ) X Q (U ) = ı́nf {x ∈ R/F (x) ≥ U } = ı́nf xj pi ≥ U i=1 = xk , tal que k X i=1 pi ≥ U > k−1 X i=1 pi . 4.1. EL MÉTODO DE LA TRANSFORMACIÓN CUANTIL 37 Todo el problema radica, por tanto, en encontrar el valor, k, de la variable, I, que guarda las etiquetas, para el cual la función de distribución supera o iguala por primera vez al valor de U . Este valor puede hallarse mediante una búsqueda secuencial, utilizando el siguiente algoritmo: Algoritmo de transformación cuantil con búsqueda secuencial 1. Generar U ∼ U (0, 1). 2. Hacer I = 1 y S = p1 . 3. Mientras U > S hacer 3.1. I = I + 1 y S = S + pI . 4. Devolver X = xI . Si se desea generar un gran número de valores de la variable X (que es P lo más habitual) puede resultar más eficiente calcular previamente las cantidades Sj = ji=1 pj de forma recursiva: S1 = p1 , Sj = Sj−1 + pj para j = 2, 3, . . . , n y hacer la comparación U > SI en el paso 3 del algoritmo anterior. De esta forma se evita lo que podrı́an ser cálculos repetitivos de las mismas sumas de probabilidades al simular distintos valores de X. Ejemplo 4.1.1 (Simulacion de la distribucion de Poisson) Tómese una variable, X, con distribución de Poisson de parámetro λ, que toma los valores x1 = 0, x2 = 1, . . . con probabilidades pj = P (X = xj ) = P (X = j − 1) = e−λ λj−1 , j = 1, 2, . . . (j − 1)! El algoritmo de inversión con búsqueda secuencial viene dado por 1. Generar U ∼ U (0, 1). 2. Hacer I = 1 y S = e−λ . 3. Mientras U > S hacer −λ λI−1 3.1. I = I + 1 y S = S + e (I−1)! . 4. Devolver X = I − 1. Debido a que esta forma de etiquetar los valores de la variable conlleva el desfase de una unidad en los ı́ndices, es recomendable ajustar el algoritmo para evitar este efecto.También, para simplificar los cálculos que aparecen en el paso 3.1, es conveniente calcular las probabilidades de forma recursiva P (X = j) = e−λ λj λ e−λ λj−1 λ = = P (X = j − 1) , j! j (j − 1)! j Ası́, el algoritmo optimizado es 1. Generar U ∼ U (0, 1). 2. Hacer I = 0, p = e−λ y S = p. 3. Mientras U > S hacer 3.1. I = I + 1, p = λI p y S = S + p. 4. Devolver X = I. 38 CAPÍTULO 4. MÉTODOS UNIVERSALES PARA VARIABLES DISCRETAS 4.1.1. Eficiencia del algoritmo Dada la forma del algoritmo general para simular una distribución discreta mediante el método de la transformación cuantil utilizando búsqueda secuencial, es fácil probar que el número de comprobaciones de la forma U > S es precisamente igual a I, el valor de la variable que contiene las etiquetas. Como el valor de I es aleatorio y variará con cada ejecución del algoritmo, una medida de la eficiencia del mismo será el número medio de comparaciones del paso 3, es decir, Pn si X toma un número finito (n) de valores j=1 jpj P∞ E (I) = si X toma un infinitos valores j=1 jpj Resulta pues evidente que, como no existe una única forma de etiquetar los valores que toma la variable en cuestión, habrá quizá algún etiquetado que ofrezca un menor número medio de comparaciones en el paso 3 del algoritmo que el etiquetado original (que obedece a la idea de ordenar de forma creciente los valores que toma la variable). Ejemplo 4.1.2 Considérese la variable aleatoria discreta X con distribución dada por P (X = 3) = 0. 1, P (X = 5) = 0. 3, P (X = 7) = 0. 6 Tomando x1 = 3, x2 = 5, x3 = 7, se tiene un etiquetado I con distribución P (I = 1) = 0. 1, P (I = 2) = 0. 3, P (I = 3) = 0. 6 y, por tanto, con media E (I) = 1 · 0. 1 + 2 · 0. 3 + 3 · 0. 6 = 2. 5. Si, por el contrario, consideramos el etiquetado x01 = 7, x02 = 5, x03 = 3, se tiene que P (I 0 = 1) = 0. 6, P (I 0 = 2) = 0. 3, P (I 0 = 3) = 0. 1 y ası́ E (I 0 ) = 1 · 0. 6 + 2 · 0. 3 + 3 · 0. 1 = 1. 5. Se observa que E (I 0 ) es sensiblemente inferior a E (I) y, por tanto, el segundo etiquetado proporciona un algoritmo más eficiente que el dado por el etiquetado l. Como parece deducirse del ejemplo anterior, un etiquetado será tanto mejor cuanto menores sean las etiquetas que se asignen a los valores que tienen mayor probabilidad. Dicho de otra forma, el etiquetado que se obtiene al ordenar los valores en orden decreciente de probabilidad. Cuando la variable a simular tiene un número finito de valores: x1 , x2 , . . ., xn , al implementar el método de la transformación cuantil con búsqueda secuencial Pn−1 Pn directa, una vez comprobado que U > j=1 pj , no es necesario comprobar U > j=1 pj = 1 (que siempre es falso), sinó que generamos xn sin necesidad de efectuar esa comparación. Por ese motivo el número medio de comparaciones serı́a realmente: n−1 X j=1 jpj + (n − 1) pn . 4.1. EL MÉTODO DE LA TRANSFORMACIÓN CUANTIL 39 Ejemplo 4.1.3 Consideremos la variable aleatoria discreta con distibución P (X = 1) = 0. 11, P (X = 3) = 0. 3, P (X = 5) = 0. 25, P (X = 7) = 0. 21, P (X = 9) = 0. 13. Tomando el etiquetado x1 = 1, x2 = 3, x3 = 5, x4 = 7 y x5 = 9, el número medio de comparaciones del algoritmo es E (I) = 0. 11 · 1 + 0. 3 · 2 + 0. 25 · 3 + (0. 21 + 0. 13) · 4 = 2. 82 Mientras que, utilizando el etiquetado óptimo x1 = 3, x2 = 5, x3 = 7, x4 = 9 y x5 = 1, el número medio de comparaciones se reduce a E (I) = 0. 3 · 1 + 0. 25 · 2 + 0. 21 · 3 + (0. 13 + 0. 11) · 4 = 2. 39 4.1.2. Cálculo directo de la función cuantil En ocasiones el método de la transformación cuantil puede acelerarse computacionalmente porque, mediante cálculos directos, es posible encontrar el valor de la función cuantil en cualquier U , en un tiempo de computación mı́nimo (evitando el bucle de búsqueda en el que se van acumulando las probabilidades). Ejemplo 4.1.4 (la distribución uniforme discreta en {1, 2, . . . , n}) En este caso la masa de probabilidad viene dada por pj = 1 , para j = 1, 2, . . . n. n De esta forma se tiene k X i=1 pi ≥ U > k−1 X i=1 pi ⇔ k k−1 ≥U > ⇔ k ≥ nU > k − 1. n n Esta última condición equivale a k = dnU e + 1, siendo dxe la parte entera de x. El algoritmo resulta: 1. Generar U ∼ U (0, 1). 2. Devolver X = dnU e + 1. 40 CAPÍTULO 4. MÉTODOS UNIVERSALES PARA VARIABLES DISCRETAS Ejemplo 4.1.5 (la distribución geométrica) La distribución geométrica representa el número de fracasos antes del primer éxito y tiene la siguiente masa de probabilidad P (X = j) = p (1 − p)j , j = 0. 1, . . . Para un valor j entero no negativo su función de distribución viene dada por F (j) = j X p (1 − p)i = i=0 p (1 − p)j+1 − p = 1 − (1 − p)j+1 . 1−p−1 Como consecuencia se tiene F (k) ≥ U > F (k − 1) ⇔ 1 − (1 − p)k+1 ≥ U > 1 − (1 − p)k ⇔ (1 − p)k > 1 − U ≥ (1 − p)k+1 ⇔ k ln (1 − p) > ln (1 − U ) ≥ (k + 1) ln (1 − p) ln (1 − U ) ⇔k< ≤k+1 ln (1 − p) condición que equivale a ln (1 − U ) . k= ln (1 − p) El algoritmo procederı́a de la siguiente forma: 0. Hacer a = ln (1 − p). 1. Generar U ∼ U(0, 1). 2. Devolver X = lnaU . 4.2. ALGORITMOS BASADOS EN ÁRBOLES BINARIOS 4.2. 41 Algoritmos basados en árboles binarios El uso de árboles binarios permite, en muchos casos, obtener algoritmos más eficientes que los basados en la búsqueda secuencial. Conceptos usados en este contexto: Árbol: Grafo orientado, formado por un sistema de nodos conectados entre sı́ mediante una serie de arcos. Nodo raı́z: Nodo del cual parten arcos pero al cual no llegan arcos. Nodo terminal: Nodo al cual llegan arcos pero del cual no parten arcos. Profundidad de un nodo: Número de nodos que le preceden. Árbol binario: Árbol en el que todo nodo, a excepción de los nodos terminales, tiene dos nodos hijos. Descripción de un árbol binario NODO RAÍZ ARCO aa aa a @ @ NODO TERMINAL c c c l l l l 42 CAPÍTULO 4. MÉTODOS UNIVERSALES PARA VARIABLES DISCRETAS Para la generación de una variable aleatoria discreta, X, con función de masa de probabilidad P (X = xi ) = pi , i = 1, 2, . . . , n se tratará de encontrar un árbol binario con n nodos terminales (uno para cada valor que se necesite generar), con profundidades di , i = 1, 2, . . . , n, de manera que n X pi di i=1 sea mı́nima. Es decir, se tratará de asignar mayor profundidad a los nodos correspondientes a valores de X con menor probabilidad. 4.2.1. Árboles de Huffman Un árbol de Huffman es un árbol binario en el que los nodos se generan siguiendo los siguientes pasos: 1. Agrupar los nodos con menor probabilidad en un solo nodo con probabilidad igual a la suma de ambos. 2. En el árbol resultante (con un nodo menos) proceder como en el paso anterior, repitiendo este proceso hasta finalizar con un árbol con solo dos nodos. 4.3. EL MÉTODO DE LA TABLA GUÍA 4.3. 43 El método de la tabla guı́a El mayor problema computacionalP del método de la cuantil consiste Ptransformación k k−1 en encontrar el ı́ndice k que cumple i=1 pi ≥ U > i=1 pi . Como ya se ha visto en los dos últimos ejemplos existen distribuciones para las cuales este valor k se puede calcular directamente. El método de la tabla guı́a consiste en hacer uso de la rapidez de cálculo de la función cuantil para alguna de esas distribuciones (fácilmente simulable mediante el método de inversión generalizada) para abreviar al el número Pmáximo Pk−1 de k comparaciones necesarias a la hora de comprobar la condición i=1 pi ≥ U > i=1 pi . Considérese una variable aleatoria discreta con masa de probabilidad dada por pj , j = 1, 2, . . . , n y defı́nanse las sumas acumulativas de estas probabilidades Pj (que no son otra cosa que los valores que toma la función de distribución), qj = i=1 pi , que, para evitar cálculos innecesarios, deben calcularse de forma recursiva: q0 = 0, qj = qj−1 + pj , j = 1, 2, . . . , n. Dada la variable aleatoria I, asociada al etiquetado original (o a otro) la idea del método consiste en construir n subintervalos equiespaciados contenidos en [0, 1] de la , i ) para i = 1, 2, . . . , n y luego definir los valores de la tabla guı́a forma Ji = [ i−1 n n i gi = máx j qj < , para i = 1, 2, . . . , n n es decir, para cada intervalo se considera el valor más alto del ı́ndice entero tal que la suma acumulada de probabilidades hasta él es menor que el extremo superior de dicho intervalo. Ejemplo 4.3.1 Tomemos como ejemplo la distribución discreta dada por p1 = 0. 13, p2 = 0. 25, p3 = 0. 17, p4 = 0. 1, p5 = 0. 24 y p6 = 0. 11. Se tiene que q1 = 0. 13, q2 = 0. 38, q3 = 0. 55, q4 = 0. 65, q5 = 0. 89 y q6 = 1. Los valores de la tabla guı́a son g1 = 1, g2 = 1, g3 = 2, g4 = 4, g5 = 4, g6 = 5. A la hora de aplicar el método de la transformación cuantil, dado el valor de U , es inmediato detectar en cuál de los intervalos Ji ha caı́do, basta con hacer i = dnU e + 1. Lo único que resta por hacer, una vez encontrado este ı́ndice, es obtener el valor del ı́ndice I a simular. Dicho valor será gi + 1 si ya ocurre que U > qgi . En caso contrario deberemos encontrar el primer ı́ndice j = gi − 1, gi − 2, . . . , 0, para el cual se cumple U > qj y luego hacer I = j + 1. 44 CAPÍTULO 4. MÉTODOS UNIVERSALES PARA VARIABLES DISCRETAS Algoritmo de simulación mediante una tabla guı́a 1. Generar U ∼ U (0, 1). 2. Hacer i = dnU e + 1. 3. Hacer j = gi . 4. Mientras U ≤ qj hacer j = j − 1. 5. Devolver I = j + 1. Por otra parte, los valores de la tabla guı́a pueden calcularse fácilmente de forma rápida según el siguiente algoritmo: Algoritmo de cálculo de la tabla guı́a 1. Desde i = 1 hasta n − 1 hacer gi = 0. 2. Hacer S = 0. 3. Desde i = 1 hasta n − 1 hacer 3.1. S = S + pi 3.2. j = dnSe + 1 3.3. gj = i 4. Desde i = 2 hasta n hacer gi = máx (gi−1 , gi ). 4.3.1. Eficiencia del algoritmo Cuando el valor U cae en el intervalo Ji , es obvio que el número medio de comparaciones en el paso 4 del algoritmo es menor o igual que 1 más el número de valores qj pertenecientes al intervalo Ji . Utilizando este hecho, la esperanza del número de comparaciones (N ) puede acotarse mediante n n 1X 1X (1 + # {j /qj ∈ Ji }) = 1 + # {j /qj ∈ Ji } E (N ) ≤ n i=1 n i=1 = 1+ 1 n−1 # {j /qj ∈ [0, 1)} = 1 + < 2. n n En general, el método es aplicable para tablas guı́a de m elementos (donde m no tiene porqué ser necesariamente igual a n). En tal caso el intervalo [0, 1) se divide en m subintervalos, pudiendo acotar el número medio de comparaciones mediante E (N ) ≤ n . Gracias a este argumento, para variables con un número exhorbitante de posibles 1+ m valores, pueden utilizarse tablas guı́a de un número más moderado de elementos de forma que la tabla no ocupe demasiada memoria y que, a la vez, el número medio de comparaciones esté acotado por un valor moderado. Ası́, por ejemplo, para una variable discreta con 1.000.000 de posibles valores podrı́amos utilizar una tabla guı́a de sólo 10.000 elementos (para que no ocupe demasiado en memoria) obteniendo que el número medio de comparaciones estarı́a acotado por 101. 4.4. MÉTODO DE TRUNCAMIENTO 4.4. 45 Método de truncamiento La idea general de este método consiste en hacer uso de una distribución continua auxiliar cuya función de distribución se parezca (en cierto sentido que se precisará más adelante) a la función de distribución de la variable discreta que se desea simular. Supóngase, sin pérdida de generalidad, que se desea simular la variable I, que toma los valores 1, 2, . . ., n, con probabilidades p1 , p2 , . . ., pn . En este caso, la función de distribución de I viene dada por X F (x) = pi . i≤x Supóngase, además, que tenemos otra variable aleatoria continua, con función de distribución G (x) y ciertos valores a0 = −∞ < a1 < a2 < · · · < an−1 < an = ∞, tales que F (i) − F (i− ) = pi = G (ai ) − G (ai−1 ), i = 1, 2, . . . , n. Esta última condición viene a garantizar que la probabilidad de que la variable continua caiga en el intervalo [ai−1 , ai ) coincide con la probabilidad con la que la variable discreta original toma el valor i. Si la distribución continua es fácil de simular, simplemente deberemos generar valores de la misma y luego transformarlos en valores de la variable I. Algoritmo de simulación por truncamiento 1. Generar T con distribución G. 2. Encontrar el valor i tal que ai−1 ≤ T < ai . 3. Devolver I = i. El método se hace especialmente rápido cuando el valor de i puede obtenerse de forma inmediata a partir del valor de T . Uno de los casos en los que esto es ası́ se da cuando G (0) = 0 y los valores ai = i, i = 0, 1, . . . , n (o, incluso, infinitos valores ai de esta forma). En este caso el algoritmo resulta: Algoritmo de simulación por truncamiento a la parte entera 1. Generar T con distribución G. 2. Hacer I = dT e + 1. 46 CAPÍTULO 4. MÉTODOS UNIVERSALES PARA VARIABLES DISCRETAS Ejemplo 4.4.1 (simulacion de la geométrica por truncamiento) La masa de probabilidad de la distribución geométrica es P (X = j) = P (I = j + 1) = p (1 − p)j , j = 0, 1, . . . Considérese como variable aleatoria continua auxiliar la exponencial, que tiene función de distribución dada por 1 − e−λx si x ≥ 0 G (x) = 0 si x < 0 Ahora bien, G (i) − G (i − 1) = 1 − e−λi − 1 − e−λ(i−1) = e−λ(i−1) − e−λi i−1 = p (1 − p)i−1 = e−λ(i−1) 1 − e−λ = 1 − e−λ e−λ siempre que tomemos p = 1 − e−λ . De esta forma se tiene G (i) − G (i − 1) = P (X = i − 1) = P (I = i) = pi y el algoritmo resultarı́a: 0. 1. 2. 3. Hacer λ = − ln (1 − p). Generar U ∼ U (0, 1). Hacer T = − lnλU . Devolver X = dT e. Este es el mismo algoritmo que se obtenı́a anteriormente cuando razonábamos cómo calcular directamente el valor de la función cuantil para la distribución geométrica. Capı́tulo 5 Métodos especı́ficos para la simulación de distribuciones notables En este capı́tulo se estudiarán algoritmos especı́ficos para simular algunas de las distribuciones de probabilidad más importantes. La mayorı́a de ellos son aplicaciones de los métodos generales ya expuestos, quizá con alguna particularidad. 5.1. 5.1.1. Distribuciones continuas La distribución uniforme Una vez generada la variable U con distribución U (0, 1), la variable X con distribución U (a, b) se obtiene haciendo X = a + (b − a)U. Algoritmo para generar la U (a, b) 1. Generar U ∼ U (0, 1). 2. Hacer X = a + (b − a)U. 47 48 CAPÍTULO 5. SIMULACIÓN DE DISTRIBUCIONES NOTABLES 5.1.2. La distribución normal Se trata de simular X con distribución normal estándar, ya que la variable Y ∈ N (µ, σ) , con parámetros arbitrarios (µ ∈ R, σ > 0), puede simularse mediante Y = µ + σX. Método de Box-Müller Se basa en la siguiente propiedad: √ Dadas E ∈ exp √ (1) y U ∈ U (0, 1) , variables aleatorias independientes, las variables 2E cos 2πU y 2Esen2πU son variables independientes con distribución N (0, 1) . Algoritmo de Box-Müller 1. Generar U, V√∼ U (0, 1). 2. Hacer W1 = −2 ln U y W2 = 2πV . 3. Devolver X1 = W1 cos W2 , X2 = W1 senW2 . Método polar Se basa en una propiedad que da la distribución condicionada a cierto suceso de un par de variables transformadas de otras uniformes: Dadas dos variables independientes V1 y V2 , con distribución U (−1, 1), la distribución condicionada s s ! 2 2 −2 ln (V1 + V2 ) −2 ln (V12 + V22 ) , V2 V1 2 2 V12 + V22 V12 + V22 V1 +V2 ≤1 es N2 0 0 1 0 , . 0 1 Algoritmo polar 1. Generar U1 , U2 ∼ U (0, 1). 2. Hacer V1 = 2U1 − 1, V2 = 2U2 − 1 y W = V12 + V22 . 3. Si W > 1 entonces volver a 1. q −2 ln W . 4. Hacer Y = W 5. Devolver X1 = V1 Y , X2 = V2 Y . 5.1. DISTRIBUCIONES CONTINUAS 49 Método del Teorema Central del Lı́mite Como su propio nombre indica, este método se deriva a partir del Teorema Central del Lı́mite: Dadas variables aleatorias T1 , T2 , . . ., Tn , independientes e idénticamente distribuidas, con media µT y varianza σT2 finitas, se tiene que T − µT √ n 'N (0, 1) , σT si n es suficientemente grande. Este teorema puede aplicarse para simular una N (0, 1) tomando variables con otra distribución más fácil de simular. El caso más habitual es elegir Ti = Ui ∈ U (0, 1) y n = 12 (por simplicidad de cálculo). De esta forma, la variable 12 X U − µU √ n= Ui − 6 σU i=1 tiene distribución aproximadamente N (0, 1) . Algoritmo basado en el TCL 1. Generar U1 , U2 , . . . , U12 ∼ U (0, 1). 2. Devolver X = U1 + U2 + · · · + U12 − 6. 5.1.3. La distribución de Cauchy Esta distribución puede definirse, de forma general, dependiendo de dos parámetros: µ el de localización y σ > 0 el de escala. Su función de densidad viene dada por f (x) = π σ2 σ , para todo x ∈ R. + (x − µ)2 Un sencillo cálculo permite hallar su función de distribución: 1 x−µ 1 F (x) = arctan + , π σ 2 pudiéndose implementar el método de inversión. Algoritmo basado en el método de inversión 1. Generar U ∼ U (0, 1). 2. Devolver X = σ tan (πU ) + µ. 50 CAPÍTULO 5. SIMULACIÓN DE DISTRIBUCIONES NOTABLES 5.1.4. La distribución exponencial Se simula utilizando el método de inversión. Algoritmo basado en el método de inversión 1. Hacer L = − λ1 . 2. Generar U ∼ U (0, 1). 3. Devolver X = L · ln U . 5.1.5. La distribución de Laplace o doble exponencial Esta distribución puede definirse, de forma general, dependiendo de dos parámetros: µ el de localización y λ > 0 el de escala. Su función de densidad viene dada por f (x) = λ −λ|x−µ| e , para todo x ∈ R. 2 Su función de distribución es: F (x) = 1 1 λ(x−µ) e 2 − 21 e−λ(x−µ) si x < µ si x ≥ µ pudiéndose generar por el método de inversión. Algoritmo basado en el método de inversión 1. Generar U, V ∼ U (0, 1). ln U . 2. Hacer T = λ 3. Si V < 1/2, devolver X = µ + T. En caso contrario, hacer X = µ − T . 5.1. DISTRIBUCIONES CONTINUAS 5.1.6. 51 Las distribuciones gamma y de Erlang La distribución gamma, Γ (a, p), depende de dos parámetros: a > 0, parámetro de escala, y p > 0, parámetro de forma. La distribución de Erlang no es más que la particularización de la gamma al caso en que p ∈ N. La función de densidad de una Γ (a, p) viene dada por ap p−1 −ax x e si x ≥ 0 Γ(p) f (x) = 0 si x < 0 Z ∞ xp−1 e−x dx es la llamada función gamma de Euler. donde Γ (p) = 0 Puede demostrarse una relación recursiva para Γ (p) sin más que hacer una integración por partes: Tomando u = xp−1 y dv = e−x dx, se tiene, Z ∞ Z ∞ p−1 p−1 −x −x ∞ p−2 −x Γ (p) = x e dx = x −e − (p − 1) x −e dx 0 0 0 Z ∞ = (p − 1) xp−2 e−x dx = (p − 1) Γ (p − 1) 0 Esto permite reducir el cálculo de Γ (p) al caso en que p ∈ (0, 1], ya que Γ (p) = (p − 1) (p − 2) · · · (p − [p]) Γ (p − [p]) Z Dado que Γ (1) = ∞ e−x dx = 1, la expresión anterior se simplifica cuando p ∈ N, 0 dando lugar a Γ (p) = (p − 1)! Cuando p = 1 la densidad de la gamma es −ax ae si x ≥ 0 f (x) = 0 si x < 0 d es decir, Γ (a, 1) = exp (a). 52 CAPÍTULO 5. SIMULACIÓN DE DISTRIBUCIONES NOTABLES Una propiedad muy importante de la distribución gamma es la llamada propiedad de reproductividad, que afirma que si se dispone de dos variables aleatorias independientes, X ∈ Γ (a, p1 ) e Y ∈ Γ (a, p2 ), la suma de ambas también es una gamma: X + Y ∈ Γ (a, p1 + p2 ). Este resultado se puede generalizar, por inducción, a la suma de cualquier número finito de variables gamma independientes con primer parámetro, a, coincidente. En virtud de ello, si p es entero, dadas X1 , X2 , · · ·, Xp variables independientes Pp con distrinución exp (a) (o, lo que es lo mismo, Γ (a, 1)) se tiene que su suma, i=1 Xi , tiene distribución Γ (a, p). Como consecuencia, la distribución de Erlang se puede simular fácilmente como suma de exponeciales: Algoritmo reproductivo de simulación de la Erlang 1. Desde i = 1 hasta p hacer 1.1. Generar Ui ∼ U (0, 1). 1.2. Hacer Xi = −PlnaUi . 2. Devolver X = pi=1 Xi . Este algoritmo puede agilizarse computacionalmente definiendo previamente el valor L = − a1 y calculando un único logaritmo (en lugar de p) teniendo en cuenta que Pp ln Ui Pp Qp 1 i=1 a = − a ln ( i=1 Ui ). Ası́ se tiene: i=1 Xi = − Algoritmo reproductivo de simulación de la Erlang optimizado 1. Hacer L = − a1 . 2. Hacer S = 1. 3. Desde i = 1 hasta p hacer 3.1. Generar U ∼ U (0, 1). 3.2. Hacer S = S · U . 4. Devolver X = L · ln S. Los algoritmos anteriores sólo son válidos para p entero, siendo además muy lentos si p es grande. Por contra son muy simples y de fácil implementación. Como alternativa existen otros algoritmos más complicados que cubren también el caso en que p no sea entero. 5.1. DISTRIBUCIONES CONTINUAS 53 Los algoritmos que se describen a continuación permiten generar la distribución Γ(1, p). Si a 6= 1, la distribución Γ(a, p) podrá generarse a partir de la distribución anterior, utilizando para ello la propiedad que afirma que si X ∈ Γ(1, p) entonces X/a tiene distribución Γ(a, p). El algoritmo de Tadikamalla (1978), que sólo es válido si p > 34 (a = 1), es un algoritmo de aceptación/rechazo que usa como densidad auxiliar una doble exponencial centrada en p − 1 y con parámetro de escala dado por λ= 1 2 √ = . θ 1 + 4p − 3 Para la implementación del algoritmo debe definirse la función (θ − 1) x p−1 |x − (p − 1)| + (p − 1) (θ + 1) exp −x + T (x) = . θ (p − 1) θ Algoritmo de Tadikamalla 1. Generar X, doble exponencial con media p−1 y parámetro de escala λ = 1θ = 1+√24p−3 . 2. Si X < 0 entonces volver a 1. 3. Generar U ∼ U (0, 1). 4. Si U ≤ T (X) entonces devolver X, sinó volver a 1. 54 CAPÍTULO 5. SIMULACIÓN DE DISTRIBUCIONES NOTABLES Como el anterior, el algoritmo de Cheng-Feast (1979) es un algoritmo de aceptación/rechazo que es válido si p > 1 (a = 1). Algoritmo de Cheng-Feast 1. Generar U1 , U2 , independientemente, con distribución 1 p − 6p U1 U (0, 1) y hacer V = . (p − 1)U2 2(U2 − 1) 1 2. Si + V + ≤ 2 hacer X = (p − 1)V . p−1 V 2 log U2 En otro caso, si − log V + V ≤ 1 hacer X = (p − 1)V . p−1 3. Volver a 1. El algoritmo de Best-Ahrens-Dieter (1983) es también un algoritmo de aceptación/rechazo que es válido si p < 1 (a = 1). Algoritmo de Best-Ahrens-Dieter √ pe−t . 0. Hacer t = 0,07 + 0,75 1 − p y b = 1 + t 1. Generar U1 , U2 , independientemente, con distribución U (0, 1) y hacer V = bU1 . 1 2. Si V ≤ 1 hacer W = tV p . En otro caso, ir a 3. 2−W 2.1. Si U2 ≤ , ir a 5. 2+W 2.2. Si U2 ≤ e−W , ir a 5. t(b − V ) 3. Hacer W = − log e Y = Wt . p 3.1. Si U2 (p + (1 − p)Y ) ≤ 1, ir a 5. 3.2. Si U2 ≤ Y p−1 , ir a 5. 4. Volver a 1. 5. Hacer X = W . 5.1. DISTRIBUCIONES CONTINUAS 5.1.7. 55 La distribución beta Dadas dos variables aleatorias Y ∈ Γ (1, p) y Z ∈ Γ (1, q), independientes, se dice que la variable Y X= Y +Z tiene distribución β (p, q), beta de parámetros p y q. La función de densidad de una β (p, q) viene dada por p−1 q−1 x (1 − x) si x ∈ [0, 1] f (x) = β (p, q) 0 en otro caso Z siendo β (p, q) = 1 xp−1 (1 − x)q−1 dx. 0 Aunque existen multitud de algoritmos para simular la distribución β (p, q) , probablemente, el más sencillo de todos es el que se obtiene, a partir de la distribución gamma, como consecuencia de la propia definición. El algoritmo de Fox (1963) es adecuado para simular la distribución beta cuando p, q ∈ N y son valores pequeños. Algoritmo de Fox 1. Generar U1 , U2 , . . . , Up+q−1 ∼ U (0, 1). 2. Ordenarlos: U(1) ≤ U(2) ≤ · · · ≤ U(p+q−1) . 3. Devolver X = U(p) . 56 CAPÍTULO 5. SIMULACIÓN DE DISTRIBUCIONES NOTABLES Un método válido aunque p ó q no sean enteros es el dado por el algoritmo de Jöhnk (1964). Algoritmo de Jöhnk 1. Repetir. 1.1. Generar U, V ∼ U (0, 1). 1 1 1.2. Hacer Y = U p , Z = V q , S = Y + Z. 2. Hasta que S ≤ 1. 3. Hacer X = YS . Este método resulta extremadamente ineficiente para p ó q mayores que 1. Esto es debido a que la condición S ≤ 1 del paso 2 puede tardar muchı́simo en verificarse. Por este motivo, el algoritmo de Jöhnk sólo es recomendable para p < 1 y q < 1. Como remedio a esto puede usarse el algoritmo de Cheng (1978) que es bastante más complicado de implementar pero también mucho más eficiente. Algoritmo de Cheng 1.1. Hacer α = p + q. 1.2. Si mı́n (p, q) ≤ 1 entonces hacer β = q α−2 . 2pq−α 1 , mı́n(p,q) en otro caso hacer β = 1.3. Hacer γ = p + β1 . 2. Generar U1 , U2 ∼U (0,1). U1 3. Hacer V = β · ln 1−U y W = p · eV . 1 α 4. Si α · ln q+W + γV − ln 4 < ln (U12 U2 ) entonces volver a 1. 5. Devolver X = W . q+W 5.1. DISTRIBUCIONES CONTINUAS 5.1.8. 57 La distribución chi-cuadrado de Pearson Dadas variables aleatoriasP Z1 , Z2 , . . . , Zn independientes y con distribución N (0, 1), diremos que la variable X = ni=1 Zi2 tiene distribución chi-cuadrado con n grados de libertad (χ2n ). Su función de densidad viene dada por n x x 2 −1 e− 2 f (x) = n n , para todo x ≥ 0 22 Γ 2 d Es decir, χ2n = Γ 21 , n2 y los algoritmos vistos para la distribución gamma son aplicables a este caso (para n grande es recomendable usar el algoritmo de Tadikamalla). 1 n d Además, debido a la reproductividad de la distribución gamma, se tiene que Γ , = 2 2 Γ 12 , n2 + Γ 12 , 12 , cuando n no sea par, siendo esta última distribución, Γ 21 , 12 , la del cuadrado de una normal estándar. De esta forma, para n pequeño, se tiene el siguiente algoritmo para la simulación de la chi-cuadrado: Algoritmo reproductivo para simular la chi-cuadrado n 1. Hacer m = 2 . 2. Hacer S = 1. 3. Desde i = 1 hasta m hacer 3.1. Generar U ∼ U (0, 1). 3.2. Hacer S = S · U . 4. Hacer X = −2 ln S. 5. Si n es impar hacer 6.1. Generar Z ∼ N (0, 1). 6.2. Hacer X = X + Z 2 . 7. Devolver X. 58 CAPÍTULO 5. SIMULACIÓN DE DISTRIBUCIONES NOTABLES 5.1.9. La distribución F de Fisher-Snedecor Dadas dos variables aleatorias Y1 ∈ χ2m e Y2 ∈ χ2n independientes, la variable aleatoria Y1 /m X= Y2 /n tiene distribución F de Fisher-Snedecor con m y n grados de libertad (Fm,n ). Su función de densidad es n n 2 f (x) = β m m x 2 −1 m n , 2 2 n − m+n 2 , para todo x ≥ 0 x+ m Además de poder simularse a través de algoritmos de simulación de la chi-cuadrado, puede simularse mediante el uso de una distribución beta. Algoritmo de simulación de la F a través de la beta 1. Generar Z ∼ β m2 , n2 . nZ . 2. Hacer X = m(1−Z) 5.1.10. La distribución t de Student Dadas dos variables independientes Y1 ∈ N (0, 1) e Y2 ∈ χ2n , la variable aleatoria Y1 X=p Y2 /n tiene distribución t de Student con n grados de libertad (tn ). Su función de densidad es f (x) = Γ Γ n 2 n+1 2 √ nπ x2 1+ n − n+1 2 , para todo x ∈ R. La t de Student puede simularse fácilmente teniendo en cuenta la relación entre d esta distribución y la F de Fisher-Snedecor: t2n = F1,n . Algoritmo de simulación de la t de Student a partir de la F 1. Generar U ∼ U (0, 1) y Z ∼ F1,n . √ √ 2. Si U < 0,5 entonces devolver X = Z, si no devolver X = − Z. 5.1. DISTRIBUCIONES CONTINUAS 5.1.11. 59 La distribución de Weibull La distribución de Weibull, W (λ, α), es una generalización de la distribución exp (α). Su función de densidad de probabilidad es α f (x) = αλα xα−1 e−(λx) , para todo x ≥ 0 d En particular, W (λ, 1) = exp (λ). Puede simularse fácilmente mediante el método de inversión (ligeramente optimizado). Algoritmo de inversión para simular la distribución de Weibull 1. Generar U ∼ U (0, 1). 1 (− ln U ) α 2. Devolver X = . λ 5.1.12. La distribución logı́stica Es la que tiene por función de distribución: F (x) = 1 1 + e− x−a b , ∀x ∈ R, siendo a ∈ R y b > 0. Puede simularse fácilmente mediante el método de inversión. Algoritmo para simular la distribución logı́stica mediante inversión 1. Generar U ∼ U (0, 1). 2. Devolver X = a − b ln U1 − 1 . 60 CAPÍTULO 5. SIMULACIÓN DE DISTRIBUCIONES NOTABLES 5.1.13. La distribución de Pareto Tiene utilidad en ciencias como la Economı́a, donde en ocasiones sirve para modelizar distribuciones de rentas. Su densidad viene dada por ( f (x) = aba xa+1 0 si x ≥ b si x < b Como consecuencia, su función de distribución resulta 0 si x < b F (x) = a si x ≥ b 1 − xb y, por tanto, es simulable mediante inversión. Una versión optimizada del algoritmo es: Algoritmo de inversión para simular la distribución de Pareto 1. Generar U ∼ U (0, 1). b 2. Devolver X = 1 . Ua 5.2. 5.2.1. Distribuciones discretas La distribución uniforme discreta Dado un conjunto finito de N elementos (que, sin pérdida de generalidad, supondremos el conjunto {1, 2, . . . , N }) la distribución uniforme discreta en dicho conjunto (o equiprobable sobre dicho conjunto) es la definida por P (X = i) = N1 , para i = 1, 2, . . . , N . Tanto el método de inversión (calculando explı́citamente la función cuantil) como el de truncamiento dan lugar al siguiente algoritmo. Algoritmo para simular la distribución uniforme discreta en {1, 2, . . . , N } 1. Generar U ∼ U (0, 1). 2. Devolver X = [N · U ] + 1. 5.2. DISTRIBUCIONES DISCRETAS 5.2.2. 61 La distribución binomial La distribución binomial de parámetros n y p, B (n, p), se define como el número de éxitos en n pruebas independientes, en las que la probabilidad de éxito es p. Su masa de probabilidad es n i P (X = i) = p (1 − p)n−i , para i = 0, 1, . . . , n. i Puede simularse a partir de su definición: Algoritmo para la generación de la distribución B(n, p) 1. Hacer S = 0. 2. Repetir n veces 2.1. Generar U ∼ U (0, 1). 2.2. Si U ≤ p entonces hacer S = S + 1. 3. Devolver X = S. Este método es extremadamente lento cuando n es grande. Por eso, en ese caso, resulta más ventajoso utilizar el método de la tabla guı́a. 5.2.3. La distribución de Poisson Una variable aleatoria discreta, X, tiene distribución de Poisson de parámetro λ > 0 si su masa de probabilidad viene dada por e−λ λi , para i = 0, 1, . . . P (X = i) = i! La distribución de Poisson puede simularse mediante el método de la transformación cuantil con búsqueda secuencial. 62 CAPÍTULO 5. SIMULACIÓN DE DISTRIBUCIONES NOTABLES También puede simularse haciendo uso de la relación que guarda con la distribución exponencial. Ası́, dadas variables aleatorias T1 , T2 , . . ., Tn , . . . independientes y con distribución exp (λ), la variable aleatoria entera, X, que verifica X X Ti ≤ 1 < X+1 X i=1 Ti i=1 (definiendo X = 0 si T1 > 1) tiene distribución Pois(λ). Las variables aleatorias Ti pueden simularse, utilizando valores Ui de una uniforme, mediante Ti = − lnλUi . En virtud de ello, se tiene X X Ti ≤ 1 < i=1 ln − X Q X+1 X i=1 ln Ui i=1 λ X Y i=1 Ti ⇔ − X X ln Ui i=1 X+1 Q i=1 ≤ 1<− Ui ≥ e−λ > λ X+1 Y λ ≤1<− X+1 X i=1 ln Ui ⇔ λ Ui ⇔ ln X Y i=1 ! Ui ≥ −λ > ln X+1 Y ! Ui ⇔ i=1 Ui . i=1 Ası́, puede utilizarse el siguiente algoritmo: Algoritmo de simulación de la Poisson a traves de la exponencial 1. Hacer p = 1 y S = −1. 2. Repetir 2.1. Generar U ∼ U (0, 1). 2.2. Hacer p = p · U y S = S + 1. 3. Hasta que p < e−λ . 4. Hacer X = S. Tanto este algoritmo como el de la transformación cuantil tienen el inconveniente de ser muy ineficientes cuando λ es grande. En ese caso, aunque la distribución de Poisson tiene un número infinito de posibles resultados, es perfectamente aplicable el método de la tabla guı́a desembocando en una búsqueda secuencial cuando el intervalo elegido sea el último de la tabla. Esto mejora muy considerablemente la eficiencia del método. 5.2. DISTRIBUCIONES DISCRETAS 5.2.4. 63 La distribución geométrica Su masa de probabilidad es P (X = i) = p · (1 − p)i , para i = 0, 1, . . . Además de poder simularse a partir de su definición (número de fracasos antes del primer éxito), también puede hacerse por truncamiento. El algoritmo que resulta por este método es equivalente al basado en la expresión explı́cita de la función cuantil. Algoritmo de truncamiento para la distribución geométrica 1 . 0. Hacer L = − ln (1 − p) 1. Generar U ∼ U (0, 1). 2. Hacer T = L · ln U . 3. Devolver X = [T ]. 5.2.5. La distribución binomial negativa La distribución binomial negativa, BN (r, p) , generaliza a la geométrica, pudiendo interpretarse como el número de fracasos antes del r-ésimo éxito. Su función de masa de probabilidad es i+r−1 r P (X = i) = p (1 − p)i , para i = 0, 1, . . . i Debido a su reproductividad en el parámetro r, puede simularse como suma de r variables geométricas, aunque este algoritmo puede ser muy costoso en tiempo de computación si r es elevado. Existe también un método especı́fico basado en la propiedad p , r ⇒ X ∈ BN (r, p) . X|Y ∈ Pois (Y ) , Y ∈ Γ 1−p Algoritmo condicional la binomial negativa para simular p 1. Simular L ∼ Γ ,r . 1−p 2. Simular X ∼Pois(L). 3. Devolver X. 64 CAPÍTULO 5. SIMULACIÓN DE DISTRIBUCIONES NOTABLES Capı́tulo 6 Simulación de distribuciones multidimensionales La simulación de vectores aleatorios X = (X1 , X2 , . . . , Xd )0 que sigan cierto modelo de distribución dado no es tarea siempre sencilla. En general, no resulta una extensión inmediata del caso unidimensional, aunque, si las variables que componen el vector son independientes, entonces bastará simular cada Xi con la distribución marginal deseada (Fi ) y luego agrupar los valores simulados para cada componente en un vector. En la mayor parte de los casos de interés, las componentes del vector aleatorio son dependientes y el método anterior no es válido. A continuación se verán algunos métodos generales para la simulación de distribuciones multidimensionales. 6.1. Método de las distribuciones condicionadas Supóngase un vector aleatorio d-dimensional, con distribución continua. Denótese por f (x1 , x2 , . . . , xn ) su función de densidad conjunta y considérese la primera densidad marginal, f1 (x1 ), y las sucesivas densidades condicionales f2 (x2 |x1 ), f3 (x3 |x1 , x2 ), . . ., fd (xd |x1 , x2 , . . . , xd−1 ). Gracias a la regla del producto, generalizada a funciones de densidad, se tiene f (x1 , x2 , . . . , xn ) = f1 (x1 ) · f2 (x2 |x1 ) · f3 (x3 |x1 , x2 ) · · · fd (xd |x1 , x2 , . . . , xd−1 ) y, como consecuencia, puede darse el siguiente algoritmo general: 1. Generar X1 con densidad f1 . 2. Desde i = 2 hasta d generar Xi con densidad fi (•|X1 , X2 , . . . , Xi−1 ). 3. Devolver X = (X1 , X2 , . . . , Xd )0 . Es inmediato comprobar que el método anteriormente expuesto es igualmente válido si las variables Xi son discretas o, incluso, si algunas son discretas y otras continuas. En tal caso se sustituirı́a la densidad por la masa de probabilidad. Ası́ pues, lo realmente importante para poder aplicar el método de las distribuciones condicionadas es conocer y saber simular la distribución marginal de X1 y las distribuciones condicionadas del tipo Xi |X1 , X2 , . . . , Xi−1 para i = 2, 3, . . . , d. 65 66CAPÍTULO 6. SIMULACIÓN DE DISTRIBUCIONES MULTIDIMENSIONALES Ejemplo 6.1.1 (Algoritmo para simular la distribución normal bidimensional por el método de las distribuciones condicionadas) Consideremos una 2 µ1 σ1 σ12 N2 , , µ2 σ12 σ22 por las propiedades de la distribución normal, bastará saber simular la distribución 2 0 σ1 σ12 N2 , σ12 σ22 0 µ1 µ2 y luego sumarle el vector . Dado que X1 ∈ N (0, σ1 ), se tiene que f1 (x1 ) = σ1 1 √ x2 exp − 12 2σ1 2π Además 1 1 f (x1 , x2 ) = f (x) = p exp − x0 Σ−1 x 2 2π det (Σ) Como −1 Σ 1 = det (Σ) σ22 −σ12 −σ12 σ12 1 = 2 2 2 σ1 σ2 − σ12 σ22 −σ12 −σ12 σ12 se tiene que 1 0 −1 σ 2 x2 − 2σ12 x1 x2 + σ12 x22 xΣ x= 2 1 2 2 2 (σ12 σ22 − σ12 ) y, por tanto, √ 2 2 σ1 2π x21 σ2 x1 − 2σ12 x1 x2 + σ12 x22 f (x1 , x2 ) p = − 2 exp − f2 (x2 |x1 ) = 2 2 f1 (x1 ) 2 (σ12 σ22 − σ12 ) 2σ1 2π σ12 σ22 − σ12 2 2 2 2 4 2 2 ) x21 1 σ1 σ2 x1 − 2σ1 σ12 x1 x2 + σ1 x2 − (σ12 σ22 − σ12 = √ q 2 2 2 exp − 2 σ1 σ2 −σ12 2σ12 (σ12 σ22 − σ12 ) 2π 2 σ1 2 2 −2σ12 σ12 x1 x2 + σ14 x22 + σ12 x1 1 = √ q 2 2 2 exp − 2 σ1 σ2 −σ12 2σ12 (σ12 σ22 − σ12 ) 2π σ12 2 x2 σ12 2σ12 x1 x2 2 1 − + x + 2 1 σ12 σ14 = √ q 2 2 2 exp − 2 2 2 σ1 σ2 −σ12 σ1 σ2 −σ12 2 2π σ12 σ12 2 σ12 x1 x − 2 σ12 1 = √ q 2 2 2 exp − 2 2 2 σ1 σ2 −σ12 σ1 σ2 −σ12 2 σ2 2π 2 σ 1 1 que es la densidad de una N σ 2 σ 2 −σ 2 σ12 x , 1 2σ2 12 σ12 1 1 . 6.1. MÉTODO DE LAS DISTRIBUCIONES CONDICIONADAS 67 En resumen, se tiene que si 2 X1 0 σ1 σ12 ∈ N2 , X2 0 σ12 σ22 q 2 2 2 σ1 σ2 −σ12 σ12 2 entonces X1 ∈ N (0, σ1 ) y X2 |X1 ∈ N σ2 X1 , . Ası́, el algoritmo de simuσ12 1 lación consistirı́a en los siguientes pasos: 1. 2. 3. 4. 5. Simular Z1 , Z2 ∼ N (0, 1) independientes. Hacer Y1 = σ1 Z1 . q 2 2 2 σ1 σ2 −σ12 . Hacer Y2 = σσ122 Y1 + Z2 σ12 1 Hacer X1 = Y1 + µ1 , X2 = Y2 + µ2 . → − Devolver X = (X1 , X2 )t . Ejemplo 6.1.2 (La distribución uniforme en el cı́rculo unitario). Se trata de la distribución bidimensional continua cuya densidad es constante en dicho cı́rculo C = {(x1 , x2 )0 ∈ R2 /x21 + x22 ≤ 1}. Su función de densidad viene dada por f (x1 , x2 ) = 1 π 0 si si (x1 , x2 )0 ∈ C (x1 , x2 ) 0 ∈ /C La densidad marginal de la primera variable resulta p Z +√1−x21 2 1 − x21 1 dx2 = si x1 ∈ [−1, 1] f1 (x1 ) = √ π − 1−x21 π es decir, f1 (x1 ) = 2 π p 0 1 − x21 si si x1 ∈ [−1, 1] x1 ∈ / [−1, 1] Además q q 1 f (x1 , x2 ) 1 π f2 (x2 |x1 ) = = √ 2 = p , si x2 ∈ − 1 − x21 , 1 − x21 2 1−x1 f1 (x1 ) 2 1 − x21 π valiendo cero en otro caso. Se tiene entonces que q q 2 2 X2 |X1 ∈ U − 1 − X1 , 1 − X1 , siempre que X1 ∈ [−1, 1]. Finalmente, el algoritmo resulta: 1. Simular X1 con densidad f1 .h i p p 2. Simular X2 con densidad U − 1 − X12 , 1 − X12 . 3. Devolver X = (X1 , X2 )0 . Para el paso 1 puede utilizarse, por ejemplo, el método de aceptación/rechazo, pues se trata de una densidad acotada definida en un intervalo acotado. 68CAPÍTULO 6. SIMULACIÓN DE DISTRIBUCIONES MULTIDIMENSIONALES 6.2. El método de aceptación/rechazo La idea general del método de aceptación/rechazo es aplicable para simular variables aleatorias definidas en cualquier espacio (no sólo en R). En particular puede usarse para simular vectores aleatorios de Rd . Sin embargo, en este contexto, resulta mucho más difı́cil encontrar una densidad auxiliar adecuada y, especialmente, conseguir que el número medio de comparaciones del método se mantenga dentro de unos lı́mites de eficiencia razonables cuando la dimensión es elevada. Ejemplo 6.2.1 (Simulación de puntos uniformemente distribuı́dos sobre la “esfera” unitaria d-dimensional Cd ) Cd = (x1 , x2 , . . . , xd )0 ∈ Rd /x21 + x22 + · · · + x2d ≤ 1 Denotando por Vd (1), el “volumen” (la medida) de la esfera d-dimensional de radio 1 (en general, la de radio r verifica Vd (r) = rd Vd (1)), se tiene: 1 si (x1 , x2 , . . . , xd )0 ∈ Cd Vd (1) f (x1 , x2 , . . . , xd ) = 0 si (x1 , x2 , . . . , xd )0 ∈ / Cd Para simularvalores en Rd , con densidad f ,podemos utilizar como densidad auxiliar d d la de una U [−1, 1] × [−1, 1] × · · · × [−1, 1] = U [−1, 1] , dada por g (x1 , x2 , . . . , xd ) = 1 2d 0 si xi ∈ [−1, 1], para todo i = 1, 2, . . . , d en otro caso La constante c óptima para la utilización del método de aceptación/rechazo es f (x) = c = máx → − x /g(x)>0 g (x) 1 Vd (1) 1 2d 2d = Vd (1) y la condición de aceptación cU g (T) ≤ f (T) se convierte en 2d 1 1 U d 1[−1,1]d (T) ≤ 1C (T) − Vd (1) 2 Vd (1) d o, lo que es lo mismo, U 1[−1,1]d (T) ≤ 1Cd (T). Esta condición equivale a que T ∈ Cd , es decir, que se verifique T12 + T22 + · · · + Td2 ≤ 1 Por otra parte, la simulación de T ∼ U [−1, 1]d puede hacerse trivialmente mediante Ti ∼ U ([−1, 1]) para cada i = 1, 2, . . . , d, ya que las componentes son independientes. Como el valor de U es superfluo en este caso, el algoritmo queda: 1. 2. 3. 4. Simular V1 , V2 , . . . , Vd ∼ U (0, 1) independientes. Para i = 1, 2, . . . , d hacer Ti = 2Vi − 1. Si T12 + T22 + · · · + Td2 > 1 entonces volver al paso 1. Devolver X = (T1 , T2 , . . . , Td )0 . 6.3. MÉTODOS DE CODIFICACIÓN O ETIQUETADO 69 Usando las fórmulas del “volumen” de una “esfera” d-dimensional: d/2 d π r si d es par (d/2)! Vd (r) = d d2 e+1 π d d2 e rd 2 si d es impar 1 · 3 · 5···d puede verse que el número medio de repeticiones de los pasos 1-3 del algoritmo, que d viene dado por la constante c = Vd2(1) , puede hacerse enormemente grande. Ası́, si d = 2 se tiene c =1.27, si d = 3 se tiene c =1.91, si d = 4 entonces c =3.24 y para d = 10 resulta c =401.5 que es un valor que hace que el algoritmo sea tremendamente lento en dimensión 10. 6.3. Métodos de codificación o etiquetado En el caso de que la función de distribución d-dimensional sea discreta existen métodos que permiten reducir la simulación de dicha variable al contexto de simular una variable aleatoria discreta unidimensional. Estos métodos son conocidos como métodos de etiquetado o codificación y la idea básica consiste en construir una función h que codifique las posibles d-tuplas del conjunto donde toma valores la variable discreta, haciendo corresponder a cada uno un número entero no negativo diferente. Ejemplo 6.3.1 (Algoritmo para simular una variable bidimensional discreta (X1 , X2 )0 cada una de cuyas componentes toma valores enteros no negativos). El subconjunto de R2 en el que toma valores el vector aleatorio es Z+ × Z+ = Z+ 2 = {(i, j) /i, j ∈ {0, 1, 2, . . .}} Se tratará de definir una función biyectiva, h : Z+ × Z+ −→ Z+ , que permita etiquetar los pares de enteros. De esta forma, h induce sobre la variable transformada, C = h (X1 , X2 ), una masa de probabilidad (C) pk (X ,X ) := P (C = k) = P (h (X1 , X2 ) = k) = P (X1 , X2 ) = h−1 (k) =: ph−11 (k)2 Resulta inmediato, por tanto, obtener la masa de probabilidad de la variable discreta unidimensional C, a partir de la masa de probabilidad de la variable original (X1 , X2 ). De todas formas, debemos tener en cuenta que para que esto sea calculable en la práctica en un tiempo razonable, la función h debe poder invertirse de forma rápida. Ası́ pues para simular la variable (X1 , X2 ) podemos proceder mediante uno de los algoritmos posibles para simular C calculando en tantos pasos como sean necesarios los valores de la forma h−1 (k). Una posibilidad sencilla consiste en utilizar h (i, j) = (i + j) (i + j + 1) +i 2 70CAPÍTULO 6. SIMULACIÓN DE DISTRIBUCIONES MULTIDIMENSIONALES Consideremos k ∈ Z+ , el valor (i, j) = h−1 (k) debe verificar (i + j) (i + j + 1) +i=k 2 Denotando ahora n = i + j, para encontrar (i, j) = h−1 (k) basta con hallar n e i, enteros positivos, con n ≥ i tales que h (i, j) = k ⇔ n (n + 1) +i=k 2 Debemos entonces encontrar el único n que cumple n (n + 1) n (n + 1) n (n + 1) + 2 (n + 1) (n + 1) (n + 2) ≤k≤ +n< = 2 2 2 2 2 2 Como además n < n (n + 1) y (n + 1) (n + 2) < (n + 2) , se tiene que ese valor n ha de verificar n2 < 2k < (n + 2)2 , es decir m l√ m 2k − 2 < n ≤ 2k . l√ m l√ m Dicho de otro modo, se tiene que n ha de ser igual a 2k − 1 ó 2k . l√ n(n+1) Basta entonces con calcular la expresión l√ m l√2 m para esos posibles valoresl√de nm y comparar el resultado con 2k. Ası́, si 2k 2k + 1 > 2k entonces n = 2k − l√ m 2k . Finalmente se calcula 1 y, en caso contrario, n = n (n + 1) y j =n−i 2 El cálculo de h−1 (k) es muy rápido y el resto del algoritmo se reduce a la simulación de la variable unidimensional C. i=k− −1 Ejemplo 6.3.2 Calculemos anterior √ por el procedimiento √ √ el valor h (16). Calculamos primeramente n = 2 · 16 = 2 · 16 = 32 = d5. 656 854 2e = 5. Luego calculamos 5 (5 + 1) = 30 ≤ 32 = 2 · 16, con lo cual n = 5. Además i = 16 − 5·6 =1y 2 −1 j = 5 − 1 = 4. Ası́ pues se obtiene h (16) = (1, 4). Aunque no entraremos con detalle en ello, conviene resaltar que es posible generad lizar este tipo de funciones de codificación a (Z+ ) . También es factible encontrar la inversa de tal función generalizada (llamada función de decodificación) que se puede calcular eficientemente. Cuando la variable aleatoria X2 toma un número finito de valores (supongamos comprendidos entre 0 y M ), otra posible función de codificación, más sencilla es h (i, j) = (M + 1) i + j cuya inversa viene dada por −1 h (k) = k , kmod (M + 1) . M +1 d Estas funciones de codificación y decodificación son generalizables a (Z+ ) y aplicables al caso en que el vector aleatorio X tome un número finito de valores. 6.4. MÉTODOS PARA SIMULAR LA DISTRIBUCIÓN NORMAL MULTIVARIANTE71 6.4. Métodos para simular la distribución normal multivariante Dado un vector µ = (µ1 , µ1 , . . . , µd )0 ∈ Rd y una matriz definida positiva σ11 σ12 · · · σ1d σ21 σ22 · · · σ1d Σ= .. .. . . .. . . . . σd1 σd2 · · · σdd la distribución normal d-dimensional de parámetros (µ , Σ) (que corresponden con su vector de medias y su matriz de varianzas-covarianzas), abreviadamente Nd (µ , Σ), es la que tiene densidad dada por 1 0 −d/2 −1/2 −1 f (x ) = (2π) det (Σ) exp − (x − µ ) Σ (x − µ) 2 Cuando Σ es diagonal Σ= σ12 0 0 σ22 .. .. . . 0 0 ··· ··· .. . 0 0 .. . · · · σd2 , se obtiene fácilmente −d/2 f (x ) = (2π) d Y !−1/2 σi2 i=1 1 σ12 0 ··· ··· ... 0 0 .. . 1 0 σ122 0 (x − µ × exp .. − 2 (x − µ ) .. . . 1 0 0 · · · σ2 d ! ! d d Y X (xi − µi )2 1 −d/2 = (2π) σi−1 exp − 2 i= σi2 i=1 !! d d Y Y 1 (xi − µi )2 √ exp − = = φµ1 ,σi (xi ) 2 2σ σ 2π i i i=1 i=1 ) siendo φµ1 ,σi la función de densidad de una N (µi , σi ). De esta forma, cuando Σ es diagonal, las componentes son independientes y resulta trivial simular la Nd (µ , Σ) mediante el siguiente algoritmo: 1. Simular Z1 , Z2 , . . . , Zd ∼ N (0, 1) independientes. 2. Para i = 1, 2, . . . , d hacer Xi = µi + σi Zi . 3. Devolver X = (X1 , X2 , . . . , Xd )0 . 72CAPÍTULO 6. SIMULACIÓN DE DISTRIBUCIONES MULTIDIMENSIONALES Una propiedad que resulta muy útil para simular la distribución Nd (µ , Σ) con Σ arbitraria es la siguiente. Proposición 6.4.1 Si X ∈ Nd (µ , Σ) y A es una matriz de dimensión p×d, de rango máximo, con p ≤ d, entonces Y = AX ∈ Np (Aµ , AΣA0 ). Dada una variable aleatoria X ∈ Nd (µ , Σ), Y = X − µ ∈ Nd (0 , Σ). Si Σ es una matriz definida positiva, existe una matriz ortogonal H (es decir, tal que H−1 = H0 ) de forma que la matriz Λ = H0 ΣH es diagonal. De hecho, H es la matriz de cambio de base para que la matriz asociada a la correspondiente aplicación lineal sea la matriz diagonal Λ (en lugar de la matriz de partida Σ). Las columnas de la matriz H son precisamente los autovectores linealmente independientes (y de módulo unitario) de la matriz Σ, es decir, d vectores linealmente independientes, x1 , x2 , . . . , xd , tales que xi 0 xi = 1 para todo i = 1, 2, . . . , n y con xi 0 xj = 0 si i 6= j, verificando además que ∃λi ∈ R tal que Σxi = λi xi (condición de ser un autovector). Además, los autovalores λ1 , λ2 , . . ., λd (que son todos positivos) son precisamente los elementos de la diagonal de la matriz Λ. Partiendo de una variable Z ∈ Nd (0, I) (fácilmente simulable a partir de Z1 , Z2 , . . ., Zd ∼ N (0, 1) independientes), se tiene que Λ1/2 Z ∈ Nd (0, Λ), siendo Λ 1/2 = 1/2 λ1 0 .. . 0 λ2 .. . 0 0 1/2 ··· ··· ... 0 0 .. . 1/2 . · · · λd Multiplicando por la izquierda por la matriz H, se tiene HΛ1/2 Z ∈ Nd (0, HΛH0 ) ∈ Nd (0, Σ) Finalmente, basta sumar el vector µ para obtener X = µ + HΛ1/2 Z ∈ Nd (µ , Σ) Una vez obtenidos los autovalores, λ1 , λ2 , . . ., λd , y los autovectores asociados de la matriz Σ, que determinan las columnas de la matriz H, el algoritmo procederı́a como sigue: 1. Simular Z1 , Z2 , . . . , Zd ∼ N (0, 1)√ independientes. 2. Para i = 1, 2, . . . , d hacer Yi = λi Zi . 3. Devolver X = µ + HY. 6.4. MÉTODOS PARA SIMULAR LA DISTRIBUCIÓN NORMAL MULTIVARIANTE73 Ejemplo 6.4.1 Dar un algoritmo para simular la distribución 1 2,36 −0,48 N2 , 3 −0,48 2,64 Para encontrar los autovalores y autovectores de Σ resolvemos det (Σ − λI) = 0, es decir, 2,36 − λ −0,48 2 −0,48 2,64 − λ = 0 ⇔ (2,36 − λ) (2,64 − λ) − (−0,48) = 0 √ 5 ± 52 − 6 · 4 2 ⇔ λ − 5λ + 6 = 0 ⇔ λ = 2 que ofrece como soluciones λ1 = 3 y λ2 = 2. Para encontrar autovectores de módulo 1 correspondientes a esos autovalores no tenemos más que resolver los sistemas (Σ − λi I) µ = 0 para i = 1, 2 imponiendo la condición de módulo igual a 1, es decir x21 + x22 = 1. Ası́, resulta -0.64 -0.48 16 12 Σ − λ1 I = = -0.04 , luego -0.48 -0.36 12 9 4 (Σ − λ1 I) x = 0 ⇔ x2 = − x1 , pero como x21 + x22 = 1, se tiene 3 25 2 3 4 x1 = 1, luego x1 = y x2 = − 9 5 5 (también es solución si cambiamos ambos de signo); 0.36 -0.48 9 −12 Σ − λ2 I = = 0.04 , luego -0.48 0.64 −12 16 3 (Σ − λ2 I) x = 0 ⇔ x2 = x1 , pero como x21 + x22 = 1, se tiene 4 25 2 4 3 x1 = 1, luego x1 = y x2 = 16 5 5 De esta forma, la matriz H resulta, entre otras posibilidades, 3/5 4/5 0.6 0.8 H= = . −4/5 3/5 -0.8 0.6 Ahora Y=Λ 1/2 √ Z= 3 √0 2 0 Z1 Z2 √ 3Z 1 = √ 2Z2 y finalmente, X = µ + HY = 1 + 0.6Y1 + 0.8Y2 3 − 0.8Y1 + 0.6Y2 Ası́, el algoritmo resultarı́a 1. Simular Z1 ,√ Z2 ∼ N (0, 1) √ independientes. 2. Hacer Y1 = 3Z1 e Y2 = 2Z2 . 3. Obtener X1 = 1 + 0.6Y1 + 0.8Y2 y X2 = 3 − 0.8Y1 + 0.6Y2 . 4. Devolver X = (X1 , X2 )0 . 74CAPÍTULO 6. SIMULACIÓN DE DISTRIBUCIONES MULTIDIMENSIONALES Capı́tulo 7 Diseño de experimentos de simulación En el presente capı́tulo se abordarán algunas de las cuestiones más importantes a la hora de diseñar un estudio de simulación: Similitudes y diferencias entre la simulación y la experimentación sobre el sistema real. Simulación estática y dinámica. Simulación por eventos y por cuantos. Técnicas de reducción de la varianza. Problemas de estabilización y dependencia. 7.1. Diferencias y similitudes con la experimentación real Teniendo en cuenta que la simulación es la técnica consistente en la realización de experimentos de muestreo sobre un modelo construido a partir de un sistema real, es obvio que la simulación necesitará de gran cantidad de técnicas estadı́sticas para obtener las muestras (muestreo) y para analizar los resultados obtenidos por la experimentación artificial (estimación, intervalos de confianza, contrastes de hipótesis, etc.). Por todo ello, puede afirmarse que, en general, en cuanto a la utilización de técnicas estadı́sticas es muy similar a la propia experimentación sobre el sistema real. Entre las diferencias caben destacar las siguientes: 1. La utilización de técnicas de estimación puntual, construcción de intervalos de confianza y contrastes de hipótesis es algo menos frecuente en la simulación que en la experimentación real. La razón es que algunos de los parámetros (los de control) ya son conocidos en la simulación y, por tanto, no es necesario hacer inferencia sobre ellos, aunque sı́ sobre los de salida (que miden, de alguna forma, el comportamiento del sistema). 75 76 CAPÍTULO 7. DISEÑO DE EXPERIMENTOS DE SIMULACIÓN 2. La simulación suele hacer un uso mucho más intensivo de técnicas de ordenación y optimización. Esto es debido a que, en el contexto de la simulación, es factible comparar un gran número de escenarios (entre los que se desea optimizar, por ejemplo) en muy poco tiempo, cosa que se da muy raramente en la experimentación real. 3. Una peculiaridad de la simulación es que casi siempre es posible comparar distintas estrategias sobre las mismas muestras simuladas (simplemente utilizando la misma semilla en la simulación, convenientemente planificada). 7.2. Simulación estática y dinámica La simulación se dice estática si en el modelo no juega ningún papel el transcurso del tiempo mientras que es dinámica si el tiempo es una de las variables importantes del modelo. La simulación estática se usa muy frecuentemente por los estadı́sticos para comprobar el comportamiento comparativo de diversos métodos estadı́sticos alternativos para tamaños muestrales finitos (complementando los estudios teóricos, casi siempre asintóticos). En la simulación dinámica, normalmente, se trata de ir analizando los distintos estados por los que va pasando un sistema que evoluciona en el tiempo. Esto provoca, en general, un mayor coste computacional y problemas de estabilización y dependencia. Existen dos grandes tipos de simulación dinámica: la simulación continua, en la que se supone que el sistema cambia de estado constantemente, y la simulación discreta, para la cual los cambios se producen en ciertos instantes de tiempo singulares. 7.3. Simulación por eventos y por cuantos Con el nombre de simulación por eventos, o ası́ncrona, designamos el tipo de simulación dinámica discreta en la cual se controla la variable tiempo moviéndola hasta la ocurrencia del siguiente suceso (o evento). Esto implica la necesidad de controlar minuciosamente cuál es dicho próximo suceso: saber cuáles son los posibles sucesos en un futuro inmediato y cuál de ellos es el más inmediato. La simulación por cuantos, responde a una filisofı́a totalmente diferente. Se trata de examinar el sistema (que evoluciona en el tiempo) dejando pasar pequeños intervalos de tiempo de longitud δ, fija, (llamados cuantos) en los cuales se supone que, a lo sumo, un solo suceso puede producirse. En general, la simulación por eventos es exacta y de más difı́cil implementación, pero de mucha más rápida ejecución que la simulación por cuantos. Sin embargo esta última es muchas veces la única posibilidad factible en la simulación dinámica continua. 7.4. TÉCNICAS DE REDUCCIÓN DE LA VARIANZA 7.4. 77 Técnicas de reducción de la varianza Existen multitud de técnicas encaminadas a reducir la varianza en un estudio de simulación o bien a tratar de estimarla. Algunas de ellas son el uso de números aleatorios comunes, la utilización de variables antitéticas, la estratificación, el uso de variables de control, el método Jackknife, los métodos de remuestreo (destacando entre ellos el método bootstrap), etc. En general conviene tener en cuenta que si uno de los objetivos de la simulación es precisamente estimar la variabilidad, no conviene utilizar estas técnicas de reducción de la varianza. Éstas son aplicables normalmente cuando la simulación pretende ofrecer respuestas, lo más precisas posibles, sólo sobre cantidades medias. 7.4.1. Números aleatorios comunes Supóngase que se desea comparar dos estrategias distintas, X e Y, mediante N repeticiones (o “trials”) de un experimento de simulación, de las cuales se han obtenido los valores numéricos de las variables de salida X1 , X2 , . . . , XN , para la primera, e Y1 , Y2 , . . ., YN , para la segunda. Si la comparación se realiza estimando la diferencia de las medias de las variables de salida para ambas estrategias, E (X) − E (Y ) = E (X − Y ) , puede usarse X − Y = N 1 X (Xi − Yi ), cuya varianza viene dada por N i=1 V ar X − Y N 1 X 1 = V ar (Xi − Yi ) = V ar (X1 − Y1 ) 2 N i=1 N = 1 (V ar (X1 ) + V ar (Y1 ) − 2Cov (X1 , Y1 )) N Usando los mismos números aleatorios (es decir, repitiendo los cálculos con la misma semilla) en las variables de entrada de la simulación, se tiene que Cov (Xi , Yi ) > 0 y, por tanto, 1 (V ar (X1 ) + V ar (Y1 )) V ar X − Y ≤ N que es la varianza que tendrı́a X − Y en caso de haber usado muestras independientes para cada estrategia. 78 7.4.2. CAPÍTULO 7. DISEÑO DE EXPERIMENTOS DE SIMULACIÓN Variables antitéticas Supóngase ahora que se desea evaluar el resultado de una única estrategia (sin compararla con ninguna otra alternativa). Después de N repeticiones de la simulación, tendremos N valores numéricos de las variables X1 , X2 , . . ., XN , procediendo a estiN 1 X mar la media E (X) teórica mediante X = Xi . Dado que éste es un estimador N i=1 insesgado, su precisión puede medirse mediante V ar X . N 1 X Si las variables son independientes, la V ar X = 2 V ar (Xi ), mientras que, N i=1 en general, se tiene ! N X 1 X V ar X = 2 V ar (Xi ) + 2 Cov (Xi , Xj ) N i=1 i<j Una forma de utilizar esta última expresión para reducir la varianza del estimador consiste en hacer que cada variable con ı́ndice impar sea negativamente correlada con la variable de ı́ndice siguiente (siendo independiente de las demás). La forma más sencilla de conseguir esto cuando se utiliza el método de inversión para simular las Xi consiste en tomar un valor U ∼ U (0, 1) para simular X2i−1 y el valor 1 − U para simular X2i , su variable antitética, para i = 1, 2, . . . , N2 (si N es par). El procedimiento es más complicado con otros métodos de simulación distintos del de inversión. 7.4.3. Estratificación En ocasiones conviene dividir la población en estratos obteniendo, del total de la muestra, cierto número de observaciones de cada estrato (proporcional a la probabilidad de cada uno). Ejemplo 7.4.1 (muestreo estratificado de una exponencial) Supóngase que, dada una muestra de tamaño 10 de una población con distribución exp (1) , se desea estimar la media poblacional. Si pretendemos evitar que, por puro azar, exista alguna zona, en la que la exponencial toma valores, no representada en la muestra de 10 datos, podemos proceder de la siguiente forma: Tomemos tres estratos, por ejemplo, el del 40 % de valores menores, el siguiente 50 % de valores intermedios y el 10 % de valores mayores para esta distribución. Como el algoritmo de inversión (optimizado) para simular la exp (1) es 1. Generar U ∼ U (0, 1). 2. Hacer X = − ln U . la forma de garantizar que obtengamos 4, 5 y 1 valores, repectivamente, en cada uno de los tres estratos consiste en elegir U ∈ [0,6, 1), en el primer caso, U ∈ [0,1, 0,6), en el segundo y U ∈ [0, 0,1) para el tercer estrato. 7.4. TÉCNICAS DE REDUCCIÓN DE LA VARIANZA 79 Dado que, en principio, no hay nada que nos garantice que, simulando diez valores U1 , U2 , . . . , U10 ∼ U (0, 1), las proporciones de los estratos son las deseadas (aunque sı́ lo sean en media) una forma de proceder consiste en rechazar valores de U que caigan en uno de esos tres intervalos cuando el cupo de ese estrato esté ya lleno. Esto d es lo mismo que simular 4 valores de U |U ∈[0,6,1) = U [0,6, 1) para el primer estrato, 5 d d valores de U |U ∈[0,1,0,6) = U [0,1, 0,6) para el segundo y uno de U |U ∈[0,0,1) = U [0, 0,1) para el tercero. El algoritmo con esta estratificación serı́a como sigue: 1. 2. 3. 4. 5. Generar Ui ∼ U (0, 1) para i = 1, 2, . . . , 10. Si i ≤ 4 entonces hacer Ui = 0,4 · Ui + 0,6. Si 4 < i ≤ 9 entonces hacer Ui = 0,5 · Ui + 0,1. Si i = 10 entonces hacer Ui = 0,1 · Ui . Desde i = 1 hasta 10 devolver Xi = − ln Ui . No es difı́cil probar que V ar (Xi ) = 0,0214644 si i = 1, 2, 3, 4, V ar (Xi ) = 0,229504 si i = 5, 6, 7, 8, 9 y V ar (X10 ) = 1. Como consecuencia, 10 1 X V ar (Xi ) = 0,022338 V ar X = 2 10 i=1 que es bastante menor que 0.1, la varianza en el caso de muestreo aleatorio simple no estratificado. 80 7.5. CAPÍTULO 7. DISEÑO DE EXPERIMENTOS DE SIMULACIÓN Problemas de estabilización y dependencia Ambas cuestiones suelen plantearse en la simulación dinámica. Los problemas de estabilización están relacionados con el hecho de que, en ocasiones, el sistema evoluciona en el tiempo de tal forma que tiene una distribución estacionaria que se supone de partida pero que puede ser muy sensible a las condiciones iniciales con las que se comience la simulación. En tal caso resulta conveniente el transcurso de cierto perı́odo de tiempo (denominado perı́odo de estabilización) durante el cual los resultados obtenidos para las variables de salida son ignorados y cuyo único objeto es conseguir que se estabilice la distribución de probabilidad. Ejemplo 7.5.1 Supongamos el siguiente modelo de simulación: Xt = 10 + 0,7 · (Xt−1 − 10) + εt para explicar la temperatura, Xt , tomada a las 12 a.m. en el dı́a t, donde εt es un error aleatorio con distribución N (0, 1). Parece evidente que, en un modelo como éste, es crucial el valor de la condición inicial X0 correspondiente al origen de tiempos. En otras palabras, tomando para X0 un valor muy lejano a aquéllos más probables bajo la distribución estacionaria (por ejemplo, X0 = 100), es intutitivo que se necesitarı́a de una etapa inicial considerable para llegar a alcanzar valores estacionarios. Por ejemplo, suponiendo que los εt fuesen cero (que aunque no es cierto, realmente son bastante pequeños en relación con el valor 100), se obtendrı́a la siguiente sucesión de valores: X0 = 100, X1 = 73, X2 = 54,1, X3 = 40,87, X4 = 31,7, X5 = 25,4, . . . El perı́odo de estabilización serı́a mucho menor si se partiese de un valor inicial más cercano a 10. Los problemas de dependencia son aquéllos derivados del hecho de que frecuentemente (de nuevo en modelos de simulación dinámica) las distintas variables de salida de la simulación son dependientes. En el ejemplo anterior es obvio que cada valor Xt depende de Xt−1 (incluso de Xt−2 y de otras anteriores, aunque cada vez en menor medida). Esto afecta fundamentalmente a la precisión de los estimadores construidos con observaciones de las mismas. Una forma de atenuar este efecto serı́a considerar observaciones de las mismas en instantes temporalmente lejanos (donde se supone que la dependencia es mucho más débil). En ocasiones, más que atenuar este efecto se trata de estimar la precisión del estimador resultante. Obviamente, para ello ha de tenerse en cuenta la dependencia.