Indice general - simulacioncnsf.files.wordpress.com · de evaluar anal ticamente, por lo cual el...

110
´ Indice general 1. Introducci´ on 2 1.1. Generaci´ on de n´ umeros pseudoaleatorios .............. 2 2. Generaci´ on de variables aleatorias 7 2.1. etodo de inversi´ on ......................... 7 2.1.1. Caso Discreto ......................... 7 2.1.2. Caso continuo ......................... 15 2.2. Aceptaci´ on y rechazo ......................... 19 2.3. etodos usando transformaciones .................. 23 2.4. etodo de composici´ on ....................... 26 2.5. ecnicas multivariadas ........................ 32 2.5.1. Caso especiales ........................ 33 2.6. Otros algoritmos ........................... 38 3. Integraci´ on Monte Carlo 40 3.1. El m´ etodo de Monte Carlo ...................... 40 3.2. ecnicas de reducci´ on de varianza ................. 46 3.2.1. Muestro por importancia .................. 50 3.2.2. Variables antit´ eticas ..................... 58 3.2.3. Variables de control ..................... 66 3.2.4. Esperanza condicional .................... 69 3.2.5. Muestro estratificado .................... 75 3.3. Bootstrap ............................... 80 3.3.1. Intervalos de confianza .................... 84 4. Algoritmos MCMC 88 4.1. Algoritmo de Metr´ opolis Hastings .................. 88 4.2. Algoritmo de Gibbs ......................... 95 5. Otros temas 102 5.1. Cadenas de Markov a tiempo discreto ............... 102 5.2. Proceso Poisson ............................ 103 5.3. opulas ................................ 105 1

Transcript of Indice general - simulacioncnsf.files.wordpress.com · de evaluar anal ticamente, por lo cual el...

Indice general

1. Introduccion 21.1. Generacion de numeros pseudoaleatorios . . . . . . . . . . . . . . 2

2. Generacion de variables aleatorias 72.1. Metodo de inversion . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.1.1. Caso Discreto . . . . . . . . . . . . . . . . . . . . . . . . . 72.1.2. Caso continuo . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.2. Aceptacion y rechazo . . . . . . . . . . . . . . . . . . . . . . . . . 192.3. Metodos usando transformaciones . . . . . . . . . . . . . . . . . . 232.4. Metodo de composicion . . . . . . . . . . . . . . . . . . . . . . . 262.5. Tecnicas multivariadas . . . . . . . . . . . . . . . . . . . . . . . . 32

2.5.1. Caso especiales . . . . . . . . . . . . . . . . . . . . . . . . 332.6. Otros algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3. Integracion Monte Carlo 403.1. El metodo de Monte Carlo . . . . . . . . . . . . . . . . . . . . . . 403.2. Tecnicas de reduccion de varianza . . . . . . . . . . . . . . . . . 46

3.2.1. Muestro por importancia . . . . . . . . . . . . . . . . . . 503.2.2. Variables antiteticas . . . . . . . . . . . . . . . . . . . . . 583.2.3. Variables de control . . . . . . . . . . . . . . . . . . . . . 663.2.4. Esperanza condicional . . . . . . . . . . . . . . . . . . . . 693.2.5. Muestro estratificado . . . . . . . . . . . . . . . . . . . . 75

3.3. Bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803.3.1. Intervalos de confianza . . . . . . . . . . . . . . . . . . . . 84

4. Algoritmos MCMC 884.1. Algoritmo de Metropolis Hastings . . . . . . . . . . . . . . . . . . 884.2. Algoritmo de Gibbs . . . . . . . . . . . . . . . . . . . . . . . . . 95

5. Otros temas 1025.1. Cadenas de Markov a tiempo discreto . . . . . . . . . . . . . . . 1025.2. Proceso Poisson . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1035.3. Copulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

1

Capıtulo 1

Introduccion

Una de las necesidades del ser humano es comprender los fenomenos queocurren a nuestro alrededor, los cuales dependen de varios factores. Usualmentese crean modelos, los cuales intentan describir a dichos fenomenos para lograruna mejor comprension de estos. Sin embargo a la hora de generar estos mode-los, puede ser que alguno de los factores que afectan a nuestro fenomeno seandıficil de medir; o bien que a la hora de considerar dichos factores que con-sideremos relevantes, nuestros modelos resulten bastante complejos de evaluaranalıticamente, lo cual reduce su efectividad. No es de esperarse que los eventosaleatorios no esten exentos de esto.Sin embargo debido al gran avance de la tecnologıa este tipo de problemas hanpodido ser superados por medio de metodos de simulacion, los cuales han per-mitido superar los problemas que puede suscitar la eleccion de un modelo dıficilde evaluar analıticamente, por lo cual el proposito de este curso es dar a conocerlos metodos de generacion de variables aleatorias mas utilizados, para ası podereste tipo de problemas.

1.1. Generacion de numeros pseudoaleatorios

Gran parte de los procedimientos de simulacion requieren poder generarvariables aleatorias con distribucion uniforme en (0, 1), lo cual nos genera lasiguientes preguntas : ¿Como puedo generar numeros con dicha distribucion atraves de un algoritmo computacional? ¿El algoritmo que propongo garantizaque mis resultados sean independientes? ¿Como los numeros pueden ser aleato-rios si seran generados con un algoritmo?La respuesta a esta ultima pregunta es obvia, por lo cual nos tendremos queconformar con numeros pseudoaleatorios, es decir, nos quedaremos con numerosque a pesar son generados de manera determinista, tengan un comportamientode variables aleatorias independientes e identicamente distribuidas.Se han propuesto varios metodos para generar estos numeros pseudoaleatorios,siendo los metodos congruenciales unos de los mas aceptados y utilizados actual-

2

CAPITULO 1. INTRODUCCION 3

mente.. Como su nombre lo indica, estos metodos estan basados en el residuoque deja un numero a la hora de dividirlo entre otro.Recordemos que si x, n y m son numeros positivos con n ∈ 0, 1, 2, ...,m − 1,entonces decimos que x ≡ n mod m si al dividir x entre m nos deja comoresiduo a n. Por ejemplo tenemos que 4 ≡ 0 mod 2 y 15 ≡ 1 mod 7.El metodo congruencial multiplicativo consiste en escoger tres numeros enterosM ,a y x0 (semilla) y generar de al siguiente numero a traves de la relacion :

xn+1 ≡ axn modM

El numero pseudoaleatorio con ”distribucionuniforme en (0, 1) estara dado porun = xn/M .Una modificiacion de este algoritmo es el metodo congruencial mixto, simple-mente consiste en escoger una constante adicional b y generar al siguiente nume-ro de la secuencia como :

xn+1 ≡ axn + b modM un = xn/M

Es obvio que en ambos metodos se pueden obtener a lo mas M numeros diferen-tes y en el momento en que genere un numero que ya ha sido incluido, el procesose repetira. A esto se le llama el perıodo del generador, el cual desarıamos quefuera tan grande como sea posible. A continuacion presentamos un codigo en Rpara generar numeros pseudoaleatorios a traves de metodos congruenciales.

x<-NULL

u<-NULL

a<-7^5

M<-(2^31)-1 #perıodo

b<-0

y<-25 #semilla

for (i in 1:2048)

z<-(a*y)+b

x[i]<-z%%M $Calcula residuo

y<-x[i]

u[i]<-x[i]/M

Podemos implementar el codigo anterior tomando los valores de b = 0, a = 10y M = 2048, con valor de la semilla 25, obtenemos la siguiente secuencia denumeros: 250, 452, 424, 144, 1440, 64, 640, 256, 512, 1024, 0, 0. Observemos quea partir del onceavo numero, la secuencia regresa siempre el valor de cero. Estose debe a que a y M tienen divisores comunes.Esto muestra una primera restriccion de valores entre a y M , sin embargo, esano es la unica, pues al unicamente cambiando el valor de a por 65 obtenemos lossiguientes resultados: Podemos observar del histograma que los numeros gene-rados son mucho mejores que con los valores anteriores, sin embargo recordemosque otra propiedad deseable es que no podamos predecir el siguiente valor con

CAPITULO 1. INTRODUCCION 4

Figura 1.1: Histograma a=65 b=0 M=2048

los datos anteriores, sin embargo al realizar un grafico de xi vs xi+1 observa-mos una clara relacion entre ellos: Por su puesto el valor de b tambien afecta el

Figura 1.2: Lagplot a=65 b=0 M=2048

resultado, pues con los mismos valores anteriores, solo que ahora estableciendob = 1 obtenemos lo siguiente: Lo que muestran los ejemplos anteriores, es quetambien los valores de a, b y M deben ser seleccionados adecuadamente, puesde lo contrario podrıamos obtener una secuencia que no cumpla los criterios de’uniformidad’ e ’independencia’ que buscamos.Como se puede observar en los ejemplos anteriores la mala eleccion de losparametros puede ocasionar que el algoritmo se estanque, o bien genere va-riables con una dependencia bastante notoria.Si bien a la fecha se siguen haciendo estudios acerca de como deben ser estosnumeros para garantizar un generador de numeros pseudoaleatorios buenos, seha podido ver que al establecer los valores de M y a como 231 − 1 y 75 respec-tivamente se obtienen buenos resultados.Una manera de corroborar que nuestro generador es bueno es utilizar pruebas

CAPITULO 1. INTRODUCCION 5

Figura 1.3: Histograma a=65 b=1 M=2048

Figura 1.4: Lagplot a=65 b=1 M=2048

Figura 1.5: Histograma a=75 b=0 M=231 − 1

CAPITULO 1. INTRODUCCION 6

Figura 1.6: Lagplot a=75 b=0 M=231 − 1

estadısticas de bondad y ajuste e independencia a los numeros generados. Porejemplo para verificar que los numeros que hemos generado puedan ser consi-derados como observaciones de una variable aleatoria uniforme (0, 1) podemosutilizar pruebas como la ji cuadrada o la prueba de Kolmogorov-Smirnov; mien-tras que para corroborar independencia se pueden utilizar pruebas basadas enrachas o la prueba del poker.

Capıtulo 2

Generacion de variablesaleatorias

2.1. Metodo de inversion

El metodo de inversion establece que sii sabemos generar numeros aleatoriosuniformes, entonces es suficiente encontrar la inversa generalizada de la funcionde distribucion FX , la cual se define como φX(t) = ınfs ∈ R : FX(s) ≥ t,para tener una muestra aleatoria de ella.

2.1.1. Caso Discreto

Antes de demostrar el teorema mas general que involucra a la inversa gene-ralizada F−1

X (t), probaremos un caso particular de este, cuando la variable Xes discreta:

Proposicion 2.1. Sea X una variable aleatoria discreta con funcion de masade probabilidad dada por:

P [X = xj ] = pj j ∈ 0, 1, 2, ...∑j

pj = 1

Entonces si U es una variable aleatoria con distribucion uniforme en (0, 1) y

7

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 8

definimos a Y como:

Y =

x0 si U < p0,

x1 si p0 ≤ U < p0 + p1,

x2 si p0 + p1 ≤ U < p0 + p1 + p2,

.

.

xn si ,n−1∑j=0

pj ≤ U <n∑j=0

pj ,

.

.

Entonces Y tiene la misma distribucion que X.

La demostracion del teorema es muy sencilla, en efecto, al ser U uniformetenemos que:

P [Y = xn] = P

n−1∑j=0

pj ≤ U <

n∑j=0

pj

=

n∑j=0

pj −n−1∑j=0

pj = pn

Ejemplo 2.1.1. Consideremos que X tiene distribucion Bernoulli de parametrop, entonces si U es una variable aleatoria con distribucion uniforme, entonces sidefinimos a Y como 1 si U < p y 0 en otro caso, entonces se tiene que Y tienedistribucion Bernoulli de parametro p.

x<-NULL

p=.6 #Valor de la probabilidad de exito

u<-runif(1000) #Genera uniformes

for (i in 1:1000)

if (u[i]<p) x[i]=1 else x[i]=0 #Hace la comparacion

Ejemplo 2.1.2. Imaginemos que X es una variable aleatoria tal que P [X =−2] = .35, P [X = −1] = .1, P [X = 0] = .3, P [X = 1] = .15 y P [X = 2] = .1,entonces si U es uniforme (0, 1) y definimos a Y como:

i) Y = −2 si U < .35

ii) Y = −1 si .35 ≤ U < .45

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 9

iii) Y = 0 si .45 ≤ U < .75

iv) Y = 1 si .75 ≤ U < .9

v) Y = 2 si .9 ≤ U

Entonces Y tiene la misma distribucion que X.

p<-c(.35,.1,.3,.15,.1) # vector de probabilidades

x<-NULL

u<-runif(10000)

for(i in 1:1000)

j<- -2

r<-p[j+3]

while (u[i]>=r) #Comparativo

j<-j+1

r=r+p[j+3] #Acumulando probabilidades

x[i]=j

Ejemplo 2.1.3. El siguiente ejemplo se basa sobre el tiempo de vida enterorestante para una persona de 60 anos, usando la tabla de mortalidad correspon-diente a experiencia mexicana CNSF 2000-I 91-98 (individual).

x<-NULL

u<-runif(1000)

for(i in 1:1000)

j<-0

p<-tq60[1]

while (u[i]>=p)

j<-j+1

p<-p+tq60[j+1]

x[i]<-j

Los ultimos dos ejemplos nos muestran que no es necesario pertenecer a unafamilia conocida para poder simular de la distribucion.Ahora proseguimos a analizar como funciona este algoritmo para las familiasparametricas mas utilizadas.

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 10

Distribucion Binomial

Como ya se mostro en el ejemplo 2.1.1, simular variables aleatorias Bernoullies relativamente sencillo, por lo cual una posible manera de simular una Binomialde parametros n y p serıa simular n variables Bernoulli y despues sumarlas (puesrecordemos que la distribucion Binomial nos da el numero de exitos en n ensayosBernoulli).Sin embargo tambien es posible generar muestras de esta distribucion utilizandola proposicion 2.1, para esto recordemos que si X ∼ Bin(n, p) entonces:

P [X = j] =n!

j!(n− j)!pj(1− p)n−j j ∈ 0, 1, 2, ..., n

Observemos que para j 6= n podemos escribir la formula anterior en terminosrecursivos como:

P [X = j + 1] =n− jj + 1

p

1− pP [X = j]

Esta formula recursiva, jutno con el hecho de que P [X = 0] = (1− p)n nos aho-rrara muchos calculos a la hora de implementar el algoritmo,el cual se muestraa continuacion:

Algoritmo 2.1.1. Procedimiento para generar variables aleatorias binomiales

i) Generar U ∼ Unif(0, 1)

ii) Sea c = p/(1− p),j = 0, r = (1− p)n y S = r

iii) Si U < S entonces sea Y = j y nos detenemos.

iv) Si no, hacer r = cr(n− j)/(j + 1), S = S + r y j = j + 1

v) Ir al paso 3

Como ejemplo de implementacion, a continuacion presentamos el codigo enR.

x<-NULL

n<-20 #Numero de ensayos

p<-.4 #Probabilidad de exito

c<-p/(1-p)

u<-runif(1000)

for(i in 1:1000)

j<-0 #Inicializa variables

r<-(1-p)^n

S<-r

while (u[i]>=S) #Realiza las comparaciones

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 11

r<-c*r*(n-j)/(j+1)

S<-S+r

j<-j+1

x[i]<-j

Distribucion Binomial Negativa

Al igual que en el caso anterior, una posible manera de simular variablesaleatorias con distribucion Binomial Negativa de parametros (n, p) serıa simu-lar aleatorias Bernoulli de parametro hasta obtener n unos, y posteriormentecontar el numero de ceros obtenidos. Observemos que para este procedimiento,unicamente estamos usando la interpretacion de una variable Binomial negativa,como el numero de fracasos antes del n-esimo exito.Sin embargo, tambien es posible generar muestras de esta distribucion utilizan-do la misma idea de recurrencia que se utilizo en el caso Binomial, ya que siX ∼ BinNeg(n, p) entonces:

P [X = j] =(n+ j − 1)!

j!(n− 1)!pn(1− p)j j ∈ 0, 1, 2, ...

Observemos que P [X = 0] = pny tambien notemos que podemos escribir P [X =j + 1] en terminos de P [X = j]:

P [X = j + 1] =(n+ j)(1− p)

j + 1P [X = j]

Con esto obtenemos el siguiente algoritmo:

Algoritmo 2.1.2. Procedimiento para generar variables aleatorias binomialesnegativas

i) Generar U ∼ Unif(0, 1)

ii) Sea j = 0, r = pn y S = r

iii) Si U < S entonces sea Y = j y nos detenemos.

iv) Si no, hacer r = r(n+ j)(1− p)/(j + 1), S = S + r y j = j + 1

v) Ir al paso 3

A continuacion presentamos su implementacion en R:

x<-NULL

n<-10 #Numero de exitos

p<-.35 #Probabilidad de exito

u<-runif(1000)

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 12

for(i in 1:1000)

j<-0 #Inicializa variables

r<-p^n

S<-r

while (u[i]>=S) #Realiza los comparativos

r<-r*(1-p)*(n+j)/(j+1)

S<-S+r

j<-j+1

x[i]<-j

Para el caso de la distribucion geometrica tenemos una manera mas eficiente degenerarla, pues para j ∈ 0, 1, 2, ... se tiene que:

P [X ≤ j − 1] =

j−1∑k=0

p(1− p)k = 1− (1− p)j

Por lo tanto la proposicion 2.1 establece que debemos realizar las siguientescomparaciones con respecto a una variable aleatoria uniforme:

1− (1− p)j ≤ U < 1− (1− p)j+1

Lo cual es equivalente a decir que:

(1− p)j+1 < 1− U ≤ (1− p)j

Puesto que U tiene la misma distribucion que 1−U , la expresion anterior es lomismo que:

(1− p)j+1 < U <≤ (1− p)j

Es decir Y debe ser igual a :

mınj|(1− p)j+1 < U

Que es equivalente a:

Y = mınj|j > ln(U)

ln(1− p)− 1

Esta ultima expresion la podemos rescribir como:

Y = b ln(U)

ln(1− p)c

Quedando nuestro algoritmo como:

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 13

Algoritmo 2.1.3. Procedimiento para generar variables aleatorias con distri-bucion uniforme discreta

i) Generar U ∼ Unif(0, 1).

ii) Regresar el valor de bln(U)/ln(1− p)c.

A continuacion se presenta un ejemplo en R de este algoritmo:

x<-NULL

p=.7 #Probabilidad de exito

u<-runif(1000)

for(i in 1:1000)

x[i]<-floor(log(u[i])/log(1-p))

Distribucion Poisson

Nuevamente recordamos que si X ∼ Poisson(λ) entonces:

P [X = j] =e−λλj

j!j ∈ 0, 1, 2, ...,

Para la cual nuevamente podemos desarrollar una formula recursiva.

P [X = j + 1] =λ

j + 1P [X = j]

Y nuevamente haciendo la observacion que P [X = 0] = e−λ obtenemos elsiguiente algoritmo:

Algoritmo 2.1.4. Procedimiento para generar variables aleatorias Poisson

i) Generar U ∼ Unif(0, 1)

ii) Sea j = 0, r = e−λ y S = r

iii) Si U < S entonces sea Y = j y nos detenemos.

iv) Si no, hacer r = λr/(j + 1),S = S + r y j = j + 1.

v) Ir al paso 3

La implementacion en R serıa la siguiente:

x<-NULL

l<-5 #Valor de la media, "lambda"

u<-runif(10000)

for(i in 1:10000)

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 14

j<-0 #Inicializa variables

r<-exp(-l)

S<-r

while (u[i]>=S) #Realiza comparativos

r<-l*r/(j+1)

S<-S+r

j<-j+1

x[i]<-j

Por supuesto este no es la unica manera de simular variables aleatorias Poisson,tambien es posible simularlas a traves de variables exponenciales, a la hora degenerar un proceso Poisson, sin embargo esto lo veremos mas adelante.

Distribucion Uniforme discreta y generacion de arreglos aleatorios

Supongamos que queremos generar una observacion de X la cual tiene distri-bucion uniforme en el conjunto 1, 2, ..., n. En virtud de la proposicion 2.1 tene-mos que al tomar U ∼ Unif(0, 1) definiriamos a Y como j para j ∈ 1, 2, ..., nsi sucede que (j − 1)/n ≤ U < j/n. Observemos que esto ultimo es equivalentea decir que (j − 1) ≤ nU < j, es decir la parte entera de nU es j − 1. Porlo tanto tenemos el siguiente procedimiento simplificado para generar variablescon distribucion uniforme discreta:

Algoritmo 2.1.5. Procedimiento para generar variables aleatorias con distri-bucion uniforme discreta

i) Generar U ∼ Unif(0, 1)

ii) Regresar el valor de bnUc+ 1

A continuacion se presenta el codigo en R:

x<-NULL

n=6 #Tama~no del soporte

u<-runif(1000)

for(i in 1:1000)

x[i]<-floor(n*u[i])+1

Una aplicacion adicional de la simulacion de variables con distribucion uni-forme discreta es que nos permite permutacion aleatoria de tamano m paraun determinado conjunto. Por ejemplo supongamos que nuestro conjunto es1, 2, ..., n, podemos generar un numero aleatorio en 1, ...n y posteriormente

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 15

colocar ese numero en la n-esima posicion, posteriormente escogemos un numeroen 1, ...n− 1 y dicho numero lo colocamos en la posicion n−1 y ası sucesivamentehasta llegar a la posicion n−m+ 1.

Algoritmo 2.1.6. Procedimiento para generar una permutacion aleatoria

i) Generar una biyeccion entre nuestro conjunto y 1, 2, ..., n, la cual deno-taremos por P1, P2, ..Pn.

ii) Sea r = n.

iii) Generar U ∼ Unif(0, 1) y hacer j = int(rU) + 1.

iv) Intercambiar los valores de Pj y Pr.

v) Si r > n−m hacer r = r − 1 e ir al paso 3, si no detenerse.

El codigo en R serıa el siguiente:

x<-NULL

n<-20

for( i in 1:20) #genera vector de valores

x[i]<-i

m=10 #tama~no permuta

r=20

while(r>n-m)

u<-runif(1)

j<-floor(r*u)+1 #Genera uniformes

aux<-x[r] #Intercambia valores

x[r]<-x[j]

x[j]<-aux

r=r-1

y<-NULL #Permuta generada

for( i in 1:m)

y[i]<-x[i+n-m]

2.1.2. Caso continuo

Una vez ilustrado un caso particular de la inversa generaliza, proseguimoscon la demostracion del resultado mas general:

