Sie sind auf Seite 1von 41

Simulacin en R

Dr. Francisco J Ariza Hernndez


IIMAS - UNAM
-

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

Mtodos Monte Carlo


Introduccin
Integracin Monte Carlo

(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

Generacin de Nmeros Pseudo-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

Generacin de Nmeros Pseudo-aleatorios

Introduccin

Lo anterior ha generado la necesidad de contar con mtodos


numricos alternativos para resolver esos problemas.
Afortunadamente, el avance tecnolgico que se refleja en el poder de
procesamiento y capacidad de almacenamiento de las computadoras,
ha permitido el desarrollo de mtodos basados en tcnicas de
simulacin.
Para todo proyecto de simulacin es indispensable contar con
generadores de nmeros pseudo-aleatorios.
En general, los generadores implementados en R son de buena calidad
(runif, rnorm). Sin embargo, revisaremos algunos de sus
fundamentos.

(IIMAS-UNAM)

Simulacin

19 de agosto de 2014

5 / 38

Nmeros Aleatorios

Generacin de Nmeros Pseudo-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

Generacin de Nmeros Pseudo-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

Generacin de Nmeros Pseudo-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

Generacin de Nmeros Pseudo-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

Generacin de Nmeros Pseudo-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

Generacin de Nmeros Pseudo-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
..
.

Claramente la sucesin 7, 6, 9, 0, 7, 6, 9, 0 no es aleatoria.

(IIMAS-UNAM)

Simulacin

19 de agosto de 2014

10 / 38

Nmeros Aleatorios

Generacin de Nmeros Pseudo-aleatorios

Comentarios..

Dado que se utiliza la funcin mod m, los posibles valores que


produce el algoritmo son los enteros {0, 1, 2, ..., m 1}, por definicin
de modulo.
Debido que el entero aleatorio Ui depende solamente del entero
aleatorio previo Ui1 , una vez que se repita el valor previo, la
secuencia se repite (ciclo). La longitud mxima del periodo es m.
Los valores de a, c y m determinan la finura con que se hace la
particin del intervalo (0, 1), la longitud del ciclo, la uniformidad de la
distribucin marginal y tambin afectan la propiedad de
independencia de la secuencia que se genera.

(IIMAS-UNAM)

Simulacin

19 de agosto de 2014

11 / 38

Nmeros Aleatorios

Generacin de Nmeros Pseudo-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

Generacin de Nmeros Pseudo-aleatorios

Los siguientes parmetros han sido recomendados en la literatura por sus


propiedades de uniformidad, independencia y facilidad de implementacin.
Todos ellos usan mdulo 231 1 y tienen ciclos maximales de 231 1
(excepto el primero que tiene un ciclo de 231 2 ), para propsitos
prcticos 231 1 = 2, 147, 483, 646 debe alcanzar para cualquier
simulacin.
a = 16807
a = 950706376
a = 742938285
a = 1226874159
a = 62089911
a = 1343714438

(IIMAS-UNAM)

Simulacin

19 de agosto de 2014

13 / 38

Nmeros Aleatorios

Generacin de Nmeros Pseudo-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

Generacin de Nmeros Pseudo-aleatorios

Ejercicio 1

Escriba un programa en R que implemente el mtodo de cuadrados


medios.

Escriba una funcin en R que implemente un generador congruencial


de nmeros aleatorios con mdulo 231 1 y a = 62089911. Use esta
funcin para generar 10000 nmeros con distribucin uniforme en
(0, 1). Haga una grfica del resultado contra el ndice, un histograma
y una grfica de U2n1 vs. U2n . Comente sus resultados.

(IIMAS-UNAM)

Simulacin

19 de agosto de 2014

15 / 38

Nmeros Aleatorios

Mtodos de generacin de nas de distribuciones

Mtodos

Se desea generar nmeros aleatorios x , que pertenecen a un dominio


x [xmin , xmax ], de una manera tal que la frecuencia de ocurrencia (pdf),
depender del valor de x en una forma funcional f (x ) conocida de
antemano.
Los mtodos mas comunes:
Transformada inversa
Aceptacin y rechazo
Composicin
Convolucin

(IIMAS-UNAM)

Simulacin

19 de agosto de 2014

16 / 38

Nmeros Aleatorios

Mtodos de generacin de nas de distribuciones

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

Mtodos de generacin de nas de distribuciones

Caso continuo

Sea F 1 () la funcin inversa de la funcin de distribucin acumulada


F (x ). Para generar la funcin de densidad de probabilidad f (x ), usamos el
siguiente procedimiento:
1

Generamos U U(0, 1)

Calculamos X = F 1 (U)

Repetimos n-veces los pasos 1 2 para obtener n realizaciones de la v.a.


con pdf f (x )

(IIMAS-UNAM)

Simulacin

19 de agosto de 2014

18 / 38

Nmeros Aleatorios

(IIMAS-UNAM)

Mtodos de generacin de nas de distribuciones

Simulacin

19 de agosto de 2014

19 / 38

Nmeros Aleatorios

Mtodos de generacin de nas de distribuciones

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

Mtodos de generacin de nas de distribuciones

Caso discreto

(IIMAS-UNAM)

Simulacin

19 de agosto de 2014

21 / 38

Nmeros Aleatorios

Mtodos de generacin de nas de distribuciones

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

Mtodos de generacin de nas de distribuciones

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

Mtodos de generacin de nas de distribuciones

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

Mtodos de generacin de nas de distribuciones

Mtodo de aceptacin y Rechazo


Es un mtodo mas general, y que puede ser usado cuando los otros
mtods fallan.

(IIMAS-UNAM)

Simulacin

19 de agosto de 2014

24 / 38

Nmeros Aleatorios

Mtodos de generacin de nas de distribuciones

Mtodo de aceptacin y Rechazo

Supongamos que tenemos una manera de generar una variable aleatoria


con densidad g(x ) y queremos generar otra variable que tiene densidad
f (x ) con el mismo soporte.
Podemos hacer esto generando Y con distribucin g y luego aceptando
este valor con probabilidad proporcional a f (Y )/g(Y ).
Sea c una constante tal que
f (y )
c para todo y
g(Y )
entonces tenemos el siguiente algoritmo para generar una variable con
densidad f .

(IIMAS-UNAM)

Simulacin

19 de agosto de 2014

25 / 38

Nmeros Aleatorios

Mtodos de generacin de nas de distribuciones

Mtodo de aceptacin y Rechazo

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

Mtodos de generacin de nas de distribuciones

Ejemplo: Caso continuo


Se desea generar una v.a. con pdf dada por:
f (x ) = 20x (1 x )3 , 0 < x < 1.

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.

Para determinar la menor constante c que satisface f (x )/g(x ) < c para


todo x (0, 1) calculamos el mximo de
f (x )
= 20x (1 x )3
g(x )
(IIMAS-UNAM)

Simulacin

19 de agosto de 2014

27 / 38

Nmeros Aleatorios

Mtodos de generacin de nas de distribuciones

Ejemplo: Caso continuo


Derivando la expresin anterior e igualando a cero obtenemos que el
mximo se obtiene en x = 1/4. Por lo tanto,
f (x )
1
1
135
= 20( )2 (1 )3 =
c
g(x )
4
4
64
En consecuencia,
f (x )
256
=
x (1 x )3
cg(x )
27
y el algoritmo es
Paso 1. Generamos dos nmeros aleatorios U1 y U2 .
Paso 2. Si U2
al paso 1.
(IIMAS-UNAM)

256
27 U1 (1

U1 )3 entonces X = U1 . Si no, regresamos

Simulacin

19 de agosto de 2014

28 / 38

Nmeros Aleatorios

Mtodos de generacin de nas de distribuciones

Ejercicio 2

Haga un programa que permita generar n variables aleatorias con la


siguiente distribucin: cada variable puede tomar valores 10, 20, 30,
40, 50 con probabilidades respectivas 0.05; 0.1; 0.15; 0.3; 0.4.

Realice una programa en R, para generar n de una distribucin


Gamma con parmetros y

Use el mtodo de rechazo comparando con una distribucin uniforme


para generar variables que tengan una densidad triangular en [1, 1]:
(

f (x ) =

(IIMAS-UNAM)

x 1 para 1 < x 0,
1 x para 0 < x 1.

Simulacin

19 de agosto de 2014

29 / 38

Mtodos Monte Carlo

Contenido

Mtodos Monte Carlo


Introduccin
Integracin Monte Carlo

(IIMAS-UNAM)

Simulacin

19 de agosto de 2014

30 / 38

Mtodos Monte Carlo

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

Mtodos Monte Carlo

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

Mtodos Monte Carlo

Integracin Monte Carlo

Integracin Monte Carlo


Supongamos que queremos calcular I, donde
Z 1

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)]

