Números aleatorios.

Anuncio
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
Descargar