Teorema 2.1. Sea X una variable aleatoria con funcion de distribucion FX ,y U una variable aleatoria con distribucion uniforme en el intervalo (0, 1) ydefinamos la funcion φX : (0, 1) −→ R como φX(t) = ınfs ∈ R : FX(s) ≥ t,entonces la funcion de distribucion de la variable aleatoria φX(U) es FX .

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 16

Dem. Primero veamos que φX(t) es una funcion no decreciente, en efectoobservemos que si t1 < t2, entonces se cumple la siguiente contencion:

s ∈ R : FX(s) ≥ t2 ⊆ s ∈ R : FX(s) ≥ t1

De donde obtenemos que φX(t1) ≤ φX(t2). Ahora proseguimos a verificar queφX(t) satisface que FX (φX(t)), en efecto, si x ∈ s ∈ R : FX(s) ≥ t entoncesFX(x) ≥ t, puesto que FX es continua por la derecha, haciendo x decrecer aφX(t) obtenemos el resultado.Finalmente con esto veremos que si U ∼ Unif(0, 1) los eventos φX(U) ≤ t yU ≤ FX(t) son equivalentes, para esto observemos que si φU (t) ≤ t entonces:

U ≤ FX (φX(U)) ≤ FX(t)

Ahora bien si sucede que U ≤ FX(t), entonces

φX(U) = ınfs ∈ R : FX(s) ≥ U ≤ t

Por lo tanto, se tiene:

P [φX(U) ≤ t] = P [U ≤ FX(t)] = U ≤ FX(t)

De donde se sigue que X y φX(U) tienen la misma distribucion.

2

Esto ultimo establece que si φX es facil de calcular , entonces basta evaluar estafuncion en U , para obtener una muestra con la misma distribucion de X.

Ejemplo 2.1.4. Consideremos queX tiene distribucion exponencial de parame-tro λ, entonces su funcion de distribucion esta dada por:

FX(x) =

1− e−λx si x ≥ 0

0 en otro caso.

Entonces si hacemos u = 1−e−λx entonces x = −ln(1−u)/λ; por lo cual nuestroalgoritmo anterior establece que si U ∼ Unif(0, 1), entonces −ln(1−U)/λ tienedistribucion exponencial de parametro λ, ahora teniendo en consideracion quesi U ∼ Unif(0, 1) entonces 1− U tambien tiene distribucion uniforme en (0, 1)obtenemos el siguiente algoritmo para generar variables aleatorias exponenciales:

Algoritmo 2.1.7. Procedimiento para generar variables exponenciales

i) Generar U ∼ Unif(0, 1).

ii) Regresar el valor de −ln(U)/λ.

En R el codigo serıa el siguiente:

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 17

x<-NULL

u<-runif(1000)

l=1/10 #Valor de lambda

for(i in 1:1000)

x[i]<--log(u[i])/l

Ejemplo 2.1.5. Consideremos que X tiene distribucion estandar,en cuyo casola funcion de densidad de X esta dada por:

fX(x) =1

π (1 + x2)x ∈ R

Con esta densidad proseguimos a calcular la funcion de distribucion de X:

FX(x) =

∫ x

−∞

1

π (1 + t2)dt =

1

2+arctan(x)

π

Con esto proseguimos a calcular φX :

u =1

2+arctan(x)

π−→ x = tan (π(u− .5))

Por lo cual aplicando el procedimiento de la transformacion inversa obtenemosel siguiente resultado:

Algoritmo 2.1.8. Procedimiento para generar variables Cauchy

i) Generar U ∼ Unif(0, 1).

ii) Regresar el valor de tan (π(U − .5)).

El codigo en R es el siguiente:

x<-NULL

u<-runif(10000)

for(i in 1:10000)

x[i]=tan(pi*u[i]-.5*pi)

Ejemplo 2.1.6. Sea X una variable aleatoria cuya funcion de densidad esta da-da por:

fX(x) =

2

a

(1− x

a

)si 0 ≤ x ≤ a

0 en otro caso.

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 18

En donde a es un numero mayor a cero. Para poder aplicar el metodo de inver-sion, necesitamos calcular la funcion de distribucion de X. Para esto observemosque si x ∈ [0, a] se tiene que:

FX(x) =

∫ x

0

2

a

(1− t

a

)dt =

2x

a

(1− x

2a

)Por lo tanto nuestra funcion de distribucion serıa:

FX(x) =

0 si x < 0

2x

a

(1− x

2a

)si 0 < x ≤ a

1 si. x ≥ a

Ahora proseguimos a calcular F−1X , para esto establecemos la siguiente igualdad:

u =2x

a

(1− x

2a

)Lo cual nos lleva a la ecuacion cuadratica:

x2 − 2ax+ a2u = 0

La cual tiene como soluciones a:

x =2a±

√4a2 − 4ua2

2= a

(1±√

1− u)

La raız dada por el signo positivo la descartamos, pues necesitamos que x per-tenezca al intervalo [0, a]. Con esto tenemos el siguiente algoritmo:

i) Generar U ∼ Unif(0, 1).

ii) Regresar el valor de a(

1−√U)

.

A continuacion se presenta la implementacion en R:

x<-NULL

u<-runif(1000)

a<-5 #Valor de a

for(i in 1:1000)

x[i]=a*(1-sqrt(u[i]))

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 19

2.2. Aceptacion y rechazo

El resultado de la inversa generalizada, aunque siempre cierto, no siemprees eficiente como generador de variables aleatorias de una distribucion, puespuede llegar a ser dıficil entrar una forma explıcita para φX , como ya se mostro,por lo cual requerimos de otros metodos para generar variables cuya funcion dedistribucion sea difıcil de invertir.El primer metodo que trataremos es el de aceptacion y rechazo cuya metodologiaes la siguiente: supongamos que generar X con funcion de densidad f , la cuales difıcil de simular, sin embargo sabemos que existe una variable aleatoria Ycon funcion de densidad g, la cual es facil de simular y ademas se satisface queexiste una constante M tal que:

f(x)

g(x)≤M ∀x ∈ R

Entonces el algoritmo de aceptacion y rechazo nos da el siguiente procedimientopara generar variables aleatorias con funcion de densidad f :

Algoritmo 2.2.1. Algoritmo de aceptacion y rechazo

i) Generar Y con funcion de densidad g.

ii) Generar U ∼ Unif(0, 1), independiente de Y .

iii) Si U ≤ f(Y )/Mg(Y ) hacer X = Y , si no ir al paso i.

Proseguiremos a verificar que el algoritmo anterior nos genera variables conla distribucion deseada.

Proposicion 2.2. El procedimiento dado en el algoritmo 2.2.1 nos genera va-riables cuya funcion de densidad es f .

Dem. Necesitamos probar que la densidad condicional de Y dado que seacepto el valor es f , para esto observemos que la densidad conjunta de U y Ysimplemente es g. Entonces, por el teorema de Bayes tenemos lo siguiente:

g(y|U ≤ f(y)/Mg(y)) =P [U ≤ f(y)/Mg(y)|y]g(y)

P [U ≤ f(Y )/Mg(Y )]

Ahora bien condicionando el denominador sobre Y obtenemos que esta ultimaexpresion es igual a:

f(y)/M∫P [U ≤ f(y)/Mg(y)|Y = y]g(y)dy

=f(y)/M∫f(y)dy

= f(y)

Por lo tanto la distribucion condicional de Y dado que se acepta el valor es lamisma que la de X.

2

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 20

Ahora notemos que la probabilidad de aceptar esta dada por:

P [U ≤ f(Y )/Mg(Y )] =

∫P [U ≤ f(Y )/Mg(Y )|Y = y]g(y)dy =

∫f(y)/Mg(y)g(y)dy = 1/M

Por lo tanto entre mas chica sea M mas grande sera nuestra probabilidad deaceptar, por lo que es deseable tomar esta constante lo mas cercana a uno comosea posible.A continuacion presentamos unos ejemplos en donde se aplica este algoritmo:

Ejemplo 2.2.1. Supongamos que queremos generar una variable aleatoria confuncion de densidad dada por:

f(x) = 6x(1− x) x ∈ (0, 1)

Generaremos muestras de esta distribucion usando el algoritmo de aceptacion yrechazo, en donde nuestra variable Y facil de simular sera una uniforme (0, 1).Entonces es claro que el cociente de f(x)/g(x) = 6x(1−x), entonces la derivadade este cociente es 6−12x de donde es inmediato que se obtiene que en x = 1/2 setiene un maximo, de donde se sigue que 6x(1−x) ≤ 6(1/2)(1−1/2) = 3/2 = M .Entonces nuestro algoritmo quedarıa ası:

i) Generar Y con distribucion Uniforme (0, 1).

ii) Generar U ∼ Unif(0, 1)

iii) Si U ≤ 4Y (1− Y ) hacer X = Y , si no ir al paso i.

La implementacion en R serıa la siguiente:

x<-NULL #Vector observaciones

k<-NULL #Vector conteo iteraciones

for(i in 1:1000)

k[i]<-1 #Inicializa contador

u<-runif(1)

y<-runif(1)

while (4*y*(1-y)<u) #revisa condicion

k[i]<-k[i]+1 #Incrementa contador

u<-runif(1) #Vuelve a generar las variables

y<-runif(1)

x[i]<-y

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 21

Ejemplo 2.2.2. Supongamos que queremos generar una variable aleatoria confuncion de densidad dada por:

f(x) = 4x− 3x2 x ∈ (0, 1)

Nuevamente consideraremos como distribucion facil de simular a la Uniforme(0, 1). Observemos que la derivada del cociente de las funciones de densidad eses 4 − 6x de donde obtenemos que en x = 2/3 se alcanza el maximo gobla, dedonde se sigue que 4x − 3x2 ≤ 4(2/3) − 3(2/3)2 = 4/3 = M . Entonces nuestroalgoritmo quedarıa ası:

i) Generar Y con distribucion Uniforme (0, 1).

ii) Generar U ∼ Unif(0, 1)

iii) Si U ≤ (4X − 3X2)/(4/3) hacer X = Y , si no ir al paso i.

A continuacion presentamos la implementacion en R:

x<-NULL #Vector de observaciones

k<-NULL #Vector de conteo de iteraciones

for(i in 1:1000)

k[i]<-1

u<-runif(1)

y<-runif(1)

while ((4*y-3*y^2)/(4/3)<u) #Realiza comparativo

k[i]<-k[i]+1 #Incrementa contador

u<-runif(1) #Repite el proceso

y<-runif(1)

x[i]<-y

Ejemplo 2.2.3. Ahora proseguimos a generar variables normales estandar, uti-lizando una variables exponenciales. Sin embargo, como el soporte de estas dis-tribuciones no es el mismo, primero generaremos observaciones del valor abso-luto de una normal estandar. Para esto observemos que si X ∼ N(0, 1) entoncespara x > 0

P [|X| ≤ x] = P [−x ≤ X ≤ x] = FX(x)− FX(−x)

De donde obtenemos que:

f|X|(x) =

√2

πe−x

2/2

Denotaremos a f|X| simplemente por f . Ahora bien al ser Y ∼ exp(1) tenemosque:

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 22

f/g =

√2

πex−x

2/2

Debido a la monotonıa del logaritmo, es equivalente maximizar este valor sulogaritmo:

ln(f/g) = ln

(√2

π

)+ x− x2/2

Siendo la derivada de esta ultima ecuacion 1− x, por lo tanto en x = 1 se tieneun maximo, con lo que nuestra cota estarıa dada por:

f/g ≤√

2

πe1−12/2 =

√2e

π

Ahora para simplificar los calculos, notemos lo siguiente:

f/Mg =

√2

πex−x

2/2√2e

π

= e−(x−1)2/2

Sin embargo, no hemos concluido el algoritmo, pues con lo que hemos hecho ,construimos un metodo de simular el valor absoluto de una variable aleatorianormal, sin embargo, dado que la probabilidad de que una normal estandartiene la misma probabilidad de tomar valores negativos que positivos, podemosmultiplicar por −1 o por 1 de manera equiprobable para obtener el resultadodeseado.Nuestro algoritmo serıa el siguiente:

Algoritmo 2.2.2. Metodo para generar variables con distribucion Normalestandar vıa aceptacion y rechazo.

i) Generar Y con distribucion Exponencial 1.

ii) Generar U ∼ Unif(0, 1)

iii) Si U ≤ e−(Y−1)2/2 hacer X = Y , si no ir al paso i.

iv) Generar V ∼ Unif(0, 1), si V < .5 hacer X = −X, si no dejarla igual.

El codigo en R es el siguiente:

x<-NULL #Vector de observaciones

k<-NULL #Contador de iteraciones

for(i in 1:1000)

k[i]<-1

u<-runif(1)

y<-rexp(1,1)

while (exp(-((y-1)^2)/2)<u) #comparativo

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 23

k[i]<-k[i]+1 #aumenta contador

u<-runif(1) #vuelve a empezar

y<-rexp(1,1)

v<-runif(1) #Determina signo de la normal

if (v<1/2)

y<- -1*y

x[i]<-y

Es importante mencionar que esta no es la manera mas eficiente de generarvariables aleatorias normales, por lo que en la siguiente seccion discutiremosotro metodo mas efectivo.

2.3. Metodos usando transformaciones

Muchas veces ciertas la distribucion de una variable aleatoria puede ser ex-presada en terminos de otras mas sencillas de simular. Por lo cual para ”bas-ta”generar observaciones de la (s) densidad(es) facil de simular, para posterior-mente aplicar una transformacion que nos de como resultado la distribucion quequeremos simular.

Ejemplo 2.3.1. Supongamos que queremos obtener muestras de la distribuciongama de parametros n y λ, en donde n es un numero natural. Un resultado facilde demostrar es el siguiente: si X1, X2, ..., Xn son variables independientes condistribucion comun exponencial de parametro λ entonces X1 + X2 + ... + Xn

tiene distribucion gama con los parametros deseados. Por lo tanto lo unicoque necesitamos hacer es simular n variables exponenciales de parametro λy posteriormente sumarlas. Juntando esto, con el ejemplo 2.1.4 y aplicandopropiedades del logaritmo obtenemos el siguiente algoritmo:

i) Generar U1, U2, ..., Un con distribucion Uniforme (0, 1) y de manera inde-pendiente.

ii) Regresar Y = −ln(U1U2...Un)/λ.

A continuacion presentamos el codigo en R:

x<-NULL

l=10 #valor de lambda

for(i in 1:1000)

u<-runif(20) #valor de alpha

z<-1

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 24

for (j in 1:20)

z<-z*u[j] #multiplicamos uniformes

x[i]<--log(z)/l

Ejemplo 2.3.2. El siguiente ejemplo muestra una manera alternativa de si-mular variables aleatorias normales a traves de transformaciones. Sean U y Vdos variables aleatorias independientes, tal que U tiene distribucion uniforme en(0, 2 pi) , mientras que V es una variable exponencial de parametro 1. Entonceslas variables X =

√2V cos(U) y Y =

√2V sen(U) son variables aleatorias inde-

pendientes ambas con distribucion normal estandar. En efecto observemos queU = arctan(Y/X) y V = (X2 + Y 2)/2 de donde se obtiene que el jacobiano dela transformacion es uno, de donde al aplicar el teorema de cambio de variableobtenemos:

fX,Y (x, y) = fU,V (u−1(x, y), v−1(x, y))|J | = e−x2/2e−y

2/2

Por lo tanto una manera alternativa de simular variables aleatorias con distri-bucion normal estandar, a la propuesta en el ejemplo 2.2.3 serıa la siguiente:

Algoritmo 2.3.1. Algoritmo de Box Muller

i) Generar U y V con distribucion Uniforme (0, 1) y de manera independien-te.

ii) Regresar X =√−2ln(V )cos(2πU) y Y =

√−2ln(V )sen(2πU)

El codigo en R es el siguiente:

x<-NULL

u<-runif(1000)

for(i in 1:500) #Cortamos los pasos a la mitad

x[2*i-1]<-sqrt(-2*log(u[2*i-1]))*cos(2*pi*u[2*i]) #Generamos transformacion

x[2*i]<-sqrt(-2*log(u[2*i-1]))*sin(2*pi*u[2*i])

Ejemplo 2.3.3. El siguiente ejemplo tiene como objetivo ver a una anualidadcontingente como funcion del tiempo de vida entero restante para una personade x anos.Suponiendo que se paga un monto M a inicio de cada ano, siempre y cuandoel asegurado este con vida, el valor presente del monto que tiene pagara laaseguradora estarıa dado por:

B = M ∗ a ¯K(x)+1|

Donde an| representa una anualidad financiera anticipada temporal a n anos.

Observemos que esto lo podemos pensar aplicarle a la variable aleatoria K(x) la

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 25

funcion f(n) = an|. Se puede demostrar que la esperanza de B es la anualidadcontingente, es decir:

E[B] = M ∗∞∑t=0

vttpx = M ∗ ax

La implementacion del codigo en R es la siguiente:

x<-NULL

u<-runif(5000)

v<-1/(1.05) #Valor presente

for(i in 1:5000)

#Simula K(65) y lo almacena en j

j<-0

p<-tq65[1]

while (u[i]>=p)

j=j+1

p=p+tq65[j+1]

x[i]<-0

for( k in 0:j) #Genera el valor de la anualidad

x[i]<-x[i]+v^k

Ejemplo 2.3.4. Finalmente consideraremos un modelo sencillo de un contratode Working Cover, bajo modalidad de riesgo por riesgo. Para el siguiente ejem-plo se supuso que los riesgos siguen una distribucion lognormal. Este ejemplomuestra como podemos considerar tambien mınimos y maximos para generarnuevas distribuciones.

M<-4000 #Inicio participacion reaseguradora

LA<-10000 #Lımite agregado

WC<-NULL

Exc<-NULL

for(i in 1:5000)

y<-rnorm(1000,5,1)

y<-exp(y) #Genera lognormales

S<-0 # Acumula monto para reaseguradora

for(j in 1:1000)

S=S+max(0,y[j]-M)

WC[i]=min(S,LA) #Verifica si se paso el LA

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 26

Exc[i]<-max(0,S-LA) #Calcula la parte no cubierta

2.4. Metodo de composicion

El siguiente metodo se basa en el hecho de que nuestra funcion de densidadf puede ser escrita como:

f(x) =

n∑j=1

pjfj(x)

En donde se cumple que fj es una funcion de densidad ∀j ∈ 1, 2, ..., n, yademas:

n∑j=1

pj = 1, pj > 0 ∀j ∈ 1, 2, ..., n

Esto es podemos descomponer a f como una mezcla de distribuciones. Entoncespara obtener observaciones de la densidad f unicamente simulamos una variablediscreta N con soporte en 1, 2, ..., n tal que P [N = j] = pj y posteriormente,una vez observado el valor de N = j simulamos una observacion de la densidadfj .

Ejemplo 2.4.1. Supongamos que queremos obtener observaciones de una mez-cla de 3 normales, esto es queremos simular algo de la forma:

n∑j=1

pjN(µj , σ2j )

Aplicando el algoritmo general obtenemos lo siguiente:

Algoritmo 2.4.1. Algoritmo para mezclas de normales.

i) Generar una variable aleatoria discreta N tal que P [N = j] = pj .

ii) Si N = j generar una variable aleatoria normal de parametros µj y σ2j

A continuacion presentamos un modelo de mezcla de 3 normales en R:

p<-c(.3,.4,.3) #Vector probabilidades

x<-NULL

u<-runif(10000)

for(i in 1:10000) #Simula discretas

j<- 1

r<-p[j]

while (u[i]>=r)

j<-j+1

r=r+p[j]

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 27

if (j==1) #Ve cual caso debemos simular

x[i]<-rnorm(1,-7,1)

else if (j==2 )

x[i]<-rnorm(1,0,1)

else if (j==3)

x[i]<-rnorm(1,7,1)

Ejemplo 2.4.2. En el siguiente ejemplo construiremos una suma aleatoria, estoes simularemos una variable de la forma:

Y =

N∑j=1

Xj (2.1)

En donde N es una variable aleatoria discreta con soporte en 0, 1, 2, ..., n yes independiente de los sumandos. Una manera para simular observaciones deesta variable, es simplemente generar un valor de N , y con este valor simular elnumero de X ′s que se requieran, para postereriormente sumarlas.

Algoritmo 2.4.2. Algoritmo para sumas aleatorias.

i) Generar una observacion de la variable aleatoria discreta N .

ii) Si N = n generar n variables Xn y posteriormente sumarlas.

A continuacion se presenta un caso muy particular en donde N tiene distri-bucion Poisson y las Xj son variables aleatorias independientes con distribucioncomun exponencial.

x<-NULL

n<-rpois(1000,4) #Genera numero de sumandos

for(i in 1:1000)

if(n[i]==0) #Regresa cero si no hay sumandos

x[i]=0

else

x[i]<-rgamma(1,n[i],1/100) #suma exponenciales de acuerdo a n

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 28

Ejemplo 2.4.3. Podemos utilizar tambien las mezclas en conjunto con otrosmetodos, como puede ser el de aceptacion y rechazo. En el ejemplo 2.3.1 si-mulamos un caso muy particular de la distribucion gama: cuando el valor delparametro α es entero. Ahora proseguimos a tratar el caso cuando alpha < 1y λ = 1. Observemos que para x ∈ (0, 1), el termino que tiene mayor peso co-rresponde a xα−1, mientras que para x ≥ 1, ambos terminos de la funcion dedensidad tienden a cero. Por lo cual se propone una funcion para hacer acepta-cion y rechazo de la forma:

g(x) = cxα−1I(0,1) + ce−xI[1,∞)

Es facil verificar el valor de c es αe/(α + e). Observemos que la funcion dedistribucion de una variable aleatoria, cuya funcion de densidad es g esta dadapor:

G(x) =

∫ x

0

α+ etα−1dt =

exα

α+ esi x < 1,∫ 1

0

α+ etα−1dt+

∫ x1

α+ ee−tdt = 1− eα

α+ ee−x x ≥ 1.

Observemos que G puede invertirse de manera sencilla, obteniendo lo siguiente:

G−1(u) =

(

(α+ e)u

e

)1/α

si u <e

α+ e,

−ln(

(1− u) ∗ α+ e

αe

)u ≥ e

α+ e.

Ahora observemos que e−x < 1 y cuando x > 1 se tiene que xα−1 < 1. Con estonotemos entonces que para cualquier x > 0 se cumple que:

f(x)/g(x) ≤ α+ e

αeΓ(α)

De donde obtenemos el siguiente metodo para generar variables aleatorias gamacon parametro α < 1.

