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
Descripción estadística de los datos. Distribución de Poisson Objetivo: Caracterizar un conjunto de datos mediante una distribución y /o un conjunto de parámetros, llamados momentos 0.20 0.15 0.10 P (n) = 1 n! n n e n Distribución de probabilidad. Consideremos la variable discreta x, cuyo rango es {x 1,x 2,...x N } P (x n ) Probabilidad de que al medir x una variable discreta obtengamos el valor x n. 0.05 0.00 0.0 5.0 10.0 15.0 20.0 Figure 1: Distribución de Poisson n =2.5. P (n) = 1 n! n n e 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 ( N P N (m) = m ) (1 p) N m p m 2 3
Distribución de densidad de probabilidad Consideremos la variable continua x. P (x)dx Probabilidad de que la variable se encuentre entre x y x + dx. CDF(x) = x P (x )dx Probabilidad de que la variable tenga un valor menor que x. P(x) Ejemplo: Distribución normal. P (x) = 1.0 0.8 0.6 { } 1 exp (x x )2 2πσ 2 2σ 2 0.4 00 11 00 11 00 11 P(x) dx 00 11 00 11 00 11 x x+dx x 0.2 0.0 2.0 1.0 0.0 1.0 2.0 Ejemplo: Distribución log-normal. P (y) = { 1 1 2πσ 2 y exp 1 } (log y log y )2. 2σ2 1.5 1.0 0.5 0.0 0.0 1.0 2.0 3.0 4 5
Momentos. Momento central de orden n ˆx n Consideremos el conjunto de puntos {x 1,x 2,...,x N } ˆx n = 1 N N (x i x ) n Media o valor medio x x 1 N En MATLAB: mean(x) En Excel: PROMEDIO() N Notas: Deja de ser útil cuando el primer momento de las colas de la distribución es grande. Mediana x med es tal que hay igual número de valores x i <x med como de valores x i >x med. En MATLAB: median(x) En Excel: MEDIANA() Notas: Más robusto que la media. Deja de ser útil cuando el área bajo las colas de la distribución es grande. x i En MATLAB: moment(x,orden) Varianza σ 2 σ 2 = 1 N 1 N (x i x ) 2 σ 2 = 1 N (x i x ) 2 N = x 2 x 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 σ = Var. En MATLAB: std(x), std(x,1) En Excel: DESVEST() 6 7
Curtosis Espaciado entre cuartiles: Espaciado que comprende el segundo y tercer cuartil de los datos. Es una medida más robusta que la desviación estándar de la dispersión de los datos. En MATLAB: iqr(x) En Excel: CUARTIL(datos,opciones) Coeficiente de asimetría (sesgo) Skew = 1 N N ( xi x En MATLAB: skewness(x) En Excel: COEFICIENTE.ASIMETRIA() σ ) 3 Curt = 1 N N ( ) 4 xi x 3 σ En MATLAB: kurtosis(x) En Excel: CURTOSIS() En el caso en que dispongamos de la distribución subyacente Norma Media Momento de orden n D P (x r )=1 E[x] = D D r=1 x rp (x r ) E[x n ]= x n P (x r ) r=1 r=1 P (x)dx =1 E[x] = D xp(x)dx E[xn ]= x n P (x)dx D Distribución Media Varianza Coef. asim. Curtosis Poisson x x 1/ x 1/ x Normal x σ 0 0 D 8 9
Descripción estadística de errores. Hipótesis: Los errores aleatorios proceden de una acumulación de pequeñas alteraciones que se producen al azar. Teorema del ĺımite central Considera la variable definida como suma de variables aleatorias {x i } N tomadas de las distribuciones de probabilidad P i (x i ) centradas en torno al origen y = 1 N N En el ĺımite N, la distribución de y es una distribución normal centrada en torno al origen y cuya varianza es σ 2 (y) = 1 N σ 2 (x i ) N x i Nivel de confianza (P )yvalorescríticos (z c ) para una distribución normal con desviación estándard σ. P (z c ) Probabilidad ( x x <z c σ) P (%) z c 99.9 3.29 99 2.58 95 2.00 90 1.64 68 1.00 Desviación típica de la media. Dado se cumple x = 1 N N x i σ( x ) = σ(x) N Los errores aleatorios tienen una distribución normal. 10 11
Generador de números aleatorios. Generadores por congruencia lineal. Generador por congruencia lineal Un ordenador es una máquina determinista conunnú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. U j = I j m ; I j+1 = (ai j ) mod m, j =0, 1,..., Alomá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). 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 P (u) = { 0 u (0, 1) 1 u (0, 1) con las definiciones m módulo a multiplicador I 0 semilla (entero entre 1 y m 1 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], conunperiodomá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: m es primo. a m 1 1 es un múltiplo de m. a j 1 1; j =1, 2,...,m 2 no son múltiplos de m. 12 13
El generador por congruencia lineal generalizado U j = I j m ; I j+1 = (ai j + c) mod m, j =0, 1,... 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 = 2 15 = 32768 a = 1103515245 c = 12345 Ejemplo 2: (Park+Miller) m = 2 31 1 = 2147483647 a = 7 5 = 16807 c = 0 I 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 m 1/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 (I i,i i+1 ), i =1, 2,...,N, para N 10 7 (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 ρ(u)du = p(z)dz = p(z) = ρ(u) du 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 P (z) = z dyp(y) la solución es u = P (z) = z = P 1 (u). 16 17
Ejemplo: La distribución objetivo es la exponencial p(z) =e z, z [0, ] La distribución de probabilidad acumulada P (z) = z La transformación apropiada es El algoritmo es 0 dze z =1 e z z(u) = log(1 u). Generar un número aleatorio con distribución uniforme uu[0, 1]. Calcular el número aleatorio z = log(1 u). Los números aleatorios z tienen una distribución p(z) =e z. Números aleatorios con distribución normal. Para obtenerun conjunto de números aleatorios con una distribución normal, utilizaremos un método de transformación en dos dimensiones. El objetivo es utilizar un generador de números aleatorios con distribución uniforme para generar números aleatorios con una distribución normal: p(z) = 1 2π exp( z2 2 ). La transformación a utilizar es z 1 = 2log(u 1 )cos(2πu 2 ) z 2 = 2log(u 1 )sin(2πu 2 ), donde u 1, u 2 son dos números aleatorios con distribución U[0, 1]. 18 19
Demostración: En 2 dimensiones, la conservación de probabilidad se traduce en P (u 1,u 2 )du 1 du 2 = P (z 1,z 2 )dz 1 dz 2 = P (z 1,z 2 )= (u 1,u 2 ) (dz 1,dz 2 ) P (u 1,u 2 ) A partir de las expresiones [ u 1 = exp 1 ] 2 (z2 1 + z2) 2 u 2 = 1 2π arctan z 2 z 1 el Jacobiano es (u 1,u 2 ) (dz 1,dz 2 ) = 1 ( 2π exp 1 ) 2 (z2 1 + z2) 2. Algoritmo: 1. Genera los números v 1, v 2 a partir de una distribución uniforme en [0, 1]. 2. Elige únicamente aquellos pares v 1,v 2 correspondientes a una distribuciónuniformeenuncírculo de radio unidad R 2 v 2 1 + v 2 2 < 1. 3. Genera los números aleatorios z 1, z 2 mediante la fórmula z 1 = 2log(R) v 1 R z 2 = 2log(R) v 2 R. Siendo P (u 1,u 2 )=1, el resultado es P (z 1,z 2 ) = ( 1 2π e z2 1 /2 )( 1 2π e z2 2 /2 ) 20 21
Método de rechazo. Este proceso requiere un promedio de A evaluaciones de 2 números aleatorios uniformes. Este método permite obtener un conjunto de números aleatorios con una distribución arbitraria p(x). A U f(x) F(x) -1 f(f (U)) 1. Definimos una función de comparación f(x) similar a p(x) tal que cumple las siguientes condiciones f(x) p(x) x [, ] F (x) F ( ) = x dy f(y) es conocida dy f(y) = A (> 1) 2. Generamos un número aleatorio U a partir de una distribución U[0,A]. Apartirdeestenúmero definimos X = F 1 (U) 3. Generamos un segundo número aleatorio V apartirde una distribución uniforme en [0,f(x)]: 0 p(x) -1 F (U) Figure 2: Representación gráfica del método del rechazo. Algoritmo alternativo 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 Apdf(x) p(x) x [, ]; A 1 cdf(x) 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,Apdf(x)]: V x V < p(x) x es aceptado V < p(x) x es aceptado V p(x) x es rechazado V p(x) x es rechazado 22 23
Ejemplo 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] F (x) = normpdf(0)(x + R); A = 2Rnormpdf(0); F 1 (u) = u/normpdf(0) R; El algoritmo para esta distribución es: 1. Genera valor aleatorio X U[ R, R]. Nota: Este paso resulta de combinar (a) Genera valor aleatorio U U[0,A]. (b) Calcula X = U/normpdf(0) R. Números aleatorios con correlaciones Si queremos generar una muestra de números aleatorios (y 1,y 2,...,y N ) con una distribución gaussiana de media (µ 1,µ 2,...,µ N ) y matriz de covarianzas Σ. Generamos una muestra de números aleatorios (x 1,x 2,...,x N ) independientes con distribución normal (0, 1). Realizamos la siguiente descomposición de la matriz de covarianzas (ej. descomposición de Cholesky). En MATLAB A = chol(σ). Σ = A A 2. Genera valor V U[0,normpdf(0)]. 3. Acepta X si V<normpdf(X). Finalmente y 1 y 2... y N = µ 1 µ 2... µ N + A x 1 x 2... x N 24 25