Ahora, si U1 , . . . , Un son variables independientes con distribucin


uniforme en (0, 1), entonces las variables g(U1 ), . . . , g(Un ) son
independientes e idnticamente distribuidas con media J
(IIMAS-UNAM)

Simulacin

19 de agosto de 2014

33 / 38

Mtodos Monte Carlo

Integracin Monte Carlo

Integracin Monte Carlo

Entonces el mtodo Monte Carlo aproxima a J como


n
1X
J =
g(Ui )
n i=1

donde U1 , . . . , Un iid U(0, 1). Por la Ley de los grandes nmeros,


tenemos que:
a.s.
J J

(IIMAS-UNAM)

Simulacin

19 de agosto de 2014

34 / 38

Mtodos Monte Carlo

Integracin Monte Carlo

Integracin Monte Carlo


Se desea calcular

Z b

J=

g(x ) dx
a

Note que si X U(a, b), entonces


E [g(X )] =

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

donde Xi U(0, 1).


(IIMAS-UNAM)

Simulacin

19 de agosto de 2014

35 / 38

Mtodos Monte Carlo

Integracin Monte Carlo

Ejemplo
Deseamos calcular la siguiente integral
Z 1
0

1
dx
1 + x2

Esta integral se puede calcular analticamente y vale .


Aproximemos la integral via Monte Carlo en R
>
>
>
>