x<-NULL

alpha<-.4

e<-exp(1)

for (i in 1:10000)

v<-runif(1)

if(v<e/(alpha+e)) #Comparativo para saber que operacion usar

y<-((alpha+e)*v/e)^(1/alpha)

else

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 29

y<--log((1-v)*(alpha+e)/(alpha*e))

u<-runif(1)

while( (y<1 && u>exp(-y))||(y>=1 && u>y^(alpha-1))) #Condicion de rechazo

v<-runif(1)

if(v<e/(alpha+e))

y<-((alpha+e)*v/e)^(1/alpha)

else

y<--log((1-v)*(alpha+e)/(alpha*e))

u<-runif(1)

x[i]<-y

Observemos que lo anterior nos permite generar variables gama de cualquierparametro, pues para un valor α arbitrario, pues a este lo podemos descomponeren su parte entera y su parte fraccionaria, estos casos ya caen en los casos quehemos tratado, por lo cual simplemente los sumamos, pues suma de variablesaleatorias independientres con distribucion gama y el mismo parametro λ esnuevamente una variable aleatoria gama.

Ejemplo 2.4.4. A continuacion retomamos el ejemplo 2.3.3 con una ligera mo-dificacion: supondremos que la tasa de interes es tambien una variable aleatoriadiscreta, es decir supondremos que existen escenarios sobre la tasa de interes.Entonces observemos que la unica modificacion que se debe hacer al ejemplo2.3.3 es que se debe simular primero la tasa de interes, para posteriormentecalcular la anualidad.

esc<-c(.15,.3,.25,.2,.1) #vector probabilidades escenario

x<-NULL

u<-runif(5000)

v<-runif(5000)

for(i in 1:5000)

j<- 1 #genera escenario interes

r<-esc[j]

while (v[i]>=r)

j<-j+1

r=r+esc[j]

if (j==1)

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 30

vp<-1/(1.035)

else if (j==2 )

vp<-1/(1.045)

else if (j==3)

vp<-1/(1.050)

else if (j==4)

vp<-1/(1.055)

else if (j==5)

vp<-1/(1.065)

j<-0 #simula K(65)

p<-tq65[1]

while (u[i]>=p)

j=j+1

p=p+tq65[j+1]

x[i]<-0

for( k in 0:j) #anualidad

x[i]<-x[i]+(vp)^k

En estos ultimos ejemplos, se trato el caso cuando la mezcla provenia de unavariable discreta, sin embargo tambien es posible que la mezcla provenga de unavariable absolutamente continua Θ, es decir, nuestra densidad puede ser escritacomo:

f(x) =

∞∫−∞

f(x|θ)g(θ)dθ

Para generar observaciones de este tipo de variable, lo unico que se debe haceres generarar una observacion de Θ y posteriormente generar una observacionde la variable X dado Θ.Notese que lo unico que se esta haciendo es escribir la

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 31

densidad conjunta de X y Θ como el producto de la densidad marginal de Θpor la densidad condicional de X dado Θ.

Ejemplo 2.4.5. Consideremos el modelo Poisson-Gama, esto es X es una va-riable aleatoria Poisson de parametro Λ, y a su vez Λ es una variable aleatoriacon distribucion gama de parametros α y λ. Entonces en base al metodo generalantes expuesto, para obtener muestras de X debemos hacer lo siguiente:

Algoritmo 2.4.3. Modelo Poisson-Gama.

i) Generar Λ con distribucion gama gama de parametros α y λ.

ii) Generar X con distribucion Poisson de parametro Λ.

El codigo en R es el siguiente:

x<-NULL

L<-rgamma(10000,3,2) #Genera valores de lambda

for(i in 1:10000)

x[i]<-rpois(1,L[i]) #Genera una Poisson dado el valor de lambda

Ejemplo 2.4.6. Nuevamente haremos una modificacion al ejemplo 2.3.3 ahoraconsiderando que el interes es una variable aleatoria continua.Otra vez lo unicoque cambia es que ahora debemos simular i en base a un modelo continuo, paraposteriormente hacer el calculo de la anualidad.

x<-NULL

u<-runif(5000)

v<-rnorm(5000,.05,.01) #Genera tasas de interes

v<-1/(1+v)

for(i in 1:5000)

j<-0 #Simula k(65)

p<-tq65[1]

while (u[i]>=p)

j=j+1

p=p+tq65[j+1]

x[i]<-0

for( k in 0:j) #Calcula anualidad

x[i]<-x[i]+v[i]^k

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 32

2.5. Tecnicas multivariadas

A continuacion presentamos unos metodos para generacion de vectores alea-torios. Para esto recordemos la siguiente forma de escribir una funcion de den-sidad conjunta:

f(x1, x2, ..., xn) = f(x1)f(x2|x1)f(x3|x1, x2)...f(xn|x1, x2, ...xn−1) (2.2)

La descomposicion anterior sugiere obtener una observacion de la primera va-riable, posteriormente obtener una muestra de la densidad condicional de lasegunda variable dada la primer variable, y ası sucesivamente hasta obteneruna observacion de la ultima variable dada todas las anteriores.

Ejemplo 2.5.1. Supongamos que tenemos dos variables cuya funcion de den-sidad conjunta esta dada por:

f(x, y) =

6x si 0 < x < y < 1,

0 en otro caso

(2.3)

Observemos que la funcion marginal para Y esta dada por f(y) = 3y2 pa-ra valores de y dentro del intervalo (0, 1). Generar muestras de esta variablealeatoria es sencillo pues observamos que su funcion de distribucion esta dadapor F (y) = y3, de donde obtenemos que la inversa es y = u(1/3). Ahora biennotemos que:

f(x|y) =6x

3y2=

2x

y20 < x < y < 1 (2.4)

Nuevamente vemos que F (x|y) = x2/y2 para valores de x que se encuentranentre 0 y y. Nuevamente vemos que esta funcion es facilmente invertible, pues lainversa simplemente es x = y

√u. Por lo cual el algoritmo para generar muestras

de este vector aleatorio es el siguiente:

i) Generar una U y V dos variables independientes con distribucion comunUnif(0, 1).

ii) Hacer Y = U1/3 y X = Y ∗√U .

El codigo en R es el siguiente:

u<-runif(1000)

v<-runif(1000)

y<-u^(1/3)

x<-y*v^(1/2)

Ejemplo 2.5.2. Ahora consideramos que X y Y tienen distribucion conjuntnormal bivariada,esto es su funcion de densidad conjunta esta dada por:

exp− 1

2(1− ρ2)

[(x− µxσx

)2

+

(y − µyσy

)2

− 2ρ(x− µx)(y − µy)

σxσy

]

2π√σ2xσ

2y(1− ρ2)

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 33

En donde µx Y µy son la media de X y Y respectivamente, σ2x y σ2

y sus varianzasy ρ el coeficiente de correlacion entre ambas variables. Es posible demostrarque la densidad marginal de X es N(µx, σ

2x) y la densidad marginal de Y es

N(µy, σ2y). Nos restringiremos al caso particular en donde µx = µy = 0 y σ2

x =σ2y = 1, en cuyo caso la funcion de densidad conjunta es:

1

2π√

1− ρ2exp−x

2 + y2 − 2ρxy

2(1− ρ2)

Observemos que esta ultima expresion puede ser reescrita como:

1

2π√

1− ρ2exp−x

2

2exp− (y − xρ)2

2(1− ρ2)

Reconocemos el producto como f(x)f(y|x) en donde la densidad condicional deY dado X es una normal de media xρ y varianza (1− ρ2). Por lo cual tenemosel siguiente algoritmo para generar observaciones con distribucion bivariada, endonde ambas variables tienen media cero y varianza 1.

i) Generar X con distribucion normal estandar.

ii) Una vez teniendo la observacion de X generamos a Y con distribucionnormal (xρ, 1− ρ2)

A continuacion presentamos la implementacion en R.

x<-rnorm(10000,0,1)

rho<--.9

y<-rnorm(10000,rho*x,sqrt(1-rho^2))

2.5.1. Caso especiales

Normal multivariada

La normal multivariada es una generalizacion de la densidad normal y la den-sidad normal bivariada. Formalizando decimos que X tiene distribucion normalmultivariada con media µ y matriz de varianzas y covarianzas Σ si su funcionde densidad esta dada por:

1

(2π)n/2|Σ|1/2exp−1

2

[(x− µ)tΣ−1(x− µ)

]

Recordemos que Σ debe ser una matriz simetrica, positivo definida, pues de locontrario se tiene un caso degenerado. Observemos que en el caso cuando Σ esla matriz identidad obtenemos n normales independientes.Dentro de las propiedades importantes de la normal multivariada es que si Xtiene distribucion normal multivariada con media µ y matriz de covarianzas Σ,entonces CX + b tiene distribucion normal multivariada de media Cµ + b ymatriz de covarianzas CΣCt.

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 34

Esto ultimo es de gran importancia en simulacion, pues si Z es un vector denormales estandar independientes n-dimensional entonces si queremos encon-trar matriz tal que C ∗ Ct = Σ, entonces Cµ + b tiene la distribucion normalmultivariada µ y matriz de covarianzas Σ.Existen diversos metodos para encontrar la descomposicion de C ∗ Ct = Σ, sinembargo unicamente analizaremos la descomposicion de Choleski, en donde lamatriz C es una matriz triangular inferior.Observemos que necesitamos resolver una ecuacion de la forma:

σ1 σ1,2 ... σ1,n

σ1,2 σ2 ... σ2,n

. . . .

σ1,n σ1,n ... σn

=

c1 0 ... 0

c1,2 c2 ... 0

. . . .

c1,n c2,n ... cn

c1 c1,2 ... c1,n

0 c2 ... c2,n

. . . .

0 0 ... cn

Este ultimo producto de matrices nos lleva a:

c21 c1c1,2 ... c1c1,n

c1c1,2 c21,2 + c22 ... c1,2c1,n + c2c2,n

. . . .

c1c1,n c1,2c1,n + c2c2,n ... c21,n + c22,n + ...+ c2n

Lo cual , despues de realizar varios calculos nos lleva a la siguiente solucion:

cj =

√√√√σj −j−1∑k=1

c2k,j

ci,j =1

ci

[σi,j −

i−1∑k=1

ck,ick,j

]Algunos programas estadısticos como R ya traen implementada la descomposi-cion.

Algoritmo 2.5.1. Algoritmo para generar observaciones de una normal multi-variada.

i) Encontrar la descomposicion una descomposicion de Σ de la forma Σ =CCt.

ii) Generar Z un vector n-dimensional de normales estandar independientes.

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 35

iii) Hacer X = CZ + µ.

El codigo en R es el siguiente:

Sigma<-matrix(c(2,1,-1,1,3,2,-1,2,4),nrow=3,ncol=3) #matriz cov

mu<-c(1,2,3) #vector medias

C<-chol(Sigma) #Descomposicion Choleski

z<-matrix(rnorm(10000*3), nrow=10000, ncol=3) #Normales estandar

x<-z%*%C +matrix(mu,10000,3,byrow=TRUE) # Calcula normal multivariada

Unicamente hacemos la observacion que R regresa como resultado en el algorit-mo de Choleski la matriz que aquı hemos denotado como transpuesta.

Distribucion t multivariada

La funcion de densidad de la densidad t-Student n dimensional de v gradosde libertad esta dada por:

Γ((n+ v)/2)

|Σ|1/2√

(vπ)nΓ(v/2)

[1 +

xtΣ−1x

v

]En donde Σ es una matriz de nxn positivo definida. Dentro de las propiedadesde esta distribucion se tiene que E[X] = 0 y V ar[X] = v ∗ Σ/(v − 2) si v > 2.Una manera de generar observaciones de este vector es la siguiente:

Algoritmo 2.5.2. Algoritmo para generar observaciones de una t-Student mul-tivariada.

i) Generar Z un vector normal multivariado de media 0 y matriz de cova-rianzas I.

ii) Generar W con distribucion ji cuadrada de v grados de libertad e inde-pendiente de Z.

iii) Hacer X =

√v

WZ.

iv) Hacer Y = CX en donde C es la factorizacion de Choleski de Σ.

A continuacion presentamos un ejemplo de implementacion en R:

z<-matrix(rnorm(10000*2),nrow=10000,ncol=2) #Genera normales

w<-rchisq(10000,df=10) #Genera ji-cuadradas

w<-sqrt(10/w)

x<-w*z #divide las normales entre las ji-cuadradas

Sigma<-matrix(c(3,1,1,3),nrow=2,ncol=2)

C<-chol(Sigma) #Descomposicion Choleski

y<-x%*%C

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 36

Distribucion de Dirichlet

Decimos que X tiene distribucion Dirichlet n dimensional si su funcion dedensidad es:

Γ(n+1∑j=1

αj)

n+1∏j=1

Γ(αj)

(1−n∑j=1

xj)αn+1−1

n∏j=1

(xj)αj−1

En donde xj ≥ 0 y αj > 0 para j ∈ 1, 2, ..., n+1 y ademasn+1∑j=1

xj ≤ 1. Dentro

de las propiedades de esta vector tenemos que:

E[X] =α

n+1∑j=1

αj

V ar[X] =

(n+1∑j=1

αj

)A− α αt(

n+1∑j=1

αj

)2(n+1∑j=1

αj + 1

)

En donde α = (α1, α2, ...αn)t y A es una matriz diagonal tal que el j-esimoelemento de la diagonal es αj .El siguiente metodo proporciona un metodo para generar observaciones de estadistribucion:

Algoritmo 2.5.3. Algoritmo para generar observaciones de la distribucion Di-richlet.

i) Generar X1 ∼ gama(α1, 1), X2 ∼ gama(α2, 1),...,Xn+1 ∼ gama(αn+1, 1)independientes.

ii) Regresar (Y1, Y2, ..., Yn) en donde:

Yj =Xj

n+1∑j=1

Xj

La implementacion en R es la siguiente:

a1<-3 # parametros

a2<-5

a3<-2

g1<-rgamma(1000,a1,1) #vector de gamas

g2<-rgamma(1000,a2,1)

g3<-rgamma(1000,a3,1)

g<-matrix(c(g1,g2,g3) , nrow=1000, ncol=3) #genera matriz

c<-1/rowSums(g) #calcula suma por filas

x<-g*c divide entre el valor de la suma

x<-x[,-3] #quita columna redundante

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 37

Distribucion de Wishart

Decimos que una matriz simetrica y positivo definida,X, de dimension nxntiene distribucion Wishart de v grados de libertad (v ≥ n) y parametro Σ, si sufuncion de densidad es:

2−vn/2|Σ|v/2

πn(n−1)/4n∏j=1

Γ((v − j + 1)/2)|x|(v−n−1)/2exp−tr(1

2Σ−1x)

para valores positivo definidos de x y cero en otro caso.Una propiedad importante de esta distribucion es que si tenemos Z1, ...Zv obser-vaciones independientes de normales multivariadas de dimension n, con vectorde media el vector cero y matriz de covarianza Σ entonces:

X =

v∑j=1

Zj Ztj

tiene distribucion Wishart de v grados de libertad y parametro Σ, esto nos dauna primera manera de simular observaciones de esta distribucion:

Algoritmo 2.5.4. Primer algoritmo para generar observaciones de Wishart.

i) Generar v vectores aleatorios con distribucion normal multivariada de di-mension n de media 0 y matriz de covarianzas Σ.

ii) Regresar X =v∑j=1

Zj Ztj

Un ejemplo implementando en R es el siguiente:

Sigma<-matrix(c(2,1,-1,1,3,2,-1,2,4),nrow=3,ncol=3)

C<-chol(Sigma)

norm<-matrix(rnorm(10*3), nrow=10, ncol=3)

z<-norm%*%C #Genera normales multivariadas

x<-t(z)%*%z #Obtiene el producto de las normales con si misma, despues las suma

Este metodo puede ser bastante ineficiente si v es grande, pues para generar unaobservacion de la distribucion Wishart necesitamos nv normales. Una alterna-tiva al metodo anterior es la descomposicion de Barlett:

Algoritmo 2.5.5. Segundo algoritmo para generar observaciones de Wishart.(Descomposicionde Bartlett).

i) Encontrar la descomposicion una descomposicion Choleski de Σ = CCt.

ii) Generar una matriz triangular inferior Tij , en donde Tj,j ∼√χ2v−j+1 y

Ti,j ∼ N(0, 1) con i > j y i, j ∈ 1, 2, ..., n . Todas las entradas de lamatriz son independientes entre sı.

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 38

iii) Regresar X = CTT tCt.

La implementacion en R es la siguiente:

Sigma<-matrix(c(2,1,-1,1,3,2,-1,2,4),nrow=3,ncol=3)

C<-chol(Sigma)

T<-matrix(nrow=3,ncol=3) #Genera matriz triangular

for(i in 1:3)

for(j in 1:3)

if(i==j)T[i,j]=sqrt(rchisq(1,10-i+1))

if(i<j) T[i,j]=0

if(i>j)T[i,j]=rnorm(1)

x<-t(C)%*%T%*%t(T)%*%C #resultado de una observacion

Distribucion uniforme en la esfera

La esfera n dimensional es el conjunto de puntos en Rn que satisfacen ||x|| =(xtx) = 1. Notese que este conjunto tiene medida de Lebesgue cero; sin embargosi se tiene un metodo facil para generar variables aleatorias con distribucionuniforme dentro de este conjunto.

Algoritmo 2.5.6. Algoritmo para generar observaciones en la circunferencia

i) Generar Z un vector normal multivariado de media 0 y matriz de cova-rianzas I.

ii) Regresar (X1, X2, ..., Xn) en donde:

Xj =Zj(

n∑j=1

Z2j

)1/2

A continuacion presentamos su implementacion en R:

z<-matrix(rnorm(1000*2),nrow=1000,ncol=2) #Genera normales

l<-apply(z,MARGIN=1, FUN=function(x)sqrt(sum(x*x))) # Calcula normas

d<-diag(1/l) #Genera una matriz diagonal

x<-d%*%z # Divide cada entrada entre la norma correspondiente

2.6. Otros algoritmos

Cociente de uniformes

El cociente de uniformes consiste en simplemente generar una region en R2

a traves de la funcion de densidad que queremos generar, para posteriormente

CAPITULO 2. GENERACION DE VARIABLES ALEATORIAS 39

generar variables uniformes en dicha region. Esto se sigue del hecho que Ω =(u, v) ∈ R2| 0 < u <

√f(v/u) tiene area finita, en efecto:

|Ω| =∫ ∫

dudv =

∫ √f(x)∫0

ydxdy =

∫f(x)/2dx = 1/2

Ahora si consideramos el cambio de variable dado por X = V/U y Y = U .,tenemos que el jacobiano de la transformacion es 1/y de donde obtenemos queX tiene funcion de densidad:

2

√f(x)∫

0

ydy = f(x)

Por lo tanto X tiene funcion de densidad f .

Algoritmo 2.6.1. Cociente de uniformes.

i) Generar (U, V ) con distribucion uniforme en el conjunto:

(u, v) ∈ R2| 0 < u <√f(v/u)

ii) Hacer X=V/U .

Densidades log-concavas

Decimos que una funcion de densidad f es log-concava el logaritmo de fes una funcion concava. El metodo consiste seleccionar n + 1 puntos al cualdenotaremos por Sn = x0, x1, ..., xn. Con estos puntos construimos las rectasque Li,i+1 que pasan por los puntos (xi, ln(f(xi)) y (xi+1, ln(f(xi+1)). Con estasrectas se definen las siguientes funciones:

g(x) = Li,i+1(x) h(x) = mınLi−1,i(x), Li+i,i+2(x)

entonces se tiene que g(x) ≤ ln(f(x)) ≤ h(x), de donte obtenemos que:

eg(x) ≤ f(x) ≤ eh(x)

Finalmente observemos que a eh(x) la podemos escribir como ck(x) en dondek es una funcion de densidad y c una constante. Con estos elementos Gilkspropuso el siguiente algoritmo:

Algoritmo 2.6.2. Algoritmo de Gilks para distribuciones log-concavas.

i) Escoger una particion de n+ 1 puntos en el soporte de f .

ii) Generar Y con funcion de densidad k y U con distribucion uniforme (0, 1).

iii) Si U ≤ eg(Y )/ck(Y ) aceptamos, si no agregamos el punto Y a la particiony regresamos al paso 1.

Capıtulo 3

Integracion Monte Carlo

3.1. El metodo de Monte Carlo

Supongamos que tenemos una variable aleatoria X y nos interesa calcularP [X > x]. Si tuvieramos realizaciones de esta variable X1, X2, ...Xn entoncesuna estimacion para esta probabilidad seria:

1

n

n∑j=1

IXj>x(x)

De manera mas general, si tenemos X1, X2, ...Xn variables aleatorias indepen-dientes e identicamente distribuidas entonces

1

n

n∑j=1

g(Xj)c.s.−−→ E[g(X)]

Esto nos da una manera de obtener estimacines para E[g(X)] a traves de lasobservaciones. A este metodo se le conoce como el estimacion por Monte Carlo.

Ejemplo 3.1.1. Supongamos que necesitamos evaluar la siguiente integral:

1∫0

xln(x)dx

Esta integral la podemos pensar como el valor esperado de Uln(U) en donde Utiene distribucion uniforme en (0, 1). Es posible verificar que el valor real de estaintegral es −1/4, sin embargo proseguimos a estimar dicha integral vıa MonteCarlo:

u<-runif(100000)

x<-u*log(u)

est<-mean(x)

40

CAPITULO 3. INTEGRACION MONTE CARLO 41

Observese que lo unico que se esta haciendo es generar variables uniformes (0, 1)para despues simplemente calcular el promedio.

Ejemplo 3.1.2. Supongamos que queremos valuar la integral:

4∫2

e−xdx

Observemos que claramente esta integral podemos pensarla como E[2e−X ] endonde X tiene distribucion uniforme en (2, 4). Por lo cual basta simular variablescon esta distribucion y calcular la exponencial de menos el numero obtenido.

x<-runif(10000,2,4)

mean(2*exp(-x))

Ejemplo 3.1.3. Ahora supogamos que queremos valuar :

∞∫0

4cos(3x)e−4xdx

Es posible vericar que el valor de esta integral es −16/25, sin embargo obser-vemos que el valor de esta integral lo podemos pensar como E[Cos(3X)] endonde X tiene distribucion exponencial 4. Ası es como estimarıamos el valor dela integral usando Monte Carlo:

y<-rexp(100000,4)

x<-cos(3*y)

est<-mean(x)

