Números aleatorios. Contenidos 1. Descripción estadı́stica de datos. 2. Generación de números aleatorios – Números aleatorios con distribución uniforme. – Números aleatorios con otras distribuciones. ∗ Método basado en la inversa de la distribución de probabilidad acumulada. ∗ Método Box-Muller (distribución normal). ∗ Método del rechazo. – Números aleatorios con correlaciones. 1 – Distribución de Poisson Descripción estadı́stica de los datos. 0.20 Objetivo: Caracterizar un conjunto de datos mediante una distribución y /o un conjunto de parámetros, llamados momentos P (n) = 1 nn e−n n! 0.15 0.10 0.05 • Distribución de probabilidad. 0.00 0.0 – Consideremos la variable discreta x, cuyo rango es {x1, x2, . . . xN } – P (xn) ≡ Probabilidad de que al medir x una variable discreta obtengamos el valor xn. 5.0 10.0 15.0 20.0 Figure 1: Distribución de Poisson n = 2.5. 1 nn e−n P (n) = n! • Ejemplos: – Distribución binomial: Siendo p la probabilidad de que ocurra un suceso en una medida determinada, la probabilidad de m ocurrencias del suceso en N medidas independientes es PN (m) = N m (1 − p)N −mpm 2 3 • Distribución de densidad de probabilidad – Ejemplo: Distribución normal. 1 (x − x) P (x) = √ exp − 2σ 2 2πσ 2 – Consideremos la variable continua x. – P (x)dx ≡ Probabilidad de que la variable se encuentre entre x y x + dx. x – CDF (x) = −∞ P (x )dx ≡ Probabilidad de que la variable tenga un valor menor que x. P(x) 2 1.0 0.8 0.6 0.4 0.2 11 00 00 11 00 11 00 P(x) dx 11 00 11 x x+dx 00 11 0.0 −2.0 −1.0 0.0 1.0 2.0 – Ejemplo: Distribución log-normal. x 1 1 2 P (y) = √ exp − 2 (log y − log y) . 2 2σ 2πσ y 1 1.5 1.0 0.5 0.0 0.0 4 1.0 2.0 3.0 5 • Momento central de orden n x̂n Momentos. N 1 (xi − x)n x̂ = N i=1 n Consideremos el conjunto de puntos {x1, x2, . . . , xN } En MATLAB: moment(x,orden) • Media o valor medio x N 1 xi x ≡ N i=1 • Varianza σ 2 1 σ = (xi − x)2 N − 1 i=1 2 En MATLAB: mean(x) En Excel: PROMEDIO() Notas: Deja de ser útil cuando el primer momento de las colas de la distribución es grande. • Mediana xmed es tal que hay igual número de valores xi < xmed como de valores xi > xmed . En MATLAB: median(x) En Excel: MEDIANA() N N 1 σ = (xi − x)2 = x2 − x2 . N i=1 2 En MATLAB: var(x), var(x,1) En Excel: VAR() Notas: El factor que aparece en el denominador es (N − 1) si el valor medio es estimado a partir de los propios datos. • Desviación estándar o desviación tı́pica σ = Notas: Más robusto que la media. Deja de ser útil cuando el área bajo las colas de la distribución es grande. 6 √ V ar. En MATLAB: std(x), std(x,1) En Excel: DESVEST() 7 • Curtosis 4 N 1 xi − x Curt = −3 N i=1 σ • Espaciado entre cuartiles: – Espaciado que comprende el segundo y tercer cuartil de los datos. En MATLAB: kurtosis(x) En Excel: CURTOSIS() – Es una medida más robusta que la desviación estándar de la dispersión de los datos. En el caso en que dispongamos de la distribución subyacente En MATLAB: iqr(x) En Excel: CUARTIL(datos,opciones) Media Norma D • Coeficiente de asimetrı́a (sesgo) Skew = 1 N N i=1 xi − x σ P (xr ) = 1 E[x] = r=1 3 P (x)dx = 1 D E[x] = D r=1 xr P (xr ) D Momento de orden n E[x ] = n D xnP (xr ) r=1 x P (x)dx E[xn] = xnP (x)dx D Distribución Media Varianza Coef.asim. Curtosis Poisson x x 1/ x 1/ x Normal x σ 0 0 En MATLAB: skewness(x) En Excel: COEFICIENTE.ASIMETRIA() 8 9 • Nivel de confianza (P ) y valores crı́ticos (zc) para una distribución normal con desviación estándard σ. Descripción estadı́stica de errores. P (zc) ≡ Probabilidad ( |x − x| < zcσ) Hipótesis: Los errores aleatorios proceden de una acumulación de pequeñas alteraciones que se producen al azar. P (%) zc 99.9 3.29 Teorema del lı́mite central 99 2.58 • Considera la variable definida como suma de variables N aleatorias {xi}i=1 tomadas de las distribuciones de probabilidad Pi(xi) centradas en torno al origen N 1 xi y=√ N i=1 En el lı́mite N → ∞, la distribución de y es una distribución normal centrada en torno al origen y cuya varianza es N 1 2 2 σ (xi) σ (y) = N i=1 95 2.00 90 1.64 68 1.00 • Desviación tı́pica de la media. Dado N 1 xi x = N i=1 se cumple σ(x) σ(x) = √ N • Los errores aleatorios tienen una distribución normal. 10 11 • Generadores por congruencia lineal. Generador de números aleatorios. Generador por congruencia lineal Un ordenador es una máquina determinista con un número finito de estados. El problema es cómo generar una sucesión infinita de números aleatorios, con una distribución de probabilidad subyacente prefijada, de manera algorı́tmica. Uj Ij+1 Ij ; m = (aIj ) mod m, j = 0, 1, . . . , = • A lo más que podemos aspirar es a generar una secuencia de números pseudo-aleatorios, es decir, tales que se comportan para el programa en el que son utilizados como una secuencia de números aleatorios (i.e. Es decir, no es posible detectar correlaciones estadı́sticas entre ellos). con las definiciones • Nos centraremos en el problema de encontrar números aleatorios con una distribución uniforme en el intervalo [0, 1]. La distribución de probabilidad es Si los valores de a, y m son elegidos de una forma adecuada, se generará una secuencia de números aleatorios enteros con una distribución uniforme en [1, m−1], con un periodo máximo de m−1. En concreto, las siguientes condiciones garantizan que el generador tiene un periodo máximo (a es una raiz primitiva del primo m: P (u) = 0 u (0, 1) 1 u ∈ (0, 1) m módulo a multiplicador I0 semilla (entero entre 1 y m − 1 – m es primo. – am−1 − 1 es un múltiplo de m. – aj−1 − 1; j = 1, 2, . . . , m − 2 no son múltiplos de m. 12 13 El generador por congruencia lineal generalizado Uj Ij+1 – Ejemplo 2: (Park+Miller) Ij ; m = (aIj + c) mod m, j = 0, 1, . . . m a c I0 = es más lento que el anterior y no aporta mayor generalidad. Las condiciones que deben cumplir los parámetros a, c, m para que el generador tenga un periodo máximo son: – El único divisior común entre c y m es 1 (se dice que c y m son primos el uno respecto al otro). – todos los divisores primos m son divisores primos de a − 1. – Si m es divisible por 4, a − 1 también lo es. • Ejemplos – Ejemplo 1: (de ejemplo propuesto para el estándar ANSI C) m = 215 = 32768 a = 1103515245 c = 12345 = = = = 231 − 1 = 2147483647 75 = 16807 0 0 La implementación en este ejemplo ha de ser hecha con cuidado, ya que necesitamos realizar operaciones exactas con enteros. • Ventajas – El método es rápido. – La secuencia generada es independiente de la máquina en la que se ejecuta el algoritmo. • Inconvenientes – Existen correlaciones entre los números generados: Imaginemos que utilizamos esta secuencia para generar puntos en k dimensiones, los puntos se distribuyen en un máximo de m1/k hiper-planos de dimensión k − 1, y no de manera uniforme. – Los bits menos significativos tienen un carácter menos aleatorio que los bits más significativos. 14 15 – En particular, el algoritmo de Park y Miller no satisface el test χ2 si dos puntos sucesivos se asimilan a puntos en un plano bidimensional (Ii, Ii+1), i = 1, 2, . . . , N , para N ≈ 107 (todavı́a mucho menor que m − 2). Es posible eliminar estas correlaciones secuenciales de bajo orden mediante un simple mecanismo de reordenación aleatoria. Números aleatorios con otras distribuciones. El problema a resolver es cómo obtener a partir de un generador de números aleatorios con una distribución ρ(u) (generalmente uniforme), un generador de números aleatorios con la distribución p(z). • Por el principio de conservación de probabilidad du |ρ(u)du| = |p(z)dz| =⇒ p(z) = ρ(u) dy • Dada la forma de la distribución objetivo p(z), y si partimos de una distribución de probabilidad uniforme en u, hemos de resolver la ecuación diferencial p(z) = du . dz En términos de la distribución de probabilidad acumulada z P (z) = dyp(y) −∞ la solución es u = P (z) =⇒ z = P −1(u). 16 17 • Ejemplo: Números aleatorios con distribución normal. – La distribución objetivo es la exponencial p(z) = e−z , z ∈ [0, ∞] Para obtenerun conjunto de números aleatorios con una distribución normal, utilizaremos un método de transformación en dos dimensiones. – La distribución de probabilidad acumulada P (z) = z 0 dze−z = 1 − e−z • El objetivo es utilizar un generador de números aleatorios con distribución uniforme para generar números aleatorios con una distribución normal: – La transformación apropiada es z2 1 p(z) = √ exp( ). 2 2π z(u) = − log(1 − u). El algoritmo es • La transformación a utilizar es – Generar un número aleatorio con distribución uniforme u U [0, 1] . – Calcular el número aleatorio z = − log(1 − u). – Los números aleatorios z tienen una distribución p(z) = e−z . z1 z2 = −2 log(u1) cos(2πu2) = −2 log(u1) sin(2πu2), donde u1, u2 son dos números aleatorios con distribución U [0, 1]. 18 19 • Demostración: – Algoritmo: – En 2 dimensiones, la conservación de probabilidad se traduce en |P (u1, u2)du1du2| = |P (z1, z2)dz1dz2| =⇒ ∂(u1, u2) P (u1, u2) P (z1, z2) = ∂(dz1, dz2) 1. Genera los números v1, v2 a partir de una distribución uniforme en [0, 1]. 2. Elige únicamente aquellos pares v1 , v2 correspondientes a una distribución uniforme en un cı́rculo de radio unidad R2 ≡ v12 + v22 < 1. – A partir de las expresiones u1 u2 1 = exp − (z12 + z22) 2 z2 1 arctan = 2π z1 3. Genera los números aleatorios z1, z2 mediante la fórmula v1 −2 log(R) R v2 = −2 log(R) . R z1 = z2 el Jacobiano es 1 1 2 ∂(u1, u2) 2 = − exp − (z1 + z2 ) . ∂(dz1, dz2) 2π 2 – Siendo P (u1, u2) = 1, el resultado es P (z1, z2) = 2 1 √ e−z1 /2 2π 2 1 √ e−z2 /2 2π 20 21 Este proceso requiere un promedio de A evaluaciones de 2 números aleatorios uniformes. Método de rechazo. A Este método permite obtener un conjunto de números aleatorios con una distribución arbitraria p(x). F(x) U -1 f(F (U)) f(x) p(x) 1. Definimos una función de comparación f (x) similar a p(x) tal que cumple las siguientes condiciones V f (x) ≥ p(x) ∀x ∈ [−∞, ∞] x dy f (y) es conocida F (x) ≡ −∞ ∞ 0 -1 F (U) Figure 2: Representación gráfica del método del rechazo. F (∞) = −∞ Algoritmo alternativo dy f (y) = A (> 1) 1. Definimos una distribución de densidad de probabilidad de referecia pdf (x) para la cual sabemos generar números aleatorios, similar a p(x), y tal que cumple las siguientes condiciones 2. Generamos un número aleatorio U a partir de una distribución U [0, A]. A partir de este número definimos A pdf (x) ≥ cdf (x) ≡ p(x) ∀x ∈ [−∞, ∞]; A ≥ 1 X = F −1(U ) 3. Generamos un segundo número aleatorio V a partir de una distribución uniforme en [0, f (x)]: V < p(X) x x es aceptado V ≥ p(X) x es rechazado 22 x −∞ dx cdf (x ) 2. Generamos un número aleatorio X con la distribución de referencia. Para ello podemos utilizar el método de la inversa: (a) Generar U a partir de una distribución U [0, 1]. (b) A partir de U calculamos X = cdf −1 (U ). 3. Generamos un segundo número aleatorio V a partir de una distribución uniforme en [0, A pdf (x)]: V < p(X) x es aceptado V ≥ p(X) x es rechazado 23 Ejemplo Números aleatorios con correlaciones para generar números aleatorios N (0, 1), a partir de una función de referencia uniforme en [−R, R] f (x) = normpdf (0); x ∈ [−R, R] f (x) ≥ normpdf (x); x ∈ [−R, R] Si queremos generar una muestra de números aleatorios (y1, y2, . . . , yN ) con una distribución gaussiana de media (µ1, µ2, . . . , µN ) y matriz de covarianzas Σ. • Generamos una muestra de números aleatorios (x1, x2, . . . , xN ) independientes con distribución normal (0, 1). F (x) = normpdf (0)(x + R); A = 2 R normpdf (0); F −1(u) = u/normpdf (0) − R; • Realizamos la siguiente descomposición de la matriz de covarianzas (ej. descomposición de Cholesky). El algoritmo para esta distribución es: Σ = A† · A 1. Genera valor aleatorio X ∼ U [−R, R]. En MATLAB A = chol(Σ). Nota: Este paso resulta de combinar (a) Genera valor aleatorio U ∼ U [0, A]. (b) Calcula X = U/normpdf (0) − R. • Finalmente ⎛ y1 ⎜ y2 ⎜ ⎝ ... yN 2. Genera valor V ∼ U [0, normpdf (0)]. 3. Acepta X si V < normpdf (X). 24 ⎞ ⎛ ⎞ ⎛ µ1 ⎟ ⎜ ⎟ ⎜ ⎟ = ⎜ µ2 ⎟ + A† · ⎜ ⎠ ⎝ ... ⎠ ⎝ µN ⎞ x1 x2 ⎟ ⎟ ... ⎠ xN 25