n1 <x1 <g1 <(int1

10
runif(n1)
4/(1+x^2)
<- sum(g1)/n)

(IIMAS-UNAM)

Simulacin

19 de agosto de 2014

36 / 38

Mtodos Monte Carlo

Integracin Monte Carlo

Ejemplo
Deseamos calcular la siguiente integral
Z 1
0

1
dx
1 + x2

Esta integral se puede calcular analticamente y vale .


Aproximemos la integral via Monte Carlo en R
>
>
>
>

n1 <x1 <g1 <(int1

10
runif(n1)
4/(1+x^2)
<- sum(g1)/n)

(IIMAS-UNAM)

Simulacin

19 de agosto de 2014

36 / 38

Mtodos Monte Carlo

Integracin Monte Carlo

Integracin Monte Carlo


En gral., considere el problema de aproximar la integral
Z

J(y ) =

f (y |x )g(x ) dx = Eg [f (y |x )] < +

Si g(x ) es una densidad, entonces por MC, J(y ) es estimada como


n
X
)= 1
J(y
f (y |xi )
n i=1

donde x1 , x2 , . . . , xn iid g(x ). El error estndar Monte Carlo estimado de


) esta dado por
J(y
1

(IIMAS-UNAM)

Pn

)]2
J(y
n1

i=1 [f (y |xi )

Simulacin

19 de agosto de 2014

37 / 38

Mtodos Monte Carlo

Integracin Monte Carlo

Ejercicio 3

Calcule, via Monte Carlo, P(X 3), donde X N(0, 2)

Calcule

g(x )dx
0

para cualquier g usando variables de la distribucion uniforme en (0,1)


3

Encuentre un valor aproximado para la integral


Z 1q

x+

x dx

Calcule tambin el valor estimado de la varianza. (El valor exacto de


esta integral es 1.045301308)

(IIMAS-UNAM)

Simulacin

19 de agosto de 2014

38 / 38

Das könnte Ihnen auch gefallen