Beruflich Dokumente
Kultur Dokumente
19 de agosto de 2014
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
1 / 38
Contenido
Contenido
Nmeros Aleatorios
Generacin de Nmeros Pseudo-aleatorios
Mtodos de generacin de nas de distribuciones
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
2 / 38
Nmeros Aleatorios
Contenido
Nmeros Aleatorios
Generacin de Nmeros Pseudo-aleatorios
Mtodos de generacin de nas de distribuciones
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
3 / 38
Nmeros Aleatorios
Introduccin
Mediante simulacin pretendemos evaluar el desempeo del
funcionamiento de un sistema ante situaciones sujetas a variabilidad
aleatoria.
Muchos de los procedimientos estadsticos tradicionales tienen buenas
propiedades o son relativamente sencillos de calcular slo en
situaciones en las que los datos o las estadsticas derivadas de ellos
(estimadores, estadsticas de prueba, etc.) son o pueden tratarse
como (aproximadamente) normales.
Por ejemplo, en muchos de los problemas ms comunes la distribucin
muestral de dichas estadsticas es asintticamente normal.
Sin embargo, no todos estos procedimientos son robustos ante
violaciones al supuesto de normalidad.
En stos y en otros casos, las propiedades de la distribucin muestral
de las estadsticas relevantes no se conocen de manera exacta y
pueden ser difciles de aproximar analticamente
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
4 / 38
Nmeros Aleatorios
Introduccin
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
5 / 38
Nmeros Aleatorios
Introduccin
Todos los generadores de nmeros aleatorios son de naturaleza
determinstica. Sin embargo, son tales que parecen aleatorios.
El problema bsico consiste en simular muestras de la distribucin
uniforme (discreta o continua)
A partir de estos valores, es posible simular ?observaciones? de
cualquier otra distribucin de probabilidad
Las caractersticas principales que debe cumplir un generador de
nmeros aleatorios uniformes son:
I
I
I
I
Distribucin uniforme
Independencia
Repetibilidad y portabilidad.
Rapidez computacional.
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
6 / 38
Nmeros Aleatorios
Mtodos de generacin de NA
Los mtodos de generacin de nmeros pseudo-aleatorios son:
Mtodo de los cuadrados medios
Mtodos congruenciales
Mtodo de registro desfasados
etc.
Procedimiento general:
P1 > P2 > P3
Donde:
P1 : Obtener la semilla (valores iniciales)
P2 : Implementar el algoritmo recursivo
P3 : Validar el conjunto de datos generados
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
7 / 38
Nmeros Aleatorios
Mtodos de generacin de NA
Los mtodos de generacin de nmeros pseudo-aleatorios son:
Mtodo de los cuadrados medios
Mtodos congruenciales
Mtodo de registro desfasados
etc.
Procedimiento general:
P1 > P2 > P3
Donde:
P1 : Obtener la semilla (valores iniciales)
P2 : Implementar el algoritmo recursivo
P3 : Validar el conjunto de datos generados
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
7 / 38
Nmeros Aleatorios
Cuadrados Medios
Consiste en que cada nmero de una sucesin es producido tomando los
dgitos medios (tpicamente 4) de un nmero obtenido mediante la
elevacin al cuadrado.
Ejemplo:
Iniciemos con la semilla 2310
X
2310
3361
2963
7793
(IIMAS-UNAM)
X2
5336100
11296321
8779369
Simulacin
num aleat
0.3361
0.2963
0.7793
19 de agosto de 2014
8 / 38
Nmeros Aleatorios
Mtodo congruencial
El mtodo de generadores congruenciales es el ms ampliamente usado y
conocido.
Los generadores estn basados en la siguiente frmula:
Ui = (aUi1 + c) mod m
donde Ui son los nmeros pseudo-aleatorios, U0 valor de inicio (semilla),
que usualmente se escoge al azar y a, c y m son las constantes que definen
al generador.
Note que para convertir estas variables a variables uniformes (0,1), solo se
necesita dividirlas por m, esto es, se usa la secuencia: {Ui /m}.
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
9 / 38
Nmeros Aleatorios
Ejemplo:
Consideremos el funcionamiento del generador con m = 10 y
U0 = a = c = 7.
U1 = (77 + 7) mod 10 = 56 mod 10 = 6
U2 = (76 + 7) mod 10 = 49 mod 10 = 9
U3 = (79 + 7) mod 10 = 70 mod 10 = 0
U4 = (70 + 7) mod 10 = 7 mod 10 = 7
U5 = (77 + 7) mod 10 = 56 mod 10 = 6
..
.
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
10 / 38
Nmeros Aleatorios
Comentarios..
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
11 / 38
Nmeros Aleatorios
generador RANDU
RANDU fue ampliamante usado en los 70s y 80s pues estaba
implementado en el sistema operativo de los sistemas VAX y las mquinas
IBM/370.
Su implementacin en R:
randu <- function(seed) (a*seed) %% m
RANDU <- function(n,seed){
a <- 2^16 + 3
m <- 2^31
mu <- rep(0,n)
for(i in 1:n){
seed <- randu(seed)
mu[i] <- seed/m }
return(list(mues=mu,lastseed=seed))}
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
12 / 38
Nmeros Aleatorios
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
13 / 38
Nmeros Aleatorios
otra opcin
Wichmann y Hill (1982) propusieron una combinacin de tres generadores
congruenciales
Xi = (171) Xi1 mod 30269
Yi = (172) Yi1 mod 30307
Zi = (170) Zi1 mod 30323
tomando
Ui =
Yi
Zi
Xi
+
+
30269 30307 30323
Este generador tiene un ciclo de 9.952 1012 (los anteriores son del orden
de 2 109 ).
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
14 / 38
Nmeros Aleatorios
Ejercicio 1
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
15 / 38
Nmeros Aleatorios
Mtodos
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
16 / 38
Nmeros Aleatorios
Transformada inversa
Propiedad:
Si U una v.a. con distribucin uniforme en (0, 1), entonces, para cualquier
fda F , la v.a. X definida por
X = F 1 (U)
tiene distribucin F .
Donde
F 1 (y ) = nf {x : F (x ) y }
x R
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
17 / 38
Nmeros Aleatorios
Caso continuo
Generamos U U(0, 1)
Calculamos X = F 1 (U)
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
18 / 38
Nmeros Aleatorios
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
19 / 38
Nmeros Aleatorios
Ejemplo
Si X es exponencial con parmetro = 1 su funcin de distribucin es
F (x ) = 1 e x
Si ponemos x = F 1 (u) entonces
u = F (x ) = 1 e x
o
1 u = e x
Tomando logaritmos
x = log(1 u)
Por lo tanto, aplicando el algoritmo antes mencionado
1
Generamos u U(0, 1)
calculamos x = log(1 u)
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
20 / 38
Nmeros Aleatorios
Caso discreto
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
21 / 38
Nmeros Aleatorios
Caso discreto
Si deseamos generar el valor de una v.a. X que tiene distribucin de
probabilidad
P(X = xj ) = pj , j = 1, 2, . . . ,
pj = 1,
Aplicamos el procedimiento:
1
Generar u U(0, 1)
x1 si u < p1
x2 si p1 u < p1 + p2
.
..
X=
xj
..
si
Pj1
i=1
pi u <
Pj
i=1 pi
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
22 / 38
Nmeros Aleatorios
Ejemplo
Supongamos que queremos generar una variable aleatoria con la siguiente
distribucin:
P(X = j) = pj
para j = 1, 2, 3, 4, con probabilidades
p1 = 0.20, p2 = 0.15, p3 = 0.25, p4 = 0.4.
implementacin en R:
rdis <- function(n,p)
{
psum <- cumsum(p)
U <- runif(n)
val2 <- numeric(n)
num <- 1:length(p)
for (i in 1:n)
val2[i] <- min(num[U[i]<psum])
val2
}
rdis(100,p)
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
23 / 38
Nmeros Aleatorios
Ejemplo
Supongamos que queremos generar una variable aleatoria con la siguiente
distribucin:
P(X = j) = pj
para j = 1, 2, 3, 4, con probabilidades
p1 = 0.20, p2 = 0.15, p3 = 0.25, p4 = 0.4.
implementacin en R:
rdis <- function(n,p)
{
psum <- cumsum(p)
U <- runif(n)
val2 <- numeric(n)
num <- 1:length(p)
for (i in 1:n)
val2[i] <- min(num[U[i]<psum])
val2
}
rdis(100,p)
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
23 / 38
Nmeros Aleatorios
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
24 / 38
Nmeros Aleatorios
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
25 / 38
Nmeros Aleatorios
Algoritmo:
Paso 1. Generamos Y con densidad g.
Paso 2. Generamos un nmero aleatorio U.
f (Y )
Paso 3. Si U cg(Y
) , entonces X = Y. Si no, regresamos al paso 1
Propiedades:
(i) La variable generada con el mtodo del rechazo tiene densidad f .
(ii) El nmero de iteraciones necesarias en el algoritmo es una variable
geomtrica con media c.
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
26 / 38
Nmeros Aleatorios
Note que f (x ) tiene soporte en (0, 1), por lo que usaremos la distribucin
uniforme con el mtodo de rechazo.
g(x ) = 1, 0 < x < 1.
Simulacin
19 de agosto de 2014
27 / 38
Nmeros Aleatorios
256
27 U1 (1
Simulacin
19 de agosto de 2014
28 / 38
Nmeros Aleatorios
Ejercicio 2
f (x ) =
(IIMAS-UNAM)
x 1 para 1 < x 0,
1 x para 0 < x 1.
Simulacin
19 de agosto de 2014
29 / 38
Contenido
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
30 / 38
Introduccin
Introduccin
Los mtodos Monte Carlo son mtodos de simulacin que usan nmeros
(pseudo) aleatorios para investigar el comportamiento de sistemas fsicos y
matemticos y para otros tipos de clculo.
Debido a que los algoritmos de este tipo deben repetir los clculos un gran
nmero de veces, estos mtodos requieren el uso de computadores y de
diversas tcnicas de simulacin.
Un algoritmo Monte Carlo es un mtodo numrico tipo Monte Carlo que
se usa con frecuencia para atacar problemas matemticos que no pueden
ser resueltos de forma sencilla, por ejemplo a travs del cculo o por otros
mtodos numricos. En muchos casos, su eficiencia respecto a otras
tcnicas numricas aumenta con la dimensin del problema
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
31 / 38
Introduccin
Introduccin
Estos mtodos tienen una larga historia pero su uso se populariz despus
de la Segunda Guerra Mundial, con el advenimiento de la computadora.
El nombre, popularizado por algunos de los pioneros en el rea como S.
Ulam, E. Fermi, J. von Neumann y N. Metropolis, es una referencia al
famoso casino en Mnaco. Ulam escribe en su autobiografa que el mtodo
recibi este nombre a sugerencia de Metropolis en honor a su tio, que era
un jugador
Una de las primeras aplicaciones exitosas del mtodo Monte Carlo en Fsica
fue el estudio de las propiedades del neutrn por Enrico Fermi en 1930
El uso de mtodos Monte Carlo requiere de grandes cantidades de
nmeros aleatorios,
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
32 / 38
J=
g(x ) dx
0
Note que si U es una variable aleatoria con distribucin uniforme en (0, 1),
entonces podemos escribir a J como
J = E [g(U)]
Simulacin
19 de agosto de 2014
33 / 38
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
34 / 38
Z b
J=
g(x ) dx
a
Z b
g(x )
ba
dx
y
(b a)E [g(X )] =
Z b
g(x ) dx = J
a
Por lo tanto,
1
J = (b a)
n
n
X
g(Xi )
i=1
Simulacin
19 de agosto de 2014
35 / 38
Ejemplo
Deseamos calcular la siguiente integral
Z 1
0
1
dx
1 + x2
10
runif(n1)
4/(1+x^2)
<- sum(g1)/n)
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
36 / 38
Ejemplo
Deseamos calcular la siguiente integral
Z 1
0
1
dx
1 + x2
10
runif(n1)
4/(1+x^2)
<- sum(g1)/n)
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
36 / 38
J(y ) =
f (y |x )g(x ) dx = Eg [f (y |x )] < +
(IIMAS-UNAM)
Pn
)]2
J(y
n1
i=1 [f (y |xi )
Simulacin
19 de agosto de 2014
37 / 38
Ejercicio 3
Calcule
g(x )dx
0
x+
x dx
(IIMAS-UNAM)
Simulacin
19 de agosto de 2014
38 / 38