Nuevamente observese que el procedimiento unicamente consiste en generar va-riables exponenciales, para posteriormente calcular un promedio.

Ejemplo 3.1.4. Proseguimos a estimar Cov(U, eU ), en donde U tiene distribu-cion uniforme en (0, 1), para esto observemos que:

Cov(U, eU ) =

1∫0

xexdx−

1∫0

xdx

1∫0

exdx

El resolver estas integrales nos lleva al valor numerico de 1 − (e − 1)/2. Sinembargo todas las integrales las podemos estimar vıa Monte Carlo. Notemos queel estimador que se obtiene usando Monte Carlo es el mismo que hubieramosobtenido utilizando la covarianza muestral.

u<-runif(100000)

mean(u*exp(u))-mean(u)*mean(exp(u))

CAPITULO 3. INTEGRACION MONTE CARLO 42

Ejemplo 3.1.5. En el siguiente ejemplo generaremos muestras de la distribu-cion exponencial conjunta de Marshal Olkin. Esta distribucion se construye delsiguiente modo: Sean X y Y dos variables aleatorias exponenciales independien-tes de parametros λ1 y λ2 respectivamente. Podemos pensar que estas variablesmodelan el tiempo de vida de 2 componentes que integran una maquina, su-poniendo que nada los puede ”matar”de forma prematura. Posteriormente seconsidera una tercera variable exponencial Z de parametro λ3, independientede X y Y , la cual tendra como objetivo modelar el tiempo de ocurrencia deun ”shock”que podrıa danar a ambos componentes de la maquina. Entonces eltiempo de vida real del primer componente estarıa dado por X∗ = MınX,Z,mientras que el la del segundo componente estarıa dada por Y ∗ = MınY,Z.A la distribucion conjunta de X∗ y Y ∗ se le conoce como distribucion exponen-cial conjunta de Marshal Olkin. Notemos por ejemplo que si queremos calcularla covarianza de X∗ y Y ∗, necesitariamos realizar el siguiente calculo:

∞∫0

∞∫0

∞∫0

λ1λ2λ3mınx, zmıny, ze−λ1x−λ2y−λ3zdxdydz −

∞∫0

∞∫0

mınx, zλ1λ3e−λ1x−λ3zdxdz

∞∫0

∞∫0

mıny, zλ2λ3e−λ2y−λ3zdydz

Notemos la dificultad de la integral, sin embargo podemos dar una aproximacionde estos utiliznado Monte Carlo nuevamente, como lo hicimos en el ejemploanterior.

x<-rexp(1000000,1)

y<-rexp(1000000,1)

z<-rexp(1000000,1)

x1<-pmin(x,z)

y1<-pmin(y,z)

mean(x1*y1)-mean(x1)*mean(y1)

Ejemplo 3.1.6. Recordemos que P [K(60) = t] representa la probabilidad deque una persona que ahorita tiene 60 anos, viva exactamente t anos completos(es decir, sin contar fracciones). Suponiendo que se tiene una suma aseguradaM , y que el seguro cubrira el riesgo de muerte durante 5 anos; entonces el valorpresente del monto que tendrıa que pagar la aseguradora estarıa dado por lasiguiente variable aleatoria:

B =

M ∗ vK(60)+1 si K(60) ∈ 0, 1, 2, 3, 4 ,

0 si K(60) ≥ 5

Siendo v = (1 + i)−1 con i una tasa de interes libre de riesgo.

CAPITULO 3. INTEGRACION MONTE CARLO 43

Es posible (y muy sencillo) demostrar que:

E[B] = M ∗4∑t=0

vt+1tp60q60+t = M ∗A 1

60:5|

Con esto en mente supongamos que i = 5 %, a continuacion usaremos MonteCarlo para encuentrar una estimacion para 100, 000 ∗A 1

60:5|.

x<-NULL

u<-runif(10000)

for(i in 1:10000)

j<-0

p<-tq60[1]

while (u[i]>=p) #Genera variable discreta

j=j+1

p=p+tq60[j+1]

if (j==5) #Regresa cero, cuando esta fuera de la cobertura

x[i]<-0

else

x[i]<-10000*(1.05)^(-j-1) #Valor presente

Es importante mencionar que antes de utilizar Monte Carlo, es necesarioverificar que la integral o esperanza a estimar exista, pues de lo contrario ten-dremos conclusiones erroneas, el siguiente ejemplo muestra esto:

Ejemplo 3.1.7. Calcularemos en este ejemplo 10 muestras, cada una de ta-mano 10,000 para observaciones de la normal estandar y de la Cauchy estandar,y con esto calcularemos la media de cada muestra. Notemos que en el primercaso la esperanza de la variable existe, mientras que en el segundo no. La imple-mentacion en R es muy sencilla: Los resultados observados fueron los siguientes:

CAPITULO 3. INTEGRACION MONTE CARLO 44

Normal Cauchy

0.0002091662 -2.977906285

0.0056042572 -0.005282784

-0.0026380040 2.103988348

-0.0049538109 1.638318585

-0.0025957488 -1.609428072

-0.0013047109 6.665617575

0.0154572149 -0.574672492

-0.0085138860 3.827621645

0.0062661081 -0.574900236

-0.0122300482 -6.607971070

Note la gran dispersion que existe entre las medias en el caso de la Cauchy, adiferencia del caso de la normal.

Ahora proseguimos a presentar algunos ejemplos que involucran mas de unavariable

Ejemplo 3.1.8. Supongamos que queremos estimar el valor de la constante π.Para esto consideremos X y Y dos variables aleatorias independientes, ambascon distribucion uniforme en (−1, 1). Es claro que:

P [X2 + Y 2 < 1] = π/4

Por lo tanto obtenemos que:

4E[IX2+Y 2<1] = π

Esto nos da una manera de estimar π , usando parajas de uniformes en (−1, 1).

u<-matrix(runif(20000*2,-1,1), nrow=20000, ncol=2)

x<-NULL

for(i in 1 : 20000)

if(u[i,1]^2+u[i,2]^2<1) x[i]=1

else x[i]=0

4*mean(x)

CAPITULO 3. INTEGRACION MONTE CARLO 45

Ejemplo 3.1.9. En este ejemplo mostraremos como estimar algunos valoresde la funcion de distribucion de la normal estandar. Para esto simplementeobservemos que: E[IZ≤z] = P [Z ≤ z], lo cual nos da una manera muy sencillade estimar la funcion de distribucion.

x<-seq(0,2.5,length=20) #Valores a estimar

z<-rnorm(1000000) #normales

dim(x)<-length(x)

p<-apply(x, MARGIN =1, FUN= function(x,z) mean(z<x), z=z) #aplica indicadoras

phi<-pnorm(x) #valores reales

print(round(rbind(x,p,phi),5)) #comparativos

Ejemplo 3.1.10. Supongamos que queremos encontrar en promedio cuantasuniformes en (0, 1) nos toma para que su suma exceda uno, esto es estamosbuscando:

N = mınn|n∑j=1

Uj > 1

Podemos facilmente calcular la distribucion de N a traves de Monte Carlo:

n<-NULL

for(i in 1:100000)

n[i]<-2 #Mınimo necesitamos 2 uniformes

S<-runif(1)+runif(1)

while(S<=1) #Detiene cuando la suma es mayor a uno

n[i]<-n[i]+1

S<-S+runif(1)

round(rbind(table(n)/100000),5) #Dist empırica

Ejemplo 3.1.11. En este ejemplo tratamos el problema de la ruina del jugador:Dos jugadores, los cuales denotaremos por A y B, apuestan una unidad mone-taria, hasta que alguno de los dos se quede sin dinero. La probabilidad de queA le gane a B es p, mientras la probabilidad de que B le gane a A es q = 1− p,es decir no hay posibilidad de empates. Si suponemos que el capital inicial deA es c, mientras que el capital inicial de B es N − c; entonces la probabilidadde que A se quede con todo el dinero eventualmente (la cual denotaremos porpc esta dada por:

pc =

1− (q/p)c

1− (q/p)Nsi p 6= q,

c/N si p = q.

CAPITULO 3. INTEGRACION MONTE CARLO 46

La demostracion de este resultado puede hacerse analıticamente, sin embargo es-tas probabilidades son facil de estimar utilizando Monte Carlo, pues unicamentenecesitamos simular variables Bernoulli y actualizar nuestro capital conforme alresultado obtenido.

t<-NULL

P<-NULL

for(i in 1:1000)

C<-3 #capital inicial

N<-10 #capital total

t[i]<-0

while (C>0 && C <N)

t[i]<-t[i]+1 #contador intentos

C<-C+2*(runif(1)<1/2)-1 #actualiza capital

if(C==0) P[i]=0 #vemos si nos arruinamos

else P[i]=1 #vemos si nos quedamos con todo

3.2. Tecnicas de reduccion de varianza

Una pregunta que surge de manera natural al usar integracion Monte Carlo.Observemos que si X1, X2, ...Xn son variables independientes e identicamentedistribuidas, y denotamos por:

θ =1

n

n∑j=1

Xj

Entonces claramente tenemos que E[θ] = E[X]. Ahora bien observemos que:

V ar(θ) = V ar(X)/n

Esto nos dice que conforme n crece mejor sera nuestra aproximacion. Sin em-bargo si la varianza de X es grande, podrıamos necesitar valores de n grandespara tener buenas aproximaciones.Para motivar consideremos el siguiente ejemplo:Supongamos que nos interesa encontrar el valor de P [X > 2], en donde X tienedistribucion Cauchy estandar. Observemos que esta probabilidad la podemoscalcular de manera analıtica, ya que:

∞∫2

dx

π(1 + x2)=

1

2− arctan(2)

π= p∗ ≈ .147584

CAPITULO 3. INTEGRACION MONTE CARLO 47

La manera mas sencilla de obtener una estimacion vıa Monte Carlo es simularvariables Cauchy y observar cuantas variables son mayores a 2, es decir nuestroestimador seria:

θ1 =1

n

n∑j=1

IXj>2

Claramente IXj>2 tiene distribucion Bernoulli de parametro p∗, por lo tantotenemos que:

V ar[θ1] = p∗(1− p∗)/n ≈ .1258/n

Observemos que esta distribucion es simetrica con respecto al cero, lo cual im-plica que P [|X| > 2] = 2P [X > 2]. De aquı concluimos que otro estimador parala misma integral seria:

θ2 =1

2n

n∑j=1

I|Xj |>2

Observemos que en este caso I|Xj |>2 tiene distribucion Bernoulli de parametro2p∗, de donde se sigue que:

V ar[θ2] = 2p∗(1− 2p∗)/4n ≈ .052/n

La cual es aproximadamente es un poco menos mitad del valor obtenido parael primer estimador. Ahora observemos que:

1− 2p∗ =

2∫−2

dx

π(1 + x2)= 2

2∫0

dx

π(1 + x2)

De donde deducimos que :

p∗ =1

2− 2

2∫0

dx

2π(1 + x2)

Por lo que un tercer estimador estarıa dado por:

θ3 =1

2− 2

n

n∑j=1

1

π(1 + Y 2j )

en donde Yj tiene distribucion uniforme en (0, 2). Ahora bien en este caso:

V ar[θ3] ≈ .0285/n

Es decir es aproximadamente una cuarta parte de la varianza del estimador θ1.Finalmente si en la integral realizamos el cambio de variable w = 1/x obtenemos:

p∗ =

∞∫2

dx

π(1 + x2)=

1

2

1/2∫0

2dw

π(1 + w2)

CAPITULO 3. INTEGRACION MONTE CARLO 48

Obtenemos un ultimo estimador con uniformes en (0, 1/2):

θ4 =1

2πn

n∑j=1

1

π(1 +W 2j )

En donde Wj tiene distribucion uniforme en (0, 1/2). En este caso tenemos que:

V ar[θ4] ≈ .000095/n

Los codigos correspondientes son los siguientes:

theta1<-NULL

theta2<-NULL

theta3<-NULL

theta4<-NULL

for (i in 1:1000) #primer metodo

x<-rcauchy(1000)

dim(x)<-length(x)

p<-apply(x, MARGIN =1, FUN= function(x) mean(2<x))

theta1[i]<-mean(p)

for(i in 1:1000) #segundo metodo

x<-rcauchy(1000)

dim(x)<-length(x)

p<-apply(x, MARGIN =1, FUN= function(x) mean(2<abs(x)))

theta2[i]<-mean(p)/2

for(i in 1:1000) #tercer metodo

x<-runif(1000,0,2)

x<-1/(pi*(1+x^2))

theta3[i]<-.5-2*mean(x)

for(i in 1:1000) #cuarto metodo

x<-runif(1000,0,.5)

x<-1/(1+x^2)

theta4[i]<-mean(x)/(2*pi)

CAPITULO 3. INTEGRACION MONTE CARLO 49

Esta ultima igualdad estabelece que tenemos aproximadamente una milesimaparte de la varianza del estimador original. A continuacion presentamos unatabla, en donde se muestra el comparativo de la media y de la varianza de los1000 estimadores obtenidos para cada uno de los 4 casos, todos calculados con1000 observaciones en la muestra.

Estimador Media Varianza

θ1 0.147374 0.0001286147

θ2 0.1478125 4.802512e-05

θ3 0.1475652 2.972795e-05

θ4 0.1475834 9.731985e-08

Notemos la diferencia bastante significativa entre los estimadores. Ahora reali-zaremos un comparativo moviendo el tamano de muestra. Para esto observemosque para que θ1 tenga aproximadamente la misma varianza que θ2, necesitamosque:

.1258/n1 ≈ .052/n2

Es decir que:n2 ≈ 0.413432n1

Analogamente podemos ver que:

n3 ≈ 0.226615n1 n4 ≈ 0.00076n1

Lo que establecen estas aproximaciones es que tener 1000 observaciones parael estimador θ1 es equivalente a tener 413 observaciones para el estimador θ2

y es equivalente a usar el estimador θ4 con una sola observacion. La siguientetabla presenta el comparativo entre los estimadores, usando tamanos de muestraequivalentes:

Estimador Tamano de muestra Media Varianza

θ1 10000 0.147661 1.279806e-05

θ2 4137 0.1478123 1.249775e-05

θ3 2268 0.1476883 1.208734e-05

θ4 8 0.1474605 1.194585e-05

Este ejemplo muestra la importancia de la varianza del metodo de Monte Carlo.A continuacion presentamos las tecnicas de reduccion de varianza mas comunes.

CAPITULO 3. INTEGRACION MONTE CARLO 50

3.2.1. Muestro por importancia

Supongamos que X es una variable aleatoria con funcion de densidad f ,tal que f(x) > 0 en el conjunto x ∈ R|g(x) > 0. Si definimos a Y comog(X)/f(X), entonces claramente una manera de estimar E[Y ] vıa Monte Carloserıa:

1

n

n∑j=1

g(X)

f(X)

Nuevamente hacemos notar que la varianza del estimador es V ar(Y )/n, por loque deceriamos que esta fuera pequena, es decir, nos gustaria que f se ”pare-ciera”lo mas posible a g.Notemos que el contexto anterior lo podemos generalizar de la siguiente manera:si f(x) y g(x) son dos funciones de densidad con el mismo soporte, entonces:∫

h(x)f(x)dx =

∫h(x)

f(x)

g(x)g(x)dx

Esta igualdad establece que la esperanza de E[h(X)] ,donde X tiene funcion dedensidad f , es la misma que la esperanza de E[h(Y )f(Y )/g(Y )], en donde lafuncion de densidad de Y es g. A esta funcion g se le conoce como funcion demuestreo por importancia. Nuevamente el objetivo es encontrar g tal que sealo mas parecido posible a |h(x)|f(x).En efecto observemos que la varianza denuestro estimador esta dada por:

Eg[f2(x)h2(x)/g2(x)]− E2

g [f(x)h(x)/g(x)]

Puesto que el segundo termino no depende de g, basta minimizar el primertermino. Ahora por la desigualdad de Jensen tenemos que:

Eg[f2(x = h2(x)/g2(x)] ≥ E2

g [f(x)|h(x)|/g(x)]

De donde al sustituir g por:

f(x)|h(x)|∫f(x)|h(x)|dx

observamos que se alcanza la cota. Sin embargo observemos que en generaldebemos de conocer el valor de la integral en el denominador, lo cual nos puedellevar a otro problema de estimacion; ademas no perdamos de vista que depreferencia g debe ser facil de simular. A continuacion presentamos algunosejemplos para este metodo:

Ejemplo 3.2.1. Retomando el problema anterior,en el cual nos interesa calcularP [X > 2], en donde X tiene distribucion Cauchy, al considerar la funcion dedensidad:

g(x) =2

x2I(2,∞)(x)

CAPITULO 3. INTEGRACION MONTE CARLO 51

Tenemos que las funciones x2 y 1+x2 son muy parecidas entre sı, ademas simularmuestras de g es muy facil, pues a la hora de aplicar el metodo de inversion bastahacer 2/(1− U). En este caso nuestro estimador para P [X > 2] serıa:

θ5 =1

2nπ

n∑j=1

Y 2j

1 + Y 2j

en donde Y tiene funcion de densidad g. Ahora es posible ver que:

V ar[θ5] ≈ .0000955253/n1

El codigo en R es el siguiente:

theta5<-NULL

for(i in 1:1000)

x<-runif(10000)

x<-2/(1-x) #genera variable con densidad g

theta5[i]<-mean((x^2)/(1+x^2))/(2*pi) #estimador MC

Como observacion final la media de los estimadores fue 0.1475854 y la va-rianza 9.579291e − 09 en el caso de tomar 1000 observaciones en cada caso,mientras que si tomamos un tamano de muestra equivalente (9 observaciones)la media fue de 0.1474716 y la varianza 1.053974e− 05.

Ejemplo 3.2.2. Regresemos al problema de estimar la integral:

1∫0

xlnxdx

Nuestros candidatos a funciones de muestreo por importancia son las siguientes:

g1(x) = 1I(0,1)(x)

g2(x) = 2xI(0,1)(x)

g3(x) = −ln(x)I(0,1)(x)

Presentamos el cociente de xlnx entre cada uno de nuestros candidatos a funcio-nes de muestreo por importancia, para ver cual la funcion que mas se ”parece.a

xlnx: Observemos que la distribucion uniforme es aquella que tiene el cocientemas parecido a 1, por lo que es de esperarse que esta funcion nos produzcala menor varianza. A continuacion desarrollamos los estimadores Monte Carlopara cada una de nuestras funciones de densidad:Para g1 es muy sencillo y de hecho es un ejemplo que ya habıamos trabajado.Simplemente debemos generar X1, X2, ...Xn con distribucion uniforme en (0, 1)y hacer:

θ1 =1

n

n∑j=1

Xj ln(Xj)

CAPITULO 3. INTEGRACION MONTE CARLO 52

Figura 3.1: Grafica f/g, g1 rojo, g2 verde, g3 negro

Para g2 notemos que la funcion de distribucion correspondiente es x2, por loque para simular de esta variable basta hacer X =

√U . En este caso nuestro

estimador Monte Carlo serıa:

θ2 =1

2n

n∑j=1

ln(Xj)

Para g3 requerimos otro tipo de tecnicas para simular, para esto observemosque la funcion:

h(x, y) = 1/y 0 < x < y < 1

Es una funcion de densidad conjunta, y ademas la densidad marginal de Xes −ln(x), mientras que la densidad marginal Y es uniforme y la densidadcondicional de X dado Y = y es uniforme en (0, y). Esto nos da una manera desimular f(x) usando f(x|y) y f(y). Ahora bien nuestro estimador Monte Carloen este caso serıa:

θ3 = − 1

n

n∑j=1

Xj

La implementacion en R de estos metodos es la siguiente:

theta1<-NULL

theta2<-NULL

theta3<-NULL

for(i in 1:1000) #g1

x<-runif(10000)

fg<-x*log(x)

theta1[i]<-mean(fg)

CAPITULO 3. INTEGRACION MONTE CARLO 53

for(i in 1:1000) #g2

u<-runif(10000)

x<- sqrt(u)

fg<-log(x)/2

theta2[i]<-mean(fg)

for(i in 1:1000) #g3

y<-runif(10000)

x<- runif(10000,0,y)

fg<- -x

theta3[i]<-mean(fg)

Los resultados obtenidos, en base a mil estimadores de cada tipo, son los si-guientes:

Estimador Media Varianza

θ1 -0.250027 1.07502101441312e-06

θ2 -0.250010 6.34423633349087e-06

θ3 -0.249987 4.58574930187127e-06

Note que en efecto, bajo g1 se obtiene la menor varianza.

Ejemplo 3.2.3. Supongamos que queremos evaluar:

1∫0

e−xdx

1 + x2

Proponemos a las siguientes funciones de densidad como candidatos para estimaresta integral:

g1(x) = 1I(0,1)(x)

g2(x) = e−xI(0,∞)(x)

g3(x) = e−x/(1− e−1)I(0,1)(x)

g4(x) = 4/(π(1 + x2))I(0,1)(x)

Ahora presentamos una grafica en donde se muestra el comparativo de nuestrafuncion a integrar entre los candidatos a funciones de muestreo por importancia:

CAPITULO 3. INTEGRACION MONTE CARLO 54

Figura 3.2: Grafica f/g, g1 rojo, g2 verde, g3 azul, g4 negro

Del cociente podemos esperar que entre g2 y g3 sea aquella que mas reduce lavarianza, sin embargo recordemos que el soporte de g2 no coincide con el inter-valo en donde queremos evaluar la integral.Observemos que para g1 necesitamos generar X1, X2, ...Xn con distribucion uni-forme en (0, 1) para despues calcular:

θ1 =1

n

n∑j=1

e−Xj

1 +X2j

Para g2 necesitamos generarX1, X2, ...Xn con distribucion exponencial de parame-tro 1 y hacer:

θ2 =1

n

n∑j=1

1

1 +X2j

Para el tercer caso tenemos que la densidad es facilmente invertible y el hacerX = −ln(1 − U(1 − e−1)) nos da observaciones de esta distribucion; en cuyocaso al tener X1, X2, ...Xn con esta distribucion, el tercer estimador seria:

θ3 =1− e−1

n

n∑j=1

1

1 +X2j

Finalmente para el cuarto caso , nuevamente podemos usar el metodo de in-version para simular de esta distribucion, haciendo X = tan(πU/4). Nuestroestimador en este caso es:

θ4 =π

4n

n∑j=1

e−Xj

La implementacion en R de los cuatro metodos es la siguiente:

theta1<-NULL

theta2<-NULL

CAPITULO 3. INTEGRACION MONTE CARLO 55

theta3<-NULL

theta4<-NULL

for(i in 1:1000) #g1

x<-runif(10000)

fg<-exp(-x)/(1+x^2)

theta1[i]<-mean(fg)

for(i in 1:1000) #g2

x<-rexp(10000,1)

fg<-(x>0)*(x<1)*1/(1+x^2)

theta2[i]<-mean(fg)

for(i in 1:1000) #g3

x<-runif(10000)

x<- -log(1-x*(1-exp(-1)))

fg<-1/(1+x^2)*(1-exp(-1))

theta3[i]<-mean(fg)

for(i in 1:1000) #g4

x<-runif(10000)

x<-tan(pi*x/4)

fg<-exp(-x)*pi/4

theta4[i]<-mean(fg)

rbind(c("g1","g2","g3","g4"),theta,v) #resumen

Los resultados obtenidos, en base a mil estimadores de cada tipo, son los si-guientes:

CAPITULO 3. INTEGRACION MONTE CARLO 56

Estimador Media Varianza

θ1 0.52467 6.572306e-06

θ2 0.52469 1.907885e-05

θ3 0.52479 8.936909e-07

θ4 0.52481 1.805071e-06

Nuevamente note que los resultados son congruentes con lo que esperabamosdesde un inicio.

Ejemplo 3.2.4. Como ultimo ejemplo de este metodo consideremos la evalua-cion de la siguiente integral:

∞∫0

x2e−x2/2+xdx

Notemos que debido al dominio de la funcion podemos proponer a los siguientescandidatos para funciones de muestreo por importancia:

g1(x) = xe−xI(0,∞)(x)

g2(x) =1

2x2e−xI(0,∞)(x)

g3(x) =

√2

πe−x

2/2I(0,∞)(x)

g4(x) = xe−x2/2I(0,∞)(x)

Notemos que los cuatro casos son faciles de simular, pues corresponden a la den-sidades gama (2, 1), gama (3, 1), valor absoluto de una normal estandar y Ray-leigh respectivamente. El comparativo de las graficas es el siguiente: Observemosque entre la densidad de g2 es la que produce una grafica mas acercada a unaconstante”, por lo que es de esperarse que dicha densidad es la que produzcamenor varianza. Ahora bien los estimadores en cada caso estan dados por:

θ1 =1

n

n∑j=1

Xjexp−X2j

2+ 2Xj

θ2 =2

n

n∑j=1

exp−X2j

2+ 2Xj

θ3 =

√π√

(2)n

n∑j=1

X2j expXj

CAPITULO 3. INTEGRACION MONTE CARLO 57

Figura 3.3: Grafica f/g, g1 rojo, g2 verde, g3 azul, g4 negro

θ4 =1

n

n∑j=1

XjexpXj

La implementacion en R es la siguiente:

theta1<-NULL

theta2<-NULL

theta3<-NULL

theta4<-NULL

for(i in 1:1000) #g1

x<-rgamma(10000,2,1)

fg<-x*exp(2*x-.5*x^2)

theta1[i]<-mean(fg)

for(i in 1:1000) #g2

x<-rgamma(10000,3,1)

fg<-exp(2*x-.5*x^2)

theta2[i]<-2*mean(fg)

for(i in 1:1000) #g3

x<-rnorm(10000)

x<- abs(x)

fg<-sqrt(pi/2)*(x^2)*exp(x)

theta3[i]<-mean(fg)

CAPITULO 3. INTEGRACION MONTE CARLO 58

for(i in 1:1000) #g4

x<-runif(10000)

x<-sqrt(-2*log(x))

fg<-x*exp(x)

theta4[i]<-mean(fg)

Los resultados obtenidos fueron los siguientes:

Estimador Media Varianza

θ1 7.956009 0.00318195

θ2 7.954417 0.00286485

θ3 7.942766 0.08785476

θ4 7.954447 0.01950724

Notemos que en efecto fue g2 la que produjo una menor varianza.

3.2.2. Variables antiteticas

Supongamos que queremos estimar una cantidad S y tenemos dos estima-dores insesgados disponibles θ1 y θ2. Claramente (θ1 + θ2)/2 es tambien unestimador insesgado para S y ademas en caso de que θ1 y θ2 sean independien-tes e identicamente distribuidas, se tiene que:

V ar

[θ1 + θ2

2

]=V ar[θi]

2

Notemos que redujimos la varianza a la mitad, sin embargo esta es una maneraingenua de reducir varianza, pues lo que estamos haciendo es, basicamente, usarel metodo de Monte Carlo e ir aumentando el tamano de la muestra. Sin embargosi θ1 y θ2 no fueran independientes tendrıamos que:

V ar

[θ1 + θ2

2

]=V ar[θi]

2+Cov(θ1, θ2)

2=

1

2V ar[θi] (1 + ρ(θ1, θ2))

Observemos que en el caso que las variables esten correlacionadas negativamen-te tenemos una varianza menor a la original.Por ejemplo sabemos que si U tiene distribucion uniforme en (0, 1) entonces1−U tambien tiene distribucion uniforme en (0, 1) y ademas ρ(U, 1−U) = −1.La siguiente pregunta surge de manera natural: Si φX(t) es la funcion de cuan-tiles entonces ¿Siguen siendo φX(U) y φX(1− U) negativamente relacionadas?

CAPITULO 3. INTEGRACION MONTE CARLO 59

Aun mas, si g es una funcion ¿Cuando g (φX(U)) y g (φX(1− U)) estan ne-gativamente relacionadas? A continuacion damos un par de resultados que nosresolveran estas preguntas:

Proposicion 3.1. Sea X una variable aleatoria y f y g dos funciones crecientes,entonces:

E[f(X)g(X)] ≥ E[f(X)]E[g(X)]

Dem. Sean f y g dos funciones crecientes, entonces ∀ x, y ∈ R tenemosque (f(x)− f(y)) (g(x)− g(y)) ≥ 0. Entonces consideremos X y Y dos va-riables aleatorias independientes e identicamente distribuidas,entonces tenemosque E[(f(X)− f(Y )) (g(X)− g(Y ))] ≥ 0 de donde concluimos :

E[f(X)g(X)] + E[f(Y )g(Y )] ≥ E[f(X)g(Y )] + E[f(Y )g(Y )]

Ahora bien al ser X y Y identicamente distribuidas se obtiene:

2E[f(X)g(X)] = E[f(X)g(X)] + E[f(Y )g(Y )] ≥

E[f(X)g(Y )] + E[f(Y )g(X)] = 2E[f(X)g(X)]

2

Esta ultima proposicion nos permite probar el siguiente resultado:

Proposicion 3.2. Si g es una funcion monotona entonces las variables

Y1 = g (φX(U)) Y2 = g (φX(1− U))

estan negativamente correlacionadas.

Dem. Haremos el caso en que g sea creciente. Para esto observemos quelas funciones Y1 y −Y2 son funciones crecientes de U , por lo que a la hora deaplicar la proposicion anterior tenemos que:

E[Y1(−Y2)] ≥ E[Y1]E[−Y2]

Esto es:E[Y1Y2] ≤ E[Y1]E[Y2]

De donde obtenemos que Cov(Y1, Y2) < 0.

2

Ejemplo 3.2.5. Consideremos la evaluacion de esta integral:

1∫0

dx

1 + x= ln(2)

CAPITULO 3. INTEGRACION MONTE CARLO 60

Al utilizar variables aleatorias con distribucion uniforme en (0, 1) nuestro esti-mador Monte Carlo simple quedarıa:

1

n

n∑j=1

1

1 + Uj

Mientras que el estimador por variables antiteticas serıa:

1

2n

n∑j=1

1

1 + Uj+

1

1 + (1− Uj)

Notemos que es posible aplicar el metodo de variables antiteticas ya que lafuncion g(u) = 1/(1 + u) es monotona decreciente. A continuacion presentamosla implementacion en R:

theta1<-NULL

theta2<-NULL

for(i in 1:1000)

u<-runif(10000)

theta1[i]<-mean(1/(1+u)) #normal

u<-runif(10000)

theta2[i]<-mean( (1/(1+u))+(1/(1+1-u)))/2 #antiteticas

La siguiente tabla compara los resultados obtenidos en base a mil estimadores:

Estimador Media Varianza

Normal 0.693106 1.883416e-06

Variables antiteticas 0.693157 6.398896e-08

Notemos que en efecto obtuvimos una varianza menor al usar variables antiteti-cas.

Ejemplo 3.2.6. Supongamos que queremos evaluar la integral:

1∫0

√1− u2du

Claramente nuestra funcion g(u) =√

1− u2 es monotona en (0, 1). El metodode Monte Carlo clasico”nos darıa la estimacion:

1

n

n∑j=1

√1− U2

j

CAPITULO 3. INTEGRACION MONTE CARLO 61

Mientras que la implementacion de variables antiteticas nos proporcionarıa elsiguiente estimador:

1

2n

n∑j=1

(√1− U2

j +√

1− (1− Uj)2

)La implementacion en R es la siguiente:

theta1<-NULL

theta2<-NULL

for(i in 1:1000)

u<-runif(10000)

theta1[i]<-mean(sqrt(1-u^2)) #normal

u<-runif(10000)

theta2[i]<-mean(sqrt(1-u^2)+sqrt(1-(1-u)^2))/2 #antiteticas

A continuacion presentamos una tabla que compara los resultados obtenidos enbase a mil estimadores:

Estimador Media Varianza

Normal 0.785387 4.873556e-06

Variables antiteticas 0.785371 6.795313e-07

Notemos que en efecto se obtiene una variana menor a la que tenıamos origi-nalmente.

Ejemplo 3.2.7. Ahora consideremos nuevamente el problema de estimar laprobabilidad de que una Cauchy estandar sea mayor o igual a dos. Notemos quepor ejemplo cuando dedujimos el tercer estimador obtuvimos que:

P [X > 2] =1

2− 1

2P [|X| ≤ 2]

Notemos que al usar un estimador simple de Monte Carlo para el lado derechoobtenemos:

1

2− 1

2n

n∑j=1

I|Xj |≤2

Notemos que en este caso I|Xj |≤2 no es una funcion monotona, entonces nopodemos aplicar el metodo de las variables antiteticas. En efecto ya que al Xtener distribucion Cauchy (0, 1) entonces −X tiene distribucion Cauchy (0, 1)sin embargo I|Xj |≤2 = I|−Xj |≤2 de donde observamos que no reducimos ennada la varianza al usar el metodo de variables antiteticas.

CAPITULO 3. INTEGRACION MONTE CARLO 62

Ejemplo 3.2.8. El siguiente ejemplo tiene como objetivo mostrar un caso endonde no trabajamos con uniformes, para esto supongamos que nos interesacalcular el valor de E[exp(Z)], en donde Z tiene distribucion Normal estandar.Es claro que la funcion g(z) = ez es una funcion monotona, ademas que Z y −Zestan negativamente correlacionadas. Nuestro estimador vıa Monte Carlo es:

1

n

n∑j=1

eZj

Mientras que el estimador usando variables antiteticas serıa:

1

2n

n∑j=1

(eZj + e−Zj )

La implementacion en R es la siguiente:

theta1<-NULL

theta2<-NULL

for(i in 1:1000)

z<-rnorm(100000)

theta1[i]<-mean(exp(z)) #normal

z<-rnorm(100000)

theta2[i]<-mean(exp(z)+exp(-z))/2 #antiteticas

La tabla de resultados, en base a mil estimadores de cada tipo es la siguiente:

Estimador Media Varianza

Normal 1.648759 4.7063e-05

Variables antiteticas 1.648742 1.5180e-05

Notemos que si se obtiene reduccion de la varianza del estimador de variablesantiteticas es aproximadamente una tercera parte del estimador normal.

Ejemplo 3.2.9. En este ejemplo tratamos un caso cuando no se tenga unafuncion que tenga la misma distribucion y que claramente sean correlacionadas.Para esto consideremos X que tiene distribucion exponencial de parametro λy deseamos estimar E[Xm]. Es claro que g(x) = xm es una funcion monotonacuando nos restringimos a los reales positivos. Es posible demostrar que:

E[Xm] =m!

λm

Notemos que en este caso no conocemos una funcion de X que este correla-cionada negativamente con esta y ademas tenga la misma distribucion. Sin

CAPITULO 3. INTEGRACION MONTE CARLO 63

embargo que recordemos que si U ∼ Unif(0, 1), entonces −ln(1 − U)/λ tie-ne distribucion exponencial. Entonces al utilizar la proposicion 3.2 obtenemosque (−ln(1− U)/λ)

ny (−ln(U)/λ)

nestan negativamente correlacionadas. El

estimador Monte Carlo simple esta dado por:

1

n

n∑j=1

(− ln(1− U)

λ

)mMientras que el estimador usando variables antiteticas es:

1

2n

n∑j=1

[(− ln(1− U)

λ

)m+

(− ln(U)

λ

)m]El codigo en R es el siguiente:

theta1<-NULL

theta2<-NULL

for(i in 1:1000)

u<-runif(100000) #normal

theta1[i]<-mean((-log(1-u))^4)

u<-runif(100000) #antiteticas

theta2[i]<-mean((-log(1-u))^4+(-log(u))^4)/2

La tabla que resultados obtenidos es la siguiente:

Estimador Media Varianza

Normal 24.039633 0.377489

Variables antiteticas 24.007465 0.197870

Notemos una reduccion de aproximadamente el 50 % de la varianza.

Ejemplo 3.2.10. Consideramos nuevamente el problema de estimar la primaunica de un seguro vitalicio. Recordemos que la variable aleatoria que queremosestimar es simplemente:

B =

(1

1 + i

)K(x)+1

El uso de variables antiteticas es valido al ser una funcion decreciente, y suimplementacion en este caso consiste en generar una observacion de K(x) utili-zando U con distribucion uniforme en (0, 1) y generar una nueva observacion deK(x) ahora usando 1−U . A continuacion presentamos un ejemplo utilizando latabla de mortalidad correspondiente a experiencia mexicana CNSF 2000-I 91-98para una persona de 90 anos.

CAPITULO 3. INTEGRACION MONTE CARLO 64

theta1<-NULL

theta2<-NULL

for(j in 1:1000)

S<-0

R<-0

u<-runif(10000)

v<-1-u #Variables antiteticas

for(i in 1:10000) #genera con u

k<-0

p<-tq90[1]

while (u[i]>=p)

k=k+1

p=p+tq90[k+1]

S<-S+(1.05)^(-k-1)

theta1[j]<-S/10000 #estimador normal

for(i in 1:10000) #genera con v

k<-0

p<-tq90[1]

while (v[i]>=p)

k=k+1

p=p+tq90[k+1]

R<-R+(1.05)^(-k-1)

theta2[j]<-(S+R)/20000 #estimador antiteticas

Los resultados fueron los siguientes:

Estimador Media Varianza

Normal 0.76256156 1.607135e-06

Variables antiteticas 0.76262870 8.951639e-09

Ejemplo 3.2.11. Ahora consideremos el caso de una anualidad contingente,para el caso vitalicio la variable que modela adecuadamente el problema es:

B = a ¯K(x)+1|

CAPITULO 3. INTEGRACION MONTE CARLO 65

Observemos nuevamente esta funcion es monotona creciente, por lo que el uso devariables antiteticas es valido. La implementacion es similar al caso del segurotemporal.

theta1<-NULL

theta2<-NULL

for(j in 1:1000)

u<-runif(10000)

v<-1-u

S<-0

R<-0

for(i in 1:10000) #Usando u

k<-0

vp<-1

p<-tq90[1]

while (u[i]>=p)

k<-k+1

p<-p+tq90[k+1]

vp<-vp+(1.05)^(-k)

S<-S+vp

theta1[j]<-S/10000 #Normal

for(i in 1:10000)

k<-0

vp<-1

p<-tq90[1]

while (v[i]>=p) #usando 1-u

k<-k+1

p<-p+tq90[k+1]

vp<-vp+(1.05)^(-k)

R<-R+vp

theta2[j]<-(S+R)/20000 #Antiteticas

El resultado de la simulacion es el siguiente:

CAPITULO 3. INTEGRACION MONTE CARLO 66

Estimador Media Varianza

Normal 4.986474 7.082888e-04

Variables antiteticas 4.984728 3.545379e-06

3.2.3. Variables de control

Supongamos que queremos estimar E[g(X)]. Si conocemos una funcion f talque conocemos a E[f(X)], entonces para cualquier c ∈ mathbbR tenemos que:

g(X) + c (f(X)− E[f(X)])

es insesgado para E[g(X)]. La varianza de este estimador es:

V ar(g(X)) + c2V ar(f(X)) + 2cCov(f(X), g(X))

Ahora proseguimos a minimizar esta expresion en funcion de c. Derivando ob-tenemos:

2cV ar(f(X)) + 2Cov(f(X), g(X))

De donde obtenemos que el punto donde se minimiza la varianza es:

c∗ = −Cov(f(X), g(X))

V ar(f(X)

Notemos entonces que la de nuestro estimador usando c∗ es:

V ar(g(X)) + c2V ar[f(X)] + 2cCov(f(X), g(X))

V ar(g(X))− [Cov(f(X), g(X)]2

V ar[f(X)]

Notemos de esta ultima expresion indica que entre mas pequena sea la varian-za de f(X) y mas correlacionadas esten f(X) y g(X), obtenemos una mayorreduccion de varianza.

Ejemplo 3.2.12. Nuestro objetivo es estimar el valor de E[sen(U)], en donde Utiene distribucion uniforme (0, 1). Notemos que la eleccion sencilla es f(U) = U ,pues sabemos que E(U) = 1/2 y V ar(U) = 1/12. Ahora bien necesitamos elvalor de Cov(U, sen(U)), el cual no conocemos pero podemos estimar usandoMonte Carlo. Nuestro estimador en este caso serıa:

1

n

n∑j=1

Sen(Uj)− 12Cov(U, sen(U))[Uj − 1/2]

La implementacion en R es la siguiente:

CAPITULO 3. INTEGRACION MONTE CARLO 67

theta1<-NULL

theta2<-NULL

v<-runif(1000000)

c<-cov(v,sin(v)) #Estimacion cov(f,g)

for(i in 1:1000) #Monte Carlo normal

u<-runif(10000)

theta1[i]<-mean(sin(u))

for (i in 1:1000) #Variable de control

u<-runif(10000)

theta2[i]<-mean (sin(u)-12*c*(u-.5))

Con lo cual obtuvimos los siguientes resultados:

Estimador Media Varianza

Normal 0.459655 6.471866e-06

Variable de Control 0.459689 3.282136e-08

Ejemplo 3.2.13. Ahora consideramos la estimacion de E[e−Z ] en donde Z tienedistribucion normal estandar. Nuevamente una eleccion facil de una variable decontrol es f(Z) = Z, pues sabemos que su media es cero y su varianza es uno;En cuyo caso el estimador usando esta variable de control serıa:

1

n

n∑j=1

e−Zj − Cov(Z, e−Z)Zj

El codigo en R quedarıa:

theta1<-NULL

theta2<-NULL

est<-rnorm(1000000) #estimacion c

c<- - cov(est,exp(-est))

for(i in 1:1000) #Monte Carlo normal

z<-rnorm(10000)

theta1[i]<-mean(exp(-z))

CAPITULO 3. INTEGRACION MONTE CARLO 68

for(i in 1:1000) #Variables de Control

z<-rnorm(10000)

theta2[i]<-mean(exp(-z)+c*z)

La tabla de comparativos con los resultados arrojados fue la siguiente:

Estimador Media Varianza

Normal 1.6468056 4.558532e-04

Variable de Control 1.649065 1.920878e-04

Ejemplo 3.2.14. Finalmente consideremos la estimacion de la integral:

1∫0

e−u

1 + u2du

Ahora bien observemos podemos facilmente evaluar la integral:

1∫0

du

1 + u2=π

4

Por lo que un candidato a variable de control es f(U) = 1/(1 + U2), aunquetendrıamos que estimar su varianza.El estimador usando a f como variable decontrol es el siguiente:

1

n

n∑j=1

e−Uj

1 + U2j

+ c

(1

1 + U2j

− π

4

)

La implementacion en R es la siguiente:

theta1<-NULL

theta2<-NULL

v<-runif(1000000) #Estimacion de c

c<- -cov(1/(1+v^2),exp(-v)/(1+v^2))/var(1/(1+v^2))

for(i in 1:1000)

u<-runif(10000) #Monte Carlo normal

h<-exp(-u)/(1+u^2)

theta1[i]<-mean(h)

CAPITULO 3. INTEGRACION MONTE CARLO 69

for(i in 1:1000) #Variable de control

u<-runif(10000)

h<-exp(-u)/(1+u^2)

k<-h+c*((1/(1+u^2))-pi/4)

theta2[i]<-mean(k)

Los resultados obtenidos fueron los siguientes:

Estimador Media Varianza

Normal 0.524869 6.109114e-06

Variable de Control 0.524801 3.321548e-07

3.2.4. Esperanza condicional

Recordemos que si X es una variable con segundo momento finito entonces:

E[X] = E[E[X|Y ]]

Esto es podemos usar observaciones de E[X|Y ] en lugar de X para estimarE[X]. Ahora recordemos que:

V ar[X] = V ar[E[X|Y ]] + E[V ar[X|Y ]]

Puesto que la variable V ar[X|Y ] es no negativa, tenemos que E[V ar[X|Y ]] ≥ 0,de donde concluimos que:

V ar[X] ≥ V ar[E[X|Y ]]

lo cual establece que en efecto, al considerar E[X|Y ] tendremos menos variabi-lidad.

Ejemplo 3.2.15. Empecemos por un ejemplo sencillo; para esto consideremosque la funcion de densidad conjunta :de X esta dada por:

f(x, y) = 1/y 0 < x < y < 1

Notemos que la densidad marginal de X es:

f(x) = −ln(x)I(0,1)(x)

Entonces sabemos tenemos que la esperanza de X es 1/4, pues la integral queaparece para este calculo ya lo hemos trabajando anteriormente. La densidadcondicional de X dado Y = y es simplemente:

f(x|y) = 1/y 0 < x < y

CAPITULO 3. INTEGRACION MONTE CARLO 70

De donde concluimos que E[X|Y = y] = y/2, de donde E[X|Y ] = Y/2. Hacien-do notar que la densidad marginal de Y es uniforme en (0, 1), obtenemos lossiguientes estimadores:

θ1 =1

n

n∑j=1

Xj

θ2 =1

2n

n∑j=1

Yj

El codigo en R es el siguiente:

theta1<-NULL

theta2<-NULL

for(i in 1:1000)

y<-runif(10000)

x<-runif(10000,0,y)

theta1[i]<-mean(x)

theta2[i]<-mean(y)/2

A continuacion presentamos los resultados obtenidos:

Estimador Media Varianza

Normal 0.250062 4.905918e-06

Esperanza Condicional 0.250040 2.105049e-06

Notemos una reduccion de aproximadamente el 50 % de la varianza.

Ejemplo 3.2.16. Retomando el ejemplo 2.4.5 es facil de demostrar que ladensidad marginal de X es Binomial Negativa de parametros α y λ/(1 + λ).Entonces en general si queremos estimar la esperanza de una variable aleatoriacon distribucion Binomial Negativa de parametros r y p podrıamos considerarhacerlo un modelo Poisson-Gamma, esto tomar X con distribucion Poisson deparametro Λ en donde Λ tiene distribucion gama (r, p/(1 − p)). Ahora bien esclaro que E[X|Λ] = Λ, por lo que el estimador de la media de Λ nos dara elmismo resultado que el estimador de la media de X, sin embargo el primerotendra la varianza menor.

theta1<-NULL

theta2<-NULL

for(i in 1:1000)

x<-rnbinom(10000,5,3/4)

CAPITULO 3. INTEGRACION MONTE CARLO 71

y<-rgamma(10000,5,(3/4)/(1/4))

theta1[i]<-mean(x) #usa binomiales negativas

theta2[i]<-mean(y) #usa gamas

El comparativo es el siguiente:

Estimador Media Varianza

Normal 1.667323 2.296723e-04

Esperanza Condicional 1.666929 5.4600966e-05

Ejemplo 3.2.17. En este ejemplo retomaremos la estimacion del valor de πusando uniformes en (−1, 1). Recordemos que la estrategia inicial utilizada fuegenerar X y Y dos variables aleatorias independientes con distribucion uniformeen (−1, 1) y posteriormente calcular:

4IX2+Y 2<1

Proseguiremos a calcular la esperanza condicional de esta indicadora dada unaobservacion de alguna de las variables, para esto observemos que:

E[IX2+Y 2<1|Y = y] = P [X2 < 1− y2|Y = y]

Aplicando independencia entre las variables obtenemos que la ultima expresiones igual a:

P [X2 < 1− y2] = P [|X| <√

1− y2] =√

(1− y2)

De donde concluimos que 4E[IX2+Y 2<1|Y ] =√

(1− Y 2). A continuacion pre-sentamos la implementacion en R de este metodo:

theta1<-NULL

theta2<-NULL

for(j in 1 :1000)

S<-0 #Normal

u<-matrix(runif(10000*2,-1,1), nrow=10000, ncol=2)

for(i in 1 : 10000)

if(u[i,1]^2+u[i,2]^2<1) S<-S+4

theta1[j]<-S/10000

v<-runif(10000,-1,1) #esperanza condicional

theta2[j]<-4*mean(sqrt(1-v^2))

La tabla de resultados para comparar ambos metodos es la siguiente:

CAPITULO 3. INTEGRACION MONTE CARLO 72

Estimador Media Varianza

Normal 3.141881 2.538245e-04

Esperanza Condicional 3.141546 7.800512e-05

Ejemplo 3.2.18. Nuevamente consideremos el caso de estimar un seguro vi-talicio, pero ahora supondremos que la tasa de interes es aleatoria aleatoria.Notemos que para este caso el la variable que mide el valor presente de lo quetendra que pagar la aseguradora es:

B =

(1

1 + I

)K(x)+1

Para simular de esta variable lo que tendrıamos que hacer es simular un valor deK(x) y un valor de I y con esta valor hacer el producto correspondiente. Ahorabien observemos que al tomar E[B|I], podemos pensar a I como constante porlo tanto:

E[B|I] =

∞∑n=0

n|qx

(1

1 + I

)n+1

El ejemplo de implementacion en R, para un seguro temporal 5 emitido parauna persona de 60 anos con las hipotesis de mortalidad usuales, con una su-ma asegurada de 10,000 y suponiendo que la tasa de interes tiene distribucionnormal (.05, .005):

theta1<-NULL

theta2<-NULL

for(j in 1:1000)

#Metodo normal con tasa aleatoria

S<-0

u<-runif(10000)

I<-rnorm(10000,.05,.005)

for(i in 1:10000)

k<-0

p<-tq60[1]

while (u[i]>=p)

k<-k+1

p<-p+tq60[k+1]

if (k<5)

S<-S+10000*(1+I[i])^(-k-1)

CAPITULO 3. INTEGRACION MONTE CARLO 73

theta1[j]<-S/10000

for(j in 1:1000)

#Usando esperanza condicional

S<-0

I<-rnorm(10000,.05,.005)

for(i in 1:10000)

k<-10000*(tq60[1]*(1+I[i])^(-1))

k<- k+10000*(tq60[2]*(1+I[i])^(-2))

k<- k+10000*(tq60[3]*(1+I[i])^(-3))

k<- k+10000*(tq60[4]*(1+I[i])^(-4))

k<- k+10000*(tq60[5]*(1+I[i])^(-5))

S<- S+k

theta2[j]<-S/10000

La tabla de comparativos es la siguiente:

Estimador Media Varianza

Normal 672.206095 570.797531

Esperanza Condicional 672.642984 9.751764e-03

Por supuesto es posible generalizar este modelo para el caso que las tasa deinteres no sea la misma para todos los anos, nuestra valor de la prima unicaserıa:

∞∑n=0

n|qx

n+1∏j=1

1

1 + ij

Ahora en este caso la variable aleatoria que nos darıa origen a esta esperanzaserıa:

K(x)+1∏j=1

1

1 + ij

En cuyo caso la esperanza condicional de la variable, condicionando a las tasasde interes serıa:

∞∑n=0

n|qx

n+1∏j=1

1

1 + Ij

CAPITULO 3. INTEGRACION MONTE CARLO 74

Ejemplo 3.2.19. Supongamos que tenemos una variable Poisson compuesta,esto es, tenemos una variable de la forma:

S =

N∑i=1

Xi

En donde X1, X2, ... son variables aleatorias no negativas, independientes eidenticamente distribuidas, y en donde N es una variable aleatoria con distribu-cion independiente de las anteriores. Este modelo es muy utilizado en teorıa deriesgos para modelar el monto de reclamaciones que puede tener una asegura-dora. Nuestro objetivo es encontrar una estimacion para P [S > c] para algunaconstante c. Ahora la propuesta obvia para el estimador Monte Carlo es:

θ1 =1

n

n∑j=1

ISj>c

Ahora esto ultimo puede ser un poco ineficiente, ya que para cada observacionrequerimos generar una observacion de N , y con esta observacion generar tantosvalores de X como sean necesarios para posteriormente calcular la indicadora.Una manera alternativa es definir M como:

M = mınn ≥ 1|X1 +X2 + ...+Xn > c

Observemos entonces que:

IS>c = 1←→ N ≥M

Por lo tanto:E[IS>c|M ] = P [N ≥M |M ]

Ahora observemos que:

P [N ≥M |M = m] = P [N ≥ m]

Por lo que nuestro estimador usando esperanza condicional consiste en simularun valor de M para posteriormente calcular la probabilidad de que una Poissonde parametro λ sea mayor o igual a dicho valor. A continuacion presentamos laimplementacion en R.

theta1<-NULL

theta2<-NULL

for(i in 1:1000)

S<-0

N<-rpois(10000,3) #Genera Poisson

for(j in 1: 10000)

CAPITULO 3. INTEGRACION MONTE CARLO 75

x<-NULL

x<-rgamma(N[j],3,1) #Genera gama’s

if (sum(x)>15) #Indicadora

S<-S+1

theta1[i]<-S/10000

for(i in 1:1000)

S<-0

for(j in 1:10000)

y<-rgamma(1,3,1)

m<-1 #contador gamas

while(y<=15)

y<-y+rgamma(1,3,1)

m<-m+1

S<-S+(1-ppois(m,3)+dpois(m,3)) #P[N>=m]

theta2[i]<-S/10000

Los resultados fueron los siguientes cuando la variable Poisson tiene parametro3, las variables que se estan sumando tienen distribucion gama (3, 1) y cuandoel objetivo es estimar la probabilidad de que la distribucion Poisson compuestaexceda 15:

Estimador Media Varianza

Normal 0.1564312 1.323447e-05

Esperanza Condicional 0.156424 1.807853e-06

3.2.5. Muestro estratificado

Supongamos que queremos estimar E[X], y ademas conocemos una variablediscreta Y con soporte en y1, y2, ...yk tal que conocemos P [Y = yj ] = pj ,para cualquier j y tal que podamos simular la valores de X dado que Y = yj .

CAPITULO 3. INTEGRACION MONTE CARLO 76

Observemos que usando nuevamente la regla de la esperanza iterada obtenemos:

E[X] =

k∑j=1

E[X|Y = yj ]pj

Observemos que esta ultima igualdad ”sugiere”que en lugar de simular n obser-vaciones para X, tomemos npj observaciones que la distribucion condicional deX dado Y = yj . Nuestro estimador en este caso serıa:

θ =

k∑j=1

X∗j pj

En donde X∗j es el estimador Monte Carlo simple para E[X|Y = yj ]. Es clarode la definicion de este ultimo que:

V ar[X∗j ] =V ar[X|Y = yj ]

npj

Por lo tanto:

V ar[θ] =

k∑j=1

V ar[X∗j ]p2j =

1

n

k∑j=1

V ar[X|Y = yj ]pj =1

nE[V ar[X|Y ]]

Recordando la formula de varianza condicional:

V ar[X] = E[V ar[X|Y ]] + V ar[E[X|Y ]]

Observamos que:

V ar[X]− V ar[θ] =1

nV ar[E[X|Y ]]

Por lo que entre mas afecte el valor de Y a X, mayor reduccion de varianzatendremos.

Ejemplo 3.2.20. Como primer ejemplo consideremos que el numero de si-niestros que recibe una companıa aseguradora tiene distribucion Poisson deparametro λ. Sin embargo el valor de este parametro depende si nuestro ase-gurado, esto es, nuestro asegurado puede ser de bajo, medio o alto riesgo. Estoes si la persona es de bajo riesgo el parametro es λ1, si la persona es de riesgomedio el parametro es λ2 y si es de alto riesgo el parametro es λ3. Si p1,p2 yp3 son las probabilidades de ser de bajo riesgo, riesgo medio y de alto riesgorespectivamente, entonces sabemos que la densidad esta dada por:

p1e−λ1

λx1x!

+ p2e−λ2

λx2x!

+ p3e−λ3

λx3x!

CAPITULO 3. INTEGRACION MONTE CARLO 77

Esta ultima nos dice que el metodo Monte Carlo normal implicarıa simular deesta mezcla. Sin embargo al utilizar muestreo estratificado lo que debemos haceres simplemente simular np1 observaciones de una Poisson λ1, np2 observacionesde λ2 y np3 observaciones de una Poisson λ3 y posteriormente ponderar losestimadores Monte Carlo con sus probabilidades respectivas. A continuacionpresentamos un ejemplo de implementacion en R:

theta1<-NULL

theta2<-NULL

for(i in 1:1000) #usando mezcla

h<-rmultinom(1,10000, prob=c(.75,.20,.05))

x1<-rpois(h[1],.5)

x2<-rpois(h[2],1)

x3<-rpois(h[3],2)

x<-c(x1,x2,x3)

theta1[i]<-mean(x)

for(i in 1:1000) #muestreo estratificado

x1<-rpois(7500,.5)

x2<-rpois(2000,1)

x3<-rpois(500,2)

theta2[i]<-.75*mean(x1)+.2*mean(x2)+.05*mean(x3)

Con la cual obtuvimos la siguiente tabla de comparativos:

Estimador Media Varianza

Normal 0.674843 8.08179744e-05

Muestreo estratificado 0.67508 6.865944e-05

Ejemplo 3.2.21. Ahora retomemos la estimacion de la integral:

E[f(U)] =

1∫0

e−u

1 + u2du

Consideremos la siguiente variable aleatoria dada por:Y = j si U ∈ ((j −1)/m, j/m] para j ∈ 1, 2, 3, ...,m. Es claro entonces que P [Y = j] = 1/m,

CAPITULO 3. INTEGRACION MONTE CARLO 78

y ademas tenemos que:

E[f(U)|Y = j] =E[f(U)I((j−1)/m,j/m](U)

P [Y = j]= m

j/m∫(j−1)/m

e−u

1 + u2du

La ultima integral la podemos estimar utilizando variables uniformes en ((j −1)/n, j/n]. Esto es si U

(j)1 , U

(j)2 , ..., U

(j)n/m son variables aleatorias independientes,

todas con distribucion uniforme en ((j − 1)/n, j/n], entonces:

E[f(U)|Y = j] ≈ θ(j) =

n/m∑k=1

e−U(j)k

1 +(U

(j)k

)2

Por lo que el estimador utilizando muestreo estratificado esta dado por:

θ =

m∑j=1

θ(j) 1

m

A continuacion presentamos un ejemplo de implementacion en R tomando n =10, 000 y m = 10.

theta1<-NULL

theta2<-NULL

for(i in 1:1000) #Monte Carlo Normal

u<-runif(10000)

k<-exp(-u)/(1+u^2)

theta1[i]<-mean(k)

for(i in 1:1000) #M estrat

S<-0

for(j in 1:10) #Estimacion por estratos

v<-runif(1000,(j-1)/10,j/10)

k<-exp(-v)/(1+v^2)

S<- S+ mean(k)

theta2[i]<-S/10

A continuacion presentamos una tabla de comparativos:

CAPITULO 3. INTEGRACION MONTE CARLO 79

Estimador Media Varianza

Normal 0.524808 6.263046e-06

Muestreo estratificado 0.524789 6.372942e-08

Notemos que el ejemplo anterior nos da una manera general cuando condi-ciomos a que intervalo queda nuestra variable. Esto es si Y es de la forma:

Y =

n∑j=1

jI(aj−1,aj ](X)

En donde puede suceder que a0 = −∞ y an = ∞ si es necesario. Entonces setiene que:

E[X|Y = j] =E[XI(aj−1,aj ](X)]

P [Y = j]

Si la variable fuera absolutamente continua entonces la ultima expresion es iguala:

1

P [aj−1 < X ≤ aj ]

aj∫aj−1

xf(x)dx

Esta ultima expresion es la esperanza de X(j) en donde esta ultima variabletiene densidad dada por f(x)/P [X ∈ (aj−1, aj ]]. Por lo que si denotamos porθj al estimador de E[X(j)], entonces el estimador de E[X] usando muestreoestratificado serıa:

θ =

n∑j=1

θjP [aj−1 < X ≤ aj ]

A continuacion presentamos otro ejemplo de implementacion de este algoritmo:

Ejemplo 3.2.22. Utilizaremos el metodo anterior para el problema de la esti-macion de π. En virtud del ejemplo 3.2.17 sabemos que si U tiene distribucionuniforme en (0, 1) entonces:

4E[√

1− U2] = π

Considerando la particion 0, 1/m, 2/m, ...1 tenemos que:

E[√

1− U2|(j − 1)/m < U ≤ j/m] = m

j/m∫(j−1)/m

√1− u2du

La implementacion en R es la siguiente:

CAPITULO 3. INTEGRACION MONTE CARLO 80

theta1<-NULL

theta2<-NULL

for(i in 1:1000) #Normal

u<-runif(10000)

k<-4*sqrt(1-u^2)

theta1[i]<-mean(k)

for(i in 1:1000)

S<-0

for(j in 1:10) #10 estratos

u<-runif(1000,(j-1)/10,j/10)

k<-4*sqrt(1-u^2)

S<- S+ mean(k)

theta2[i]<-S/10

Con la cual obtuvimos los siguientes resultados:

Estimador Media Varianza

Normal 3.141175 7.550971e-05

Muestreo estratificado 3.141531 2.596354e-06

3.3. Bootstrap

Muchas veces puede ocurrir que tengamos las observaciones de cierta dis-tribucion, sin saber necesariamente cual es la distribucion verdadera. Esto secomplica aun mas si nuestro objetivo es estimar la distribucion de alguna es-tadıstica; el metodo bootstrap trata de resolver dicho problema. Sin embargo,antes de explicar en que consiste este metodo, primero recordaremos una defi-nicion que sera de gran utilidad.

Definicion 1. Sea X1, X2, ...Xn variables aleatorias independientes, todas confuncion de distribucion comun F , se define la funcion de distribucion empıricacomo:

Fn(x) =1

n

n∑j=1

I(−∞,x](Xj)

CAPITULO 3. INTEGRACION MONTE CARLO 81

Por ejemplo si nuestra datos fueran 5,−2, 2, 5, 0, 1, 2, 3,−1, 0, 0 entoncesla funcion de distribucion empırica asociada es la siguiente:

Fn(x) =

0 si x < −2,

1/11 si − 2 ≤ x < −1,

2/11 si − 1 ≤ x < 0,

5/11 si 0 ≤ x < 1,

6/11 si 1 ≤ x < 2,

8/11 si 2 ≤ x < 3,

9/11 si 3 ≤ x < 5,

1 si x ≥ 5,

Regresando a la definicion de la funcion de distribucion empırica notemos queen virtud de la ley fuerte de los grandes numeros tenemos que:

Fn(x) =1

n

n∑j=1

I(−∞,x](Xj)c.s.−−→ F (x)

Sin embargo existen resultados mas fuertes que este ultimo, como lo es el teoremade Glivenko Cantelli el cual establece que:

supx∈R|F (x)− Fn(x)| c.s.−−→ 0

Esto es, la convergencia es uniforme. Esto establece que conforme n es grandeFn aproxima a F en todos sus puntos.Observemos que si tenemos X∗, cuya funcion de distribucion es la distribucionempırica de X entonces tenemos que la media de X∗:

E[X∗] =1

n

n∑j=1

xi = x

Mientras que su varianza esta dada por:

V ar[X∗] = E[(X∗ − x)2] =1

n

n∑j=1

(xi − x)2

Notemos que estas cantidades son tecnicamente iguales a nuestros estimadores’clasicos’.

CAPITULO 3. INTEGRACION MONTE CARLO 82

De manera mas general,si queremos estimar la distribucion de θ , el meto-do bootstrap consiste en generar n numeros aleatorios(donde n es el numerode observaciones que se tienen de la muestra) con distribucion uniforme en1, 2, 3, ..., n a los cuales llamaremos i1, i2, ...in para posteriormente quedar-nos con las observaciones xi1 , xi2 , ...xin. Con esta muestra calculamos θ1. Pos-teriormente repetimos el procedimiento hasta obtener la muestra θ1, θ2, ...θb ycon la distribucion empırica de estas observaciones, estimamos la distribucion’real’ de θ. En cuyo caso por ejemplo tenemos que el estimador bootstrap de lamedia de la θ serıa:

θ =1

b

b∑j=1

θj

Mientras que el estimador bootstrap de la varianza de θ es:

1

b− 1

b∑j=1

(θj − θ)2

A continuacion presentamos unos ejemplos:

Ejemplo 3.3.1. Empecemos estimando a la distribucion de la media de unadistribucion. Lo que establecerıa nuestro algoritmo es lo siguiente:

Algoritmo 3.3.1. Algoritmo bootstrap para estimar la distribucion de la me-dia.

i) Encontrar la funcion de distribucion empırica Fn

ii) Para b ∈ 1, 2, ...B generar X(b)1 , X

(b)2 , ...X

(b)n con funcion de distribucion

Fn.

iii) Calcular la media de cada muestra, esto es:

µb =1

n

n∑j=1

X(b)j

iv) La funcion de distribucion empırica de µ1, ...µB es la estimacion de lafuncion de distribucion de X.

A continuacion presentamos un ejemplo de implementacion:

x<-rnorm(100,5,1) #Distribucion original

BOOT<-NULL

for(i in 1:10000)

j<-sample(1:100, size=100, replace = TRUE)

muestra<-x[j] #Remuestreo

BOOT[i]<-mean(muestra)

CAPITULO 3. INTEGRACION MONTE CARLO 83

mean(BOOT) #Estimador bootstrap para la media

var(BOOT) #Est bootstrap para la varianza

Hacemos notar que en la implementacion anterior, la muestra original erannormales, por lo que sabemos que X tiene distribucion normal de media µy varianza σ2/n. En nuestro caso la media es 5 y la varianza es 1, mientrasel tamano de muestra es 100; los estimadores bootstrap para la media y lavarianza fueron 5.065896 y 0.01061359 respectivamente, asemejando el resultadoque conocıamos por la teorıa.

Ejemplo 3.3.2. Ahora consideramos la estimacion de la distribucion de S2 endonde:

S2 =1

n− 1

n∑j=1

(Xj − X)2

El algoritmo que nos darıa el algorimo Bootstrap es el siguiente:

Algoritmo 3.3.2. Estimacion de la distribucion de S2

i) Encontrar la funcion de distribucion empırica Fn

ii) Para b ∈ 1, 2, ...B generar X(b)1 , X

(b)2 , ...X

(b)n con funcion de distribucion

Fn.

iii) Calcular la media de cada muestra, esto es:

Sb =1

n− 1

n∑j=1

(X(b)j − X

(b))2

iv) La funcion de distribucion empırica de S1, ...Sb es la estimacion de lafuncion de distribucion de S2.

Un ejemplo de implementacion en R es el siguiente:

x<-rnorm(100,3,2) #Distribucion real

BOOT<-NULL

for(i in 1:100000)

j<-sample(1:100, size=100, replace = TRUE)

sample<-x[j] #Remuestreo

BOOT[i]<-var(sample)

mean(BOOT) #Estimacion Bootstrap

var(BOOT)

Notemos que nuevamente usamos como distribucion original para la muestra ladistribucion normal. En este caso sabemos que (n− 1)S2/σ2 tiene distribucionji-cuadrada de n grados de libertad. En consecuencia E[S2] = σ2 y V ar[S2] =

CAPITULO 3. INTEGRACION MONTE CARLO 84

2σ4/(n−1). En nuestro caso el valor de σ2 es 4, lo que nos dice que la esperanzay la varianza de S2 son 4 y.3232 respectivamente, mientras que los estimadoresbootstrap que obtuvimos fueron 4.592031 y 0.3952719 respectivamente.

Ejemplo 3.3.3. El siguiente ejemplo muestra como se implementarıa el metodobootstrap cuando nuestro estimador objetivo es la covarianza:

Sigma<-matrix(c(1,-.25,-.25,1),nrow=2,ncol=2)

C<-chol(Sigma)

z<-matrix(rnorm(100*2), nrow=100, ncol=2)

x<-z%*%C #Observaciones

x1<-x[,1]

x2<-x[,2]

BOOT<-NULL

for(i in 1:10000) #Estimacion Bootstrap

j<-sample(1:100, size=100, replace = TRUE)

S1<-x1[j]

S2<-x2[j]

BOOT[i]<-cov(S1,S2)

theta<-NULL #Estimacion usando la distribucion real

for(i in 1:10000)

z<-matrix(rnorm(100*2), nrow=100, ncol=2)

x<-z%*%C

x1<-x[,1]

x2<-x[,2]

theta[i]<-cov(x1,x2)

Hacemos notar que la distribucion original en nuestro ejemplo era normal bi-variada, por lo que comparamos el estimador Bootstrap con la estimacion quese obtendrıa de la covarianza muestral, usando la distribucion real. La mediay la varianza de nuestro estimador bootstrap fue de -0.2303358 y 0.01211661respectivamente, mientras que la media y varianza de nuestro estimador usandola distribucion real fue de -0.2512379 y 0.0110936. Notemos que los resultadosson muy similares, sin embargo, el estimador bootstrap puede ser muy ’sensible’,dependiendo de la muestra.

3.3.1. Intervalos de confianza

La estimacion Bootstrap tambien permite la construccion de intervalos deconfianza. Por ejemplo el intervalo de confianza ’equivalente’ al intervalo t pa-ra la media de un estimador se construirıa de la siguiente manera: generamos

CAPITULO 3. INTEGRACION MONTE CARLO 85

Z1, Z2, ...ZB donde

Zj =θj − θ√S2j

En donde θj es el valor estimado de la media de θ usando la tecnica de re-muestreo, S2

j la varianza de la j-esima muestra bootstrap, la cual generalmente

es desconocida, por lo que se debe estimar; y θ el valor estimado que se tieneusando la muestra original. Entonces el ’intervalo t’ usando bootstrap serıa:

(θ + t(1−α/2) ∗√S2, θ + t(α/2) ∗

√S2

Donde nuevamente S2 es la estimacion bootstrap de la varianza de nuestroestimador y donde t(α) es tal que:

|Zj |Zj ≤ t(α)

|

B= α

Notemos que la idea detras de este intervalo, es similar a la construccion deun intervalo para la media de una normal con la varianza desconocida , sinembargo, aun en ese caso, los resultados obtenidos son en general distintos. Elsiguiente ejemplo muestra una aplicacion de este intervalo:

x<-rnorm(100)

stat<-NULL

RB<-NULL

stat0<-mean(x)

for(i in 1:10000)

j<-sample(1:100, size=100, replace = TRUE)

muestra<-x[j]

stat[i]<-mean(muestra) #obtencion estadıstico

for(k in 1:1000) #encuentra la desv estimada

#para cada iteracion

l<-sample(1:100, size=100, replace = TRUE)

Reboot<-muestra[l]

RB[k]<-mean(Reboot)

desv<-sd(RB)

t.stat<-(stat-stat0)/desv #Calcula "t"’s

desvest<-sd(stat) #estima varianza

q<-quantile(t.stat,c(.05,.95)) #encuentra cuantiles

names(q)<-rev(names(q)) #cambia nombres a los cuantiles

intlow<-stat0-q[2]*desvest

intup<-stat0-q[1]*desvest

CAPITULO 3. INTEGRACION MONTE CARLO 86

Otro tipo de intervalo Bootstrap es el denominado ’intervalo de percentiles’, elcual se define como:

[θlo, θup] = [ ˆG−1(α/2), ˆG−1(1− α/2)]

Donde G representa la distribucion bootstrap de nuestro estimador. Natural-mente la funcion de cuantiles de esta distribucion no es conocida, por lo que esnecesario estimarla. Nuestro algoritmo quedarıa ası:

Algoritmo 3.3.3. Intervalo de percentiles.

i) Encontrar la funcion de distribucion empırica Fn

ii) Para b ∈ 1, 2, ...B generar X(b)1 , X

(b)2 , ...X

(b)n con funcion de distribucion

Fn.

iii) Para cada b ∈ 1, 2, ...B encontrar el estadıstico de interes θ(b)

iv) Encontrar los cuantiles muestrales α/2 y 1− α/2. de θ(1), θ(2), ...θ(B)

iv El intervalo deseado es [θα/2, θ1−α/2].

A continuacion presentamos un ejemplo en R:

x<-rnorm(100) #datos originales

BOOT<-NULL

for(i in 1:10000) #Genera observaciones del estadıstico

j<-sample(1:100, size=100, replace = TRUE)

muestra<-x[j]

BOOT[i]<-mean(muestra)

thetalow<-quantile(BOOT,.05) #Extremo inferior intervalo

thetaup<-quantile(BOOT,.95) #Extremo superior intervalo

Puede ser que este intervalo tenga algunas fallas y no se acerque a los inter-valos reales cuando estos pueden ser calculados de manera directa y exacta. Unade las propuestas que se ha hecho para corregir estos inconvenientes es la inter-valo BCa cuyas siglas significan ’bias-corrected and accelerated’. El intervalo delongitud 1− α en este caso esta dado por:

[θα1 , θα2 ]

En donde :

α1 = Φ

(z0 +

z0 + z(α/2)

1− a(z0 + z(α/2))

)α2 = Φ

(z0 +

z0 + z(1−α/2)

1− a(z0 + z(1−α/2))

)

CAPITULO 3. INTEGRACION MONTE CARLO 87

Aquı Φ corresponde a la funcion de distribucion de una normal estandar y z(α)

corresponde al cuantil α de la distribucion normal estandar. Finalmente z0 y acorresponden a la correccion por sesgo y correccion por aceleracion respectiva-mente y se calculan como:

z0 = Φ−1

(| θ

(b) < θ|B

)

a =

n∑j=1

(θ(.) − θ(i)

)3

6

[n∑j=1

(θ(.) − θ(i)

)2]3/2

Donde θ(i) denota el estimador, quitando la i-esima observacion de la muestraoriginal y :

θ(.) =1

n

n∑j=1

θ(i)

A continuacion presentamos un ejemplo en R:

x<-rnorm(100) #Los datos

BOOT<-NULL

BIAS<-NULL

mu<-mean(x) #Estadıstico

for(i in 1:10000) #Muestras bootstrap

j<-sample(1:100, size=100, replace = TRUE)

muestra<-x[j]

BOOT[i]<-mean(muestra)

z0<-qnorm(sum(BOOT<mu)/10000) #Factor aceleracion

for(i in 1:100)

BIAS[i]<-mean(x[-i])

L<-mean(BIAS)-BIAS

a<-sum(L^3)/(6*(sum(L^2))^(1.5)) #Factor de sesgo

alpha1<-pnorm(z0+(z0+qnorm(.05))/(1-a*(z0+qnorm(.05))))

alpha2<-pnorm(z0+(z0+qnorm(.95))/(1-a*(z0+qnorm(.95))))

thetalow<-quantile(BOOT,alpha1)

thetaup<-quantile(BOOT,alpha2)

Capıtulo 4

Algoritmos MCMC

El objetivo de los algoritmos de Monte Carlo vıa Cadenas de Markov (MCMC)es construir una cadena de Markov, tal que, con la estructura adecuada, tengacomo distribucion lımite a la distribucion que es nuestro objetivo simular. Acontinuacion presentamos dos de los algoritmos mas utilizados.

4.1. Algoritmo de Metropolis Hastings

Empezamos por desarrollar el algoritmo de Metropolis Hastings, primero enel caso discreto. Para esto recordemos que si tenemos una cadena de Markovhomogenea, la matriz de transicion se define como:

Px,y = P [Xn+1 = y|Xn = x]

Es posible demostrar que la matriz de transicion a n pasos es Pn. Con estadefinicion decimos que una cadena es irreducible si para cualesquiera estadosx y y existe una n, tal que la probabilidad de pasar de x a y en n pasos esestrictamente positiva. Otro concepto importante que tenemos que recordar, esel hecho de que una cadena sea aperiodica lo que significa que para cualquierestado x existe un numero n tal que:

P [Xn+1 = x|X0 = x] > 0 P [Xn = x|X0 = x] > 0

Ahora bien, para una cadena de Markov, decimos que Π es una distribucion esinvariante para la cadena si ΠP = Π. En este caso es posible probar que si esirreducible y aperiodica con distribucion estacionaria Π, entonces

lımn→∞

P [Xn = x] = πx

Finalmente decimos que la cadena es reversible en el tiempo si πxpxy = πypyx.Con estos conceptos en mente, proseguimos a desarrollar el algoritmo de Metropolis-Hastings en el caso discreto.

88

CAPITULO 4. ALGORITMOS MCMC 89

Supogamos que queremos simular una variable aleatoria discreta tal que P [X =x] = πx Si consideramos la matriz de transicion de una cadena de Markovirreducible y aperiodica, tal que sus probabilidades de transicion son q(x, y),entonces construimos una cadena de Markov tal que:

pxy = q(x, y)α(x, y) x 6= y

pxx = q(x, x) +∑z 6=x

q(x, z)(1− α(x, z))

Esto es, generamos un nuevo valor y si dicho valor es distinto con probabili-dad α(x, y) lo aceptamos, si no nos quedamos igual. Para que esta cadena seareversible necesitamos que:

πxq(x, y)α(x, y) = πyq(y, x)α(y, x)

lo cual nos lleva a que:

α(x, y) = mın

(πyq(y, x)

πxq(x, y), 1

)Notemos entonces que la distribucion lımite es Π.Entonces nuestro algoritmo queda de la siguiente forma:

Algoritmo 4.1.1. Algoritmo de Metropolis-Hastings para variables discretas

i) Escoger una matriz de transicion correspondiente a una cadena de Markovirreducible y aperiodica, con probabilidades de transcion q(x, y).

ii) Escoger un valor inicial z.

iii) Generar una variable aleatoria Y tal que P [Y = y] = q(Xn, y).

iv) Generar U con distribucion uniforme (0, 1) y si:

U <πY q(Y,Xn)

πXnq(Xn, Y )

hacer Xn+1 = Y , si no Xn+1 = Xn.

A continuacion presentamos unos ejemplos de implementacion:

Ejemplo 4.1.1. Primero presentamos un ejemplo donde nuestra distribucionobjetivo es la distribucion uniforme en 0, 1, 2, ...n. Para esto consideraremoscomo funcion de transicion a:

q(x, y) =n!

y!(n− y)!

(x+ 1

x+ 2

)y (1

x+ 2

)n−yEsto es una distribucion binomial de parametros (n, (x + 1)/(x + 2)). Nuestraprobabilidad de aceptacion estarıa dada por:

mın

y!(n− y)!(y + 1)x(x+ 2)n

x!(n− x)!(y + 2)n(x+ 1)y, 1

Por lo que la implementacion es la siguiente:

CAPITULO 4. ALGORITMOS MCMC 90

x<-3 #Inicial

for(i in 1:10000) #Empieza la cadena

y<-rbinom(1,4,(x+1)/(x+2))

if( runif(1)<dbinom(x,4,(y+1)/(y+2))/dbinom(y,4,(x+1)/(x+2)))

x<-y

MH<-NULL

for(i in 1:20000) #Empieza almacenar valores

y<-rbinom(1,4,(x+1)/(x+2))

if( runif(1)<dbinom(x,4,(y+1)/(y+2))/dbinom(y,4,(x+1)/(x+2)))

x<-y

MH[i]<-x

else

MH[i]<-x

z<-sort(unique(MH))

rbind(table(MH)/20000)

Ejemplo 4.1.2. Supongamos que queremos simular una variable aleatoria talque su funcion de probabilidad tal que:

f(x) ∝ 1

(x+ 1)2x ∈ 0, 1, ...

Para esto consideremos la matriz de transicion dada por:

q(x, y) =e−(x+1)(x+ 1)y

y!

Esto es estamos utilizando una distribucion Poisson de parametro x+1. Notemosque en este caso si X = y y Xn = x tenemos que:

πXq(X,Xn)

πXnq(Xn, X)=

(x+ 1)(x+ 2)y+1

(y + 1)(y + 2)x+1

Por lo que nuestro algoritmo queda de la siguiente manera:

CAPITULO 4. ALGORITMOS MCMC 91

i) Tomar un valor inicial X0 = x

ii) Generar una Y con distribucion geometrica con probabilidad de exito (x+1)/(x+ 2).

iii) Generar U con distribucion uniforme (0, 1) y dado que Y = y si:

U <(y + 1)x−2y!ex−y

(x+ 1)y−2x!

Hacer Xn+1 = y, si no hacer Xn+1 = x.

iv) Repetir desde el paso 2

A continuacion presentamos su implementacion en R:

x<-3 #Semilla

for(i in 1:10000) #Inicia cadena

y<-rpois(1,x+1) #Genera candidato a nuevo valor

if( runif(1)< (x+1)^2 *dpois(x,y+1)/(dpois(y,x+1)*(y+1)^2))

x<-y

MH<-NULL #Empieza a almacenar.

for(i in 1:20000)

y<-rpois(1,x+1)

if( runif(1)< (x+1)^2 *dpois(x,y+1)/(dpois(y,x+1)*(y+1)^2))

x<-y

MH[i]<-x

else

MH[i]<-x

Por supuesto tambien es posible aplicar una idea similar al ejemplo anterior,ahora utilizando una distribucion geometrica como lo indica el siguiente codigo:

x<-3 #Semilla

for(i in 1:10000) #Inicia la cadena

y<-rgeom(1,(x+1)/(x+2)) #Genera geometrica

if( runif(1)< (x+1)^2 *dgeom(x,(y+1)/(y+2))/(dgeom(y,(x+1)/(x+2))*(y+1)^2))

CAPITULO 4. ALGORITMOS MCMC 92

x<-y

MH<-NULL #Ahora si almacena valores

for(i in 1:20000)

y<-rgeom(1,(x+1)/(x+2))

if( runif(1)< (x+1)^2 *dgeom(x,(y+1)/(y+2))/(dgeom(y,(x+1)/(x+2))*(y+1)^2))

x<-y

MH[i]<-x

else

MH[i]<-x

z<-sort(unique(MH))

w<- (6/pi^2)*(1/(z+1)^2)

rbind(table(MH)/20000,w)

Una vez que tenemos la idea de como funciona el algoritmo para variablesdiscretas, podemos ver el algoritmo para variables continuas. La idea es la mis-ma, solo que ahora en lugar de probabilidades de transicion necesitamos unkernel de transicion. Entonces si nuestro objetivo es simular observaciones de fel algoritmo de Metropolis Hastings es el siguiente:

Algoritmo 4.1.2. Algoritmo de Metropolis-Hastings para variables continuas

i) Escoger un kernel de transicion, g(•|Xn) correspondiente a una cadena deMarkov irreducible y aperiodica.

ii) Escoger un valor inicial x0.

iii) Generar una variable aleatoria Y con densidad g(•|Xn).

iv) Generar U con distribucion uniforme (0, 1) y si :

U <f(Y )g(Xn|Y )

f(Xn)g(Y |Xn)

hacer Xn+1 = Y , si no Xn+1 = Xn.

Hacemos notar que al igual que en el caso discreto, no es necesario conocertoda la densidad para usar el algoritmo, basta conocer el kernel.

CAPITULO 4. ALGORITMOS MCMC 93

Ejemplo 4.1.3. Supongamos que nuestra funcion de densidad es de la forma:

f(x) ∝ (v + x2)−(v+1)/2 v > 0 x ∈ R

Puesto que necesitamos que nuestra distribucion lımite tenga soporte en todoslos reales, necesitamos una densidad que tenga soporte en todo los reales , porlo cual tomaremos la normal estandar, por lo que nuestro kernel de transiciones:

g(y|x) =1√2πe−(y−x)2

Por lo que la probabilidad de aceptar nuestra nueva observacion serıa:

f(Y )g(Xn|Y )

f(Xn)g(Y |Xn)=

(n+ x2

n+ y2

)v + 1

2

Por lo que nuestro algoritmo es el siguiente:

i) Tomar un valor inicial X0 = x

ii) Generar una Y con distribucion normal de media x y varianza 1.

iii) Generar U con distribucion uniforme (0, 1) y dado que Y = y si:

U <

(n+ x2

n+ y2

)v + 1

2

Hacer Xn+1 = y, si no hacer Xn+1 = x.

iv) Repetir desde el paso 2

x<-0 #semilla

for(i in 1:20000) #Inicializa cadena

y<-rnorm(1,x,1) #candidato a transicion

if( runif(1)< ((10+x^2)/(10+y^2))^(11/2))

x<-y

MH<-NULL

for(i in 1:20000) #Empieza a almacenar

y<-rnorm(1,x,1)

if( runif(1)< ((10+x^2)/(10+y^2))^(11/2))

x<-y

MH[i]<-x

CAPITULO 4. ALGORITMOS MCMC 94

else

MH[i]<-x

mean(MH)

var(MH)

hist(MH)

Finalmente, hacemos la observacion que el kernel que pusimos corresponde a unadistribucion t-Student, por lo que esta forma de simularla es una alternativa ahacer la transformacion e incluso nos da una manera de obtener observacionesde esta distribucion, cuando los grados de libertad no son enteros.

Ejemplo 4.1.4. Al igual que en el caso discreto, el algoritmo de Metropolis-Hastings nos permite simular densidades en donde unicamente conocemos sukernel. Por ejemplo si consideramos:

f(x) ∝ 1

1 + x4I(0,∞)(x)

Como funcion de transicion proponemos la densidad gama:

g(y|x) =yx−1e−y

Γ(x)I(0,∞)(x)

Por lo que el codigo correspondiente es el siguiente:

x<-50 #Inicial

for(i in 1:30000) #Inicia cadena

y<-rgamma(1,x,1)

if( runif(1)< (dgamma(x,y,1)/dgamma(y,x,1))*((1+x^4)/(1+y^4)))

x<-y

MH<-NULL

for(i in 1:50000) #Empieza a almacenar

y<-rgamma(1,x,1)

if( runif(1)< (dgamma(x,y,1)/dgamma(y,x,1))*((1+x^4)/(1+y^4)))

x<-y

MH[i]<-x

else

CAPITULO 4. ALGORITMOS MCMC 95

MH[i]<-x

4.2. Algoritmo de Gibbs

El algoritmo de Gibbs es un caso particular del algoritmo de Metropolis-Hastings que es generalmente usado para simular observaciones de un vectoraleatorio (X1, ..., Xm).La idea del algoritmo es calcular para toda j ∈ 1, 2, ...,mcalculamos la densidad condicional de Xj dada las demas variables, esto es:

f(xj |x1, x2, ...xj−1, xj+1, ..., xm)

Con esta condicional simulamos el siguiente valor de Xj ; formalmente tenemoslo siguiente:

Algoritmo 4.2.1. Algoritmo de Gibbs

i) Iniciar con una semilla x(0)1 , x

(0)2 , ...x

(0)m .

ii) Para cada coordenada j ∈ 1, 2, ...m generar una observacion de:

f(xj |x(n+1)1 , x

(n+1)2 , ...x

(n+1)j−1 , x

(n)j+1, ..., x

(n)m )

Y hacer X(n+1)j el valor observado.

iii) Nuestra n+ 1 observacion es (X(n+1)1 , ..., X

(n+1)m ), regresar al paso ii.

Ejemplo 4.2.1. Como primer ejemplo tomaremos el caso de la normal biva-riada:

exp− 1

2(1− ρ2)

[(x− µxσx

)2

+

(y − µyσy

)2

− 2ρ(x− µx)(y − µy)

σxσy

]

2π√σ2xσ

2y(1− ρ2)

Las densidades condicionales son:

X|Y = y ∼ N(µx + ρ(σx/σy)(y − µy), (1− ρ2)σ2x)

Y |X = x ∼ N(µy + ρ(σy/σx)(x− µx), (1− ρ2)σ2y)

Por lo que nuestro algoritmo quedarıa:

Algoritmo 4.2.2. Generacion de una normal bivariada usando el algoritmo deGibbs.

i) Tomar un valor inicial x(0)

CAPITULO 4. ALGORITMOS MCMC 96

ii) Generar Yn con distribucion normal de media µy + ρ(σy/σx)(x(n) − µx) yvarianza (1− ρ2)σ2

y.

ii) Generar Xn con distribucion normal de media µx+ρ(σx/σy)(y−µy) y varianza(1− ρ2)σ2

x

iii) Nuestra observacion n-esima es (Xn, Yn)

X<-NULL

Y<-NULL

mx<- 2 #Datos

my<- -3

vx<-4

vy<-9

rho<- .5

x<-2 #Valor inicial

for (i in 1:5000) #Inicia cadena

y<-rnorm(1,my+ rho*(x-mx)*sqrt(vy/vx),sqrt(vy*(1-rho^2)))

x<-rnorm(1,mx+ rho*(y-my)*sqrt(vx/vy),sqrt(vx*(1-rho^2)))

for (i in 1:10000) #Empieza almacenar los valores

y<-rnorm(1,my+ rho*(x-mx)*sqrt(vy/vx),sqrt(vy*(1-rho^2)))

x<-rnorm(1,mx+ rho*(y-my)*sqrt(vx/vy),sqrt(vx*(1-rho^2)))

Y[i]<-y

X[i]<-x

Ejemplo 4.2.2. Supongamos que tenemos el siguiente modelo:

f(x1, x2, x3) ∝ exp−(θ1x1 + θ2x2 + θ3x3 + θ1,2x1x2 + θ1,3x1x3 + θ2,3x2x3)

Nuestro objetivo es estimar la constante de la normalizacion c. Por comodidaddenotaremos a la funcion de arriba sin la constante de proporcionalidad comog(x1, x2, x3). Notemos entonces que:

c =

∫dP

g(x1, x2, x3)

Ahora proseguimos a calcular las densidades condicionales. Notemos que:

f(x1|x2, x3) ∝ exp−x1(θ1 + x2θ1,2 + x3θ1,3)

f(x2|x1, x3) ∝ exp−x2(θ2 + x1θ1,2 + x3θ2,3)f(x3|x1, x2) ∝ exp−x3(θ3 + x1θ1,3 + x2θ2,3)

Notemos que las condicionales corresponden al kernel de una distribucion expo-nencial, por lo que simular de ellas es sencillo.

CAPITULO 4. ALGORITMOS MCMC 97

i) Tomar dos valores iniciales x(0)1 y x

(0)2 .

ii) Generar X(t+1)3 con distribucion exponencial de parametro θ3 + x

(t)1 θ1,3 +

x(t)2 θ2,3.

iii) GenerarX(t+1)1 con distribucion exponencial de parametro theta1+x

(t)2 θ1,2+

x(t+1)3 θ1,3 .

iv) Generar X(t+2)2 con distribucion exponencial de parametro θ2+x

(t+1)1 θ1,2+

x(t+1)3 θ2,3.

Una vez con esto lo unico que hacemos es estimar c como :

c ≈ 1

n

n∑j=1

1

g(X(j+m)1 , X

(j+m)2 , X

(j+m)3 )

C<-NULL

#Valores parametros

t1<-1

t2<-1

t3<-1

t12<-1.5

t13<-3

t23<-1

x1<-1

x2<-1

#Inicia cadena

for(i in 1:30000)

x3<-rexp(1,t3+t13*x1+t23*x2)

x1<-rexp(1,t1+t12*x2+t13*x3)

x2<-rexp(1,t2+t12*x1+t23*x3)

#Almacena valores

for(i in 1:100000)

x3<-rexp(1,t3+t13*x1+t23*x2)

x1<-rexp(1,t1+t12*x2+t13*x3)

x2<-rexp(1,t2+t12*x1+t23*x3)

C[i]<-exp((t1*x1+t2*x2+t3*x3+t12*x1*x2+t13*x1*x3+t23*x2*x3))

mean(C)

Ejemplo 4.2.3. El siguiente ejemplo tiene por objetivo modelar un punto decambio. Esto es, tenemos observaciones en el tiempo, de tal modo que existe unpunto k tal que si t ≤ k entonces Xt tiene distribucion Poisson µ y para valores

CAPITULO 4. ALGORITMOS MCMC 98

t > k se tiene que Xt tiene distribucion Poisson λ. Para esto trabajaremos conla base de datos coal la cual se encuentra dentro de la librerıa boot de R, la cualnos da el numero de accidentes que se registraron en minas de carbon desde1851 hasta 1962. La siguiente grafica nos muestra el numero de accidentes endicho perıodo, en donde podemos observar que aproximadamente en el ano 1900la tasa de accidentes se reduce.El modelo bayesiano a utilizar es el siguiente: si Yj es el numero de accidentes

Figura 4.1: Accidentes en minas de carbon

en el ano j, en donde j = 1 representa el ano 1851 y j = 112 representa el ano1962. Entonces tenemos que:

Yj ∼ Poisson(µ) j = 1, 2, ...k

Yj ∼ Poisson(λ) j = k + 1, ...112

Ahora necesitamos las distribuciones apriori de los parametros, por lo que pro-seguiremos a utilizar las siguientes distribuciones no informativas:

k ∼ Unif1, 2, ..., n

µ ∼ gama(.5, b1)

λ ∼ gama(.5, b2)

En donde a su vez se tiene que:

bj ∼ exp(1)

Para poder hacer alguna deduccion sobre k necesitamos simular el modelo, paraesto utilizamos el algoritmo de Gibbs. Para encontrar las condicionales primeroescribimos f(y, k, λ, µ, b1, b2) y proseguimos a ver que es lo que depende denuestra variable objetivo, obteniendo lo siguiente:

µ|y, λ, b1, b2, k ∼ gama(.5 +

k∑j=1

Yj , k + b1)

CAPITULO 4. ALGORITMOS MCMC 99

λ|y, µ, b1, b2, k ∼ gama(.5 +

n∑j=k+1

Yj , n− k + b2)

b1|y, µ, λ, b2, k ∼ gama(.5, µ+ 1)

b2|y, µ, λ, b1, k ∼ gama(.5, λ+ 1)

f(k|y, µ, λ, b1, b2) ∝ ek(λ−µ)(µλ

) k∑j=1

Yj

Con esto proseguimos a implementar el codigo en R:

library(boot) #Obtiene informacion

data(coal)

year<-floor(coal)

y<-table(year)

plot(y)

#Coloca informacion en formato adecuado

y<-floor(coal[[1]])

y<-tabulate(y)

y<-y[1851:length(y)]

n<-length(y)

mu<-NULL

lambda<-NULL

k<-NULL

L<-NULL

#Valores iniciales

k[1]<-sample(1:n,1)

b1<-1

b2<-1

#Perıdo de calentamiento

for(i in 1:10000)

kt<-k[1]

#Genera mu

r<-.5+sum(y[1:kt])

mu[1]<-rgamma(1,r,kt+b1)

#Genera lambda

if(kt+1>n)

r<-.5+sum(y)

CAPITULO 4. ALGORITMOS MCMC 100

else

r<-.5+sum(y[(kt+1):n])

lambda[1]<-rgamma(1,r,n-kt+b2)

#Genera b1 y b2

b1<-rgamma(1,.5,mu[1]+1)

b2<-rgamma(1,.5,lambda[1]+1)

#Genera k

for(j in 1:n)

L[j]<-exp((lambda[1]-mu[1])*j)*

(mu[1]/lambda[1])^sum(y[1:j])

L<-L/sum(L)

k[1]<-sample(1:n,prob=L,size=1)

#Almacena valores

for(i in 2:20001)

kt<-k[i-1]

#Genera mu

r<-.5+sum(y[1:kt])

mu[i]<-rgamma(1,r,kt+b1)

#Genera lambda

if(kt+1>n)

r<-.5+sum(y)

else

r<-.5+sum(y[(kt+1):n])

lambda[i]<-rgamma(1,r,n-kt+b2)

#Genera b1 y b2

b1<-rgamma(1,.5,mu[i]+1)

b2<-rgamma(1,.5,lambda[i]+1)

#Genera k

for(j in 1:n)

CAPITULO 4. ALGORITMOS MCMC 101

L[j]<-exp((lambda[i]-mu[i])*j)*

(mu[i]/lambda[i])^sum(y[1:j])

L<-L/sum(L)

k[i]<-sample(1:n,prob=L,size=1)

Nuestros resultados obtenidos es que la media del punto de cambio es aproxima-damente 39.94, congruente con el perıodo que habıamos observado graficamente,mientras que la media de accidentes antes del punto de cambio (µ) es de 3.12 yla media de accidentes despues del punto de cambio (λ) es de .9254.

Capıtulo 5

Otros temas

5.1. Cadenas de Markov a tiempo discreto

Si bien ya se vio como generar cadenas de Markov a tiempo discreto cuandose trabajo el algoritmo de Metropolis-Hastings, a continuacion presentamos unbreve recordatorio. Para simular una cadena de Markov simplemente necesita-mos simular una observacion de la distribucion inicial, para despues generar deacuerdo a la matriz de transicion de la cadena de Markov.

i) Generar X0 acorde a la distribucion inicial.

ii) Hacer x = X0 y para j = 1, ...n

iii) Generar Y de acuerdo a la matriz de transicion q(x, y).

iv) Hacer Xj = y = x e ir al paso 3.

Un ejemplo en R es el siguiente:

x<-NULL

inicial<-c(0,1/3,1/2,1/6) #Probabilidad inicial

x[1]<-sample(1:4,prob=inicial,size=1)

for(i in 2:10000)

if(x[i-1] ==1 ) #Genera de q(1,y)

x[i]<-sample(1:4,prob=c(0,1/3,1/2,1/6),size=1)

if(x[i-1] == 2) #Genera de q(2,y)

x[i]<-sample(1:4,prob=c(1/6,0,1/3,1/2),size=1)

if(x[i-1] == 3) #Genera de q(3,y)

102

CAPITULO 5. OTROS TEMAS 103

x[i]<-sample(1:4,prob=c(1/2,1/6,0,1/3),size=1)

if (x[i-1] == 4) #Genera de q(4,y)

x[i]<-sample(1:4,prob=c(1/3,1/2,1/6,0),size=1)

y<-sort(unique(x))

rbind(table(x)/10000)

5.2. Proceso Poisson

Un proceso Poisson N(t)t≥0 de parametro λ es un proceso de conteo atiempo continuo que satisface las siguientes tres propiedades:

i) N(0) = 0

ii) Tiene incrementos independientes.

iii) Para cualquier t, s > 0 se tiene que N(t + s) − N(s) tiene distribucionPoisson de parametro λt.

Es posible demostrar que bajo estas condiciones los tiempos de interarribo sonvariables aleatorias (las cuales denotaremos por T ) independientes con distri-bucion comun exponencial de parametro λ. Esto nos da una primer manera desimular el proceso, utilizando exponenciales colocandolas una tras otra.

Algoritmo 5.2.1. Primer algoritmo para generar un proceso Poisson.

i) Hacer S1 = 0

ii) Para j = 1, 2, 3.. mientras Sj ≤ t

iii) Generar Tj ∼ exp(λ).

iv) Hacer Sj = T1 + T2 + ...Tj . Ir a al paso 2

v) Hacer N(t) = mınSj > t0 − 1.

Nt<-NULL

lambda<-2

t<-5

for( i in 1:10000)

Tn<-rexp(100,lambda) #Genera exponenciales

Sn<-cumsum(Tn) #Tiempos de ocurrencia

n<-min(which(Sn>t)) #Obtiene contador

Nt[i]=n-1

CAPITULO 5. OTROS TEMAS 104

Una alternativa es considerar los tiempos de llegada Wn = T1 + T2 + ... + Tn,con los que es muy facil demostrar que:

f(w1, w2, ..., wn|N(t) = n) = n!/tn 0 < w1 < w2 < ... < wn

Esto es la densidad condicional de W1,W2, ...Wn dado N(t) = n corresponde ala densidad conjunta de los estadısticos de orden de una muestra de n uniformes,por lo que para simular un proceso Poisson hasta el tiempo t basta simular unaPoisson de parametro λt. Una vez con la observacion de N(t) = n se prosiguena simular n uniformes independientes en (0, t) para despues ordenarlas.

lambda<-2

t<-3

lim<-100 #Total de tiempo a simular

Nt<-NULL

for(i in 1:10000)

N<-rpois(1,lambda*lim) #Genera Poisson lambda*t

U<-runif(N,0,lim) #Genera uniformes

Sn<-sort(U) #Ordena uniformes

n<-min(which(Sn>t))

Nt[i]<-n-1

Algunas generalizaciones importantes del proceso Poisson son el proceso Poissonno homogeneo y el proceso Poisson compuesto.Para el caso del proceso Poisson compuesto, se considera una sucesion de varia-bles aleatorias independientes e identicamente distribuidas Yn∞n=1, que tam-bien son independientes del Proceso Poisson, con esto se define el proceso Poissoncompuesto como:

Xt =

N(t)∑j=1

Yj

. Notemos que simular del proceso Poisson compuesto es muy sencillo, una vezsabiendo como se simula un proceso Poisson y la distribucion de Y1.Finalmente el proceso Poisson homogeneo, es un proceso de conteo a tiempocontinuo que satisface los siguientes puntos:

i) N(0) = 0

ii) Tiene incrementos independientes.

iii) Para cualquier t, h > 0 se tiene que P [N(t+h)−N(t) ≥ 1] = λ(t)h+o(h).

iv) Para cualquier t, h > 0 se tiene que P [N(t+ h)−N(t) ≥ 2]o(h).

En donde λ(t) es una funcion integrable no negativa y o(h) es una funcion quesatisface que lımh→0 o(h)/h = 0.

CAPITULO 5. OTROS TEMAS 105

Bajo las condiciones anteriores es posible demostrar que N(t) tiene distribucionPoisson de parametro Λ(t), donde:

Λ =

∫ t

0

λ(s)ds

Al igual que sucede en el caso homogeneo, es posible probar que la funcion dedensidad conjunta de los tiempos de llegada W1,W2, ...Wn dado N(t) = n es:

f(w1, w2, ..., wn|N(t) = n) = n!λ(w1)...λ(wn)

Λ(t)n0 < w1 < w2 < ... < wn

Esto es, debemos simular primero de N(t), en base a ese valor generamos mues-tras de la funcion de densidad λ(t)/Λ(t) y posteriormente los ordenamos.

t<-3 #Tiempo a valuar

lim<-10 #Lımite superior

Nt<-NULL

for(i in 1:10000)

N<-rpois(1,lim^2) #Genera Poisson

U<-runif(N)

U<-lim*sqrt(U) #Genera muestras de Wn

Sn<-sort(U) #Ordena

n<-min(which(Sn>t))

Nt[i]<-n-1

5.3. Copulas

Empezamos por definir algunos conceptos basicos que nos seran de ayudatenerlos presentes para definir a las copulas. Es importante mencionar que sibien estos conceptos se desarrollaran en el caso bivariado, es facil su extensional caso multivariado.Denotaremos por un rectangulo, B al producto cartersiano de dos intervaloscerrados, que por comodidad supondremos que tienen interior no vacıo, B =[x1, x2] × [y1, y2], donde [x1, x2], [y1, y2] ⊆ R, siendo R el eje real extendido, esdecir R = R∪+∞,−∞. Al caso particular donde [x1, x2] es el intervalo [0, 1]lo denotaremos como I, mientras que a su producto cartersiano con el mismose le denotara como I2, mientras que a cualquier funcion tal que f : I2 → I lellameremos funcion binaria.Con esto presente proseguimos a generalizar el concepto de funcion crecientepara el caso multivariado.

Definicion 2. Sea f : D ⊆ R2 → R decimos que f es creciente si para todopar de puntos (x1, y1), (x2, y2) ∈ D tal que x1 ≤ x2 y y1 ≤ y2 se cumple que:

f(x1, y1) ≤ f(x2, y2), (5.1)

CAPITULO 5. OTROS TEMAS 106

A continuacion damos una definicion la cual tiene como objetivo involucrarla “idea” de volumen generado por una funcion; el cual necesitaremos que seano negativo.

Definicion 3. Sea f : D ⊆ R2 → R decimos que f es 2-creciente si para todopar de puntos (x1, y1), (x2, y2) ∈ D tal que x1 ≤ x2 y y1 ≤ y2 se cumple que:

f(x2, y2)− f(x2, y1)− f(x1, y2) + f(x1, y1) ≥ 0 (5.2)

Por comodidad las operaciones del lado izquierdo se abrevian como Vf ([x1, x2]×[y1, y2]), haciendo enfasis de lo que se intenta modelar es el volumen de unrectangulo inducido por una funcion.Una observacion relevante es que si bien posteriormente nos restringiremos acierto de tipo de funciones, es importante mencionar que si una funcion es cre-ciente no necesariamente es 2-creciente, y de igual manera, si una funcion es2-creciente no necesariamente es creciente.Finalmente generalizamos a funciones multivariadas, el concepto de funcionLipschitz continua.

Definicion 4. Sea f : D ⊆ R2 → R decimos que f es k-Lipschitz continua sipara todo par de puntos (x1, y1), (x2, y2) ∈ D se cumple que:

|f(x1, y1)− f(x2, y2)| ≤ k|x1 − x2|+ k|y1 − y2| (5.3)

Una vez desarrolladas las definiciones y los resultados de la seccion anteriorpodemos dar los conceptos de semi-copula, cuasi-copula y copula.

Definicion 5. Sea C una funcion binaria, decimos que C es:

(1) Una semi-copula: Si C es creciente y tiene al uno como elemento neutro:C(x, 1) = C(1, x) = x ∀x ∈ [0, 1].

(2) Una cuasi-copula: Si C es una semi-copula 1-Lipschitz continua.

(3) Una copula: Si C es una funcion 2-creciente y satisface las condicionesde frontera: C(x, 1) = C(1, x) = x y C(x, 0) = C(0, x) = 0 ∀x ∈ [0, 1].

Notemos que la condicion de frontera de las semi-copulas establece que:

C(0, 1) = C(1, 0) = 0

lo cual combinando con la propiedad de que C es creciente obtenemos:

C(x, 0) = C(0, x) = 0∀x ∈ [0, 1]

Ahora proseguimos a demostrar algunas propiedades de las copulas.

Lema 1. Sea C una copula, entonces C es creciente.

Lema 2. Sea C una copula, entonces C es 1-Lipschitz continua.

CAPITULO 5. OTROS TEMAS 107

Observemos lo que establecen los lemas anteriores, es que toda copula es unasemi-copula y una cuasi-copula, sin embargo no es cierto lo contrario

Teorema 5.1. Sea C una cuasi-copula, entonces (x, y) ∈ I2 se tiene que:

max(x+ y − 1) ≤ C(x, y) ≤ mın(x, y) (5.4)

A la funcion binaria dada por M(x, y) = mın(x, y) se le conoce como co-ta superior de Frechet-Hoeffding, mientras que a la funcion binaria dada porW (x, y) = max(x+y−1, 0) se le conoce como cota inferior de Frechet-Hoeffding.No es difıcil probar que tanto M como W son copulas.Una de las principales aplicaciones se encuentra en el area de probabilidad, paraesto recordaremos rapidamente unos conceptos que seran de utilidad.Dado un experimento aleatorio se define al espacio muestral Ω como aquel con-junto que contiene nuestro experimento en cuestion. A este espacio muestral sele asigna una coleccion no vacıa de subconjuntos de este mismo, la cual se conocecomo sigma-algebra y sobre esta ultima se define una medida de probabilidad.Una vez construido un espacio de probabilidad podemos definir una variablealeatoria, que es una funcion medible que va del espacio muestral a los reales.Ahora bien a cada variable aleatoria X se le asigna una funcion, la cual se conocecomo funcion de distribucion la cual esta dada por:

FX(x) = P [ω ∈ Ω|X(ω) ≤ x]

Es posible demostrar que esta funcion satisface las siguientes cuatro propie-dades:

(1) Es continua por la derecha.

(2) Es no decreciente.

(3) Satisface los siguientes lımites:

lımx→+∞

FX(x) = 1

lımx→−∞

FX(x) = 0

Sin embargo el resultado es aun mas fuerte, pues cualquier funcion que sa-tisface los 3 puntos induce una medida de probabilidad en los borelianos de losreales.El concepto se extiende al caso multivariado, definiendo a un vector aleatoriocomo aquella funcion donde cada una de sus entradas es una variable aleato-ria. Nuevamente se define una funcion de distribucion conjunta para un vectoraleatorio, la cual en el caso bidimensional esta dada por:

HX,Y (x, y) = P [ω ∈ Ω|X(ω) ≤ x ∩ ω ∈ Ω|Y (ω) ≤ y]

CAPITULO 5. OTROS TEMAS 108

Nuevamente se puede demostrar que esta funcion satisface las siguientes pro-piedades y que cualquier funcion que satisface estas ultimas condiciones induceuna medida de probabilidad en los borelianos de R2

(1) Es continua por la derecha en cada coordenada.

(2) Es 2-creciente

(3) Satisface los siguientes lımites:

lımx,y→+∞

HX,Y (x, y) = 1

lımx→−∞

HX,Y (x, y) = lımy→−∞

HX,Y (x, y) = 0

Primero haremos una observacion importante; si se conoce la funcion de dis-tribucion conjunta de dos variables aleatorias, es posible recuperar las funcionesde distribucion de cada variable del siguiente modo:

lımx→+∞

HX,Y (x, y) = GY (y) lımy→+∞

HX,Y (x, y) = FX(x)

Sin embargo el recıproco no es cierto, es decir, si unicamente se conocen lasfunciones de distribucion de cada variable, no es posible en general recuperar lafuncion de distribucion conjunta.Ahora bien notese que por los puntos que satisfacen las funciones de distribucionconjunta, que tenemos condiciones de frontera similares a las copulas donde el−∞ y +∞ juegan los papeles del cero y el uno respectivamente. Esto agrega-do al hecho de que las copulas son continuas, establece que extendiendose demanera adecuada una copula a R2, las copulas no son mas que una funcionde distribucion conjunta bivariada. Sin embargo la conexion a estos conceptosde probabilidad es aun mas fuerte, como se puede ver en el siguiente teoremaconocido como el teorema de Sklar, cuya demostracion puede ser encontrada en[7]. Este teorema establece lo siguiente:

Teorema 5.2. Sean X y Y dos variables aletorias con funciones de distribucionFX(x) y GY (y) respectivamente, ambas continuas. Sea HX,Y (x, y) su funcionde distribucion conjunta, entonces existe una unica copula C tal que:

HX,Y (x, y) = C(FX(x), GY (y))

Conversamente si C es una copula y F,G son dos funciones de distribucionentonces:

H(x, y) = C(F (x), G(y))

es una funcion de distribucion conjunta en R2

CAPITULO 5. OTROS TEMAS 109

Observemos que lo que establece este teorema, es que es posible recuperar lafuncion de distribucion conjunta conociendo las funciones de distribucion mar-ginales y su copula asociada.Esto es de gran utilidad pues permite la construccion de funciones de distri-bucion multivariadas a traves de una copula y de las funcion de distribucionunivariada de nuestro interes. Otra gran utilidad es que permite el estudio dedependencia de variables aleatorias ignorando la escala de estas, al realizar unatransformacion que permite su estudio en I2, por lo cual se han propuesto variasmedidas de dependencia a traves de las copulas.Al igual que como se tiene el concepto de funcion de distribucion empırica, tam-bien se puede definir la copula empırica de una muestra (xj , yj)nj=1 se definela copula empırica como:

Cn

(i

n,j

n

)=|x ≤ x(i), y ≤ y(j)|

n

en donde x(i) y y(j) son los estadısticos de orden de la muestra.

Bibliografıa

[1] Asmussen S. and Glynn P. Stochastic Simulation: Algorithms and Analysis.Springer [2007].

[2] (*)Bowers Newton et al, Actuarial Mathematics, Society of Actuaries,[1997].

[3] (*)Caballero, M. E., V. M. Rivero, G. Uribe, and C. Velarde. Cadenas deMarkov Un enfoque elemental.Number 29 en Textos Nivel Medio. SMM.[2004].

[4] Efron B. and Tibshorani R. An introduction to the Bootstrap. Chapman &Hall-CRC [1998].

[5] Gamerman, D. and Freitas, H. Markov Chain Monte Carlo StochasticSimulation for Bayesian Inference. Chapman & Hall-CRC. [2006]

[6] Gilks, W.R., Richardson, S. and Spiegelhalter, D.J. Markov Chain MonteCarlo in Practice. Chapman & Hall-CRC [1996].

[7] (*)Nelsen R., An Introduction to Copulas, Lecture Notes in Statistics, se-gunda edicion, New York:Springer- Verlag [2007].

[8] Rizzo M. Statistical Computing with R. Chapman & Hall-CRC [2008].

[9] Robert, C. and Casella, G. Monte Carlo Statistical Methods. Springer [1999]

[10] Ross, S. Simulation . Academic Press. [2006]

[11] Stewart, W.Probability, Markov Chains, Queues, and Simulation TheMathematical Basis of Performance Modeling. Princeton UniversityPress.[2009]

110