Está en la página 1de 83

Instituto Politécnico Nacional

Escuela Superior de Física y Matemáticas

Simulación.
Versión 2

Autor: Ramón Sebastián Salat Figols . Agosto de 2016.

D.R. Instituto Politécnico Nacional (IPN), Av. Luis Enrique Erro S/N,
Unidad Profesional Adolfo López Mateos, Zacatenco, Delegación
Gustavo A. Madero, C.P. 07738, Ciudad de México; México 2016.

1
Prólogo.

El autor de éstas notas sobre simulación las ha escrito considerando los


programas de estudio de las materias de Simulación I y de Simulación II de la
carrera de Ingeniería Matemática de la Escuela Superior de Física y Matemáticas y
aprovechando la experiencia de haber impartido ambas materias en varias
ocasiones, con el propósito de que los estudiantes dispongan de un material
pertinente a los cursos.
Las notas contienen algunos programas para computadora que utilizan el
lenguaje de programación Python.
Ésta es una segunda edición, en la que se han agregado varias secciones, la
bibliografía y se han corregido algunos errores de la primera; espero que puedan
seguir otras ediciones que incluyan ampliaciones, mejoras y una mayor cantidad de
ejercicios.

Ramón Sebastián Salat Figols, agosto de 2016.

2
Índice.
Capítulo I.
1.1 Introducción a la simulación................................................................…..5
1.2 Generación de números aleatorios.......................................................…..8
1.3 Pruebas de aleatoriedad......................................................................…..11
1.4 Evaluación de integrales.....................................................................….13
1.5 Caminata aleatoria y movimiento Browniano....................................….16
1.6 Aplicaciones a las finanzas y a la ingeniería…………………………...18
1.6.1 Modelo binomial para el precio de una acción……………………….18
1.6.2 Simulación de una línea de espera…………………………………....20
Capítulo II
2.1 Generación de variables aleatorias discretas......................................….23
2.1.1 Generación de números aleatorios que siguen una distribución
binomial....................................................................................................….24
2.1.2 Generación de números aleatorios que siguen una distribución
de Poisson.................................................................................................….25
2.2 Método de aceptación y rechazo.........................................................….25
2.3 Método de composición......................................................................….27
2.4 Generación de números aleatorios para variables aleatorias continuas...28
2.4.1 Método de la transformada inversa..................................................….28

3
2.4.2 Método polar para generar números que sigan una distribución
normal..................................................................................................29
2.5 Generación de un proceso de Poisson....................................................31
Capítulo III.
3.1 Líneas de espera de un solo servidor, M/M/1.........................................35
3.2 Líneas de espera con dos servidores.......................................................40
3.3 Inventarios..............................................................................................42
3.4 Reparación y substitución de máquinas.................................................48
3.5 Ejercicio de opciones financieras...........................................................54
3.6 Verificación…………………………………………………………….56
Capítulo IV.
4.1 Interpretación estadística de resultados..................................................58
4.2 Métodos de reducción de varianza.........................................................63
4.2.1 Variables antitéticas.............................................................................63
4.2.2 Método de variables de control...........................................................65
4.2.3 Por condicionamiento..........................................................................68
Capítulo V
5.1 Introducción............................................................................................70
5.2 Validación estadística..............................................................................70
5.2.1 Pruebas de bondad de ajuste................................................................70
5.2.2 El problema de las dos muestras..........................................................74
5.2.3 Validación de la hipótesis de que un proceso de Posisson
es no homogéneo…………………………………………………….….... 78
5.2.4 Aplicaciones a las finanzas y a la ingeniería…………………………79
Apéndice.......................................................................................................80

4
Capítulo I

1.1 Introducción a la simulación.

Cálculo de π .

Consideremos que lanzamos N dardos sobre un cuadrado unitario con una


esquina en el origen del sistema cartesiano y ubicado en el primer cuadrante, de
manera uniforme. En éste cuadrado está inscrito un cuarto de círculo de radio igual
a 1 . El área del cuadrado es 1 , mientras que la del círculo es π /4 . Por lo
tanto, si los dardos se lanzan de manera uniforme, el número de dardos n que
caen dentro del círculo, para N grande, será al número total de dardos,
aproximadamente, como el área del círculo π /4 es al área del cuadrado, que es
1 :

π≈n (1.1)
4 N

Es sencillo escribir un programa en computadora para simular el lanzamiento


de los dardos, imaginando que el centro del círculo está en el origen de un sistema
cartesiano de coordenadas con sus ejes paralelos a los lados del cuadrado. Un
algoritmo para realizar éste cálculo puede ser el siguiente:
i=0 , cuenta=0 .
Mientras i< N :

5
Generar dos números independientes x y y , uniformemente
distribuidos en [0,1] .

Figura 1.

Si x 2 + y2<1 , hacemos cuenta=cuenta+1 .


Hacemos i=i+1 .
Calculamos 4⋅cuenta/ N .

A continuación se muestra el código de un programa para realizar el algoritmo


anterior, que imprime en la pantalla los valores que se obtienen cada múltiplo de
1000 dardos lanzados.

6
from random import random
i=0
cuenta=0
N=1000000
while i<N:
x=random()
y=random()
if x**2+y**2<1:
cuenta=cuenta+1
i=i+1
if i%1000==0:
print(i,4*cuenta/i)
print(4*cuenta/N)

En la Fig. 1 se muestran los resultados de la realización de una simulación


para estimar π . Se observa que conforme el número de dardos lanzados
aumenta, el valor estimado se acerca cada vez más a π . Para entender con más
precisión el sentido de ésta afirmación, debemos recurrir a los conocimientos de la
Teoría de la Probabilidad. Si X N es la variable aleatoria que da el número de los
N dardos que caen dentro del círculo, entonces XN sigue una distribución
binomial con parámetros N y p=π /4 . Luego la media de X N será
π⋅N / 4 y la varianza será (N⋅π/ 4)⋅(1−π / 4) . Y la media y la varianza de la
p r o p o r c i ó n d e d a r d o s q u e c a e n d e n t r o d e l c í r c u l o s e r á n π /4 y
(π/ 4⋅N )⋅(1−π/ 4) , respectivamente.
Por otro lado, la desigualdad de Tchebychev establece que para cualquier ε
positivo:

7
π⋅(1− π )
4 4
P(|X N − π | >ε)< (1.2)
4 N⋅ε2

De donde:
lim P(|X N − π | >ε)=0
N →∞ 4
Es decir, la probabilidad de que la proporción de dardos que caigan dentro del
círculo se alejen de π/ 4 en más que ε tiende a cero cuando N tiende a
infinito; y esto es cierto, cualquiera que sea el valor positivo de ε . Es importante
observar que éste concepto, llamado convergencia en probabilidad, es muy
diferente al concepto de convergencia estudiado en los cursos de Cálculo.
Ejercicios.
1. Con respecto al ejemplo de la aproximación de π de ésta sección,
¿Cuántos dardos hay que lanzar para asegurar que P(|X n − π | > 0.01)<0.1 ?
4
2. Empleando un método similar al empleado en esta sección para aproximar
π , estime mediante simulación el valor de √ 2 .
3. Estime mediante simulación el volumen de una esfera de radio 1.
4. Dos jugadores A y B lanzan volados hasta que alguno de los dos se queda
sin dinero. Si A gana, B paga un peso a A; si B gana, A paga un peso a B. A tiene
inicialmente 3 pesos y B tiene 12 pesos. Estime mediante simulación la
probabilidad de que A gane al final del juego y el valor esperado del número de
volados que se realizarán en el juego.

1.2 Generadores de números aleatorios.

Uno de los generadores de números aleatorios más sencillos consiste en tomar

8
un número de dos cifras, elevarlo al cuadrado y seleccionar el número de dos cifras
centrales del cuadrado, y repetir el procedimiento en forma sucesiva. Por ejemplo,
si empezamos por 96, el siguiente número será 21, el siguiente, 44, etc. Por
supuesto, el algoritmo puede utilizarse con números de más de dos cifras.
Otro método utilizado frecuentemente es el congruencial. Se define mediate la
fórmula:
xk +1 =(ax k +c) mod (m) para k=0, 1, 2, 3,.. .
en donde x 0 es algún valor inicial y a mod b es el residuo que resulta de
dividir a entre b .
Puesto que al dividir entre m solamente puede haber m residuos
diferentes, éste algoritmo a lo más puede producir m residuos diferentes. El
hecho de que produzca m residuos diferentes o que produzca menos, depende de
cómo estén relacionados los parámetros. El algoritmo produce ciclos de tamaño
completo m , si y solamente si, se cumplen las tres condiciones siguientes:
1. m y c son primos relativos.
2. Si p es un factor primo de m , entonces p divide a a−1 .
3. Si 4 divide a m , entonces 4 divide a a−1 .
Ejemplo. Si a=271, c=235 , m=47 y x 0 =32 , un ciclo de los números
generados es 32, 24, 18, 37, 16, 12, 9, 42, 8, 6, 28, 21, 4, 3, 14, 34, 2, 25, 7, 17, 1,
36, 27, que es de longitud 23, menor que m . Obsérvese que el único factor primo
de 47 es el mismo, y éste no divide a a−1 , que es 270. Es decir, no se cumple la
condición 2.
Ejemplo. S i a=48, c=23 , m=47 y x 0 =32 , un ciclo generado es 32, 8,
31, 7, 30, 6, 29, 5, 28, 4, 27, 3, 26, 2, 25, 1, 24, 0, 23, 46, 22, 45, 21, 44, 20, 43, 19,
42, 18, 41, 17, 40, 16, 39, 15, 38, 14, 37, 13, 36, 12, 35, 11, 34, 10, 33, 9, que es de
longitud igual a m , es decir, es de periodo completo. En este caso, se cumplen
las tres condiciones dadas anteriormente.

El estándar ANSI C emplea m=231 , a=1103515245 y c=12345 .


A continuación se muestra un programa que genera números aleatorios por el

9
método congruencial y encuentra el periodo.
a=237
c=467
m=337
l=[]
x=37
i=0
while x not in l:
l.append(x)
i=i+1
print(x)
x=(a*x+c)%m
print(i,x)

En simulación, frecuentemente se requieren de números aleatorios flotantes en


el intervalo [0,1] ; a partir de éstos se pueden generar números aleatorios que
sigan las distribuciones frecuentemente empleadas, tales como binomial, normal,
de Poisson, etc. Éstos pueden obtenerse dividiendo los números obtenidos por un
generador congruencial y dividiéndolos entre el valor máximo posible; si el
generador es de periodo completo, hay que dividir entre m−1 , si se quiere
incluir el 1, o entre m si no se quiere incluir el 1.
Ejemplo. Si a=48, c=23 , m=47 y x 0 =32 se obtienen 0.5614, 0.0351,
0.1930, 0.2456, 0.9298, 0.8246, 0.4561, 0.6667, 0.4035, 0.9825, 0.5088, 0.3509,
0.2982, 0.6140, 0.7193, 0.0877, 0.8772 y 0.1404, aproximados a cuatro cifras
decimales.

Ejercicios.
1. Comience con un número de tres cifras, tal como 673, elévelo al cuadrado y
quédese con las dos cifras centrales; continue el procedimiento hasta obtener 4
números aleatorios.
2. Utilizando a=51, c=23 , m=57 y x 0 =32 , genere un ciclo y diga de qué

10
longitud es, ¿Es completo? A partir de este ciclo, construya una lista de números
aleatorios en [0,1] .

1.3 Pruebas de aleatoriedad

Una de las primeras pruebas que pueden realizarse es construir una


representación gráfica de puntos, los cuales se forman tomando los números
aleatorios generados como abcisas y el siguiente número generado al de la abcisa,
tomarlo como ordenada, es decir si los números generados son x1, x2, x3, ... x n ,
entonces se grafican los puntos (x1, x 2),(x2, x3 ),... ,(x n−1 , x n ) . Si en el gráfico se
observan patrones definidos en la distribución de los puntos, entonces podemos
suponer que se hace notoria una relación entre los números aleatorios y los
siguientes, lo cual, no es deseable, ver las figuras 2 y 2a.

Figura 2 Figura 2a

Para verificar si los números aleatorios se distribuyen efectivamente de forma


uniforme se realizan varios tipos de pruebas de hipótesis. Una de ellas, es sobre la
hipótesis nula de que los números generados provienen de una población que sigue
una distribución uniforme en [0, 1 ] ; se puede usar el estadístico chi-cuadrado o
el de la prueba de Kolmogorov-Smirnov.
Para realizar una prueba basada en el estadístico chi-cuadrado, se divide el
intervalo [0, 1 ] en n intervalos de igual tamaño y se calcula, de acuerdo a la
muestra, la frecuencia absoluta f e de datos que están en i−ésimo intervalo; por
i

11
otro lado, la frecuencia absoluta de datos que deberían estar en dicho intervalo
f t , bajo la hipótesis nula, es igual al número total de datos por la longitud del
i

subintervalo; se calcula el estadístico:

(f e −f t )2
n
χ n−1 =∑
2 i i
(1.3)
i=1 ft i

Se compara el valor obtenido con el valor crítico de la tabla de la distribución


de χ2n−1 con n−1 grados de libertad, de acuerdo al nivel de significancia α
deseado.
Para una prueba basada en el distribución de Kolmogorov-Smirnov se usa el
estadístico:
D=Supremo|F t (x )−F e ( x)| (1.4)
x ∈[0,1]

donde F e es la distribución de frecuencias empíricas acumuladas y Ft es la


distribución acumulada teórica; en este caso, F t (x )= x para x∈[0,1] . Si la
muestra de números aleatorios que se va a probar es x1, x2, x3,. .. , x n , primero se
ordenan los datos de menor a mayor y se obtiene x(1) , x(2) , x(3) ,..., x( n) ; entonces,
F e ( x(i))=i /n . Puesto que Ft es creciente:

i−1 i 1
D=Supremo {|F t ( x)−F e (x )|}=Máx {Máx {| x(i )− |, | −x (i) | ,|},| x(1)− }
x ∈[0,1] i=2,.. n n n n
(1.5)
En este caso la distribución teórica es una uniforme, pero la prueba puede
aplicarse a cualquier distribución; en general, la distribución de D bajo la hipótesis
nula no depende de la distribución teórica.
Para estudiar la posible dependencia entre datos sucesivos, se puede recurrir a
la covarianza de U i y U k c o n k≠i , donde las U i forman una muestra
aleatoria de variables uniformemente distribuidas en [0, 1] (hipótesis nula). Para
n grande, bajo la hipótesis nula, la variable:
n−k
1 1 1
Ck= ∑
n−k ì=1
(U i − )(U i+ k − )
2 2
(1.6)

12
1
sigue una distribución normal con media cero y desviación estándar .
12 √ n−k
Debe realizarse ésta prueba para diferentes valores de k , digamos 1, 2, 3,….
A éstas pruebas se les llama pruebas de correlación serial.

Ejercicios.
1. Aplicar las tres pruebas estadísticas de esta sección a una muestra de 1000
números generados con:
a) Congruencial con parámetros a=48, c=23 , m=47 y x0 =32 .
b) Congruencial con parámetros:
31
m=2 , a=1103515245, c=12345 y x 0 =743871 .

2. Para los generadores del ejercicio anterior construir los gráficos presentados
al principio de la sección.
3. Usar el generador definido en el inciso b) del problema 1 para generar diez
mil números entre cero y uno. Realizar las pruebas de hipótesis para la uniformidad
de la distribución y la independencia entre números sucesivos, al conjunto de datos
generados, a un nivel de significancia de 5 %.

1.4 Evaluación de integrales

Si X es una variable aleatoria continua con función de densidad f X y


g es una función continua, la esperanza de g( X ) está dada por:

+∞
E (g( X ))=∫ g(x )f X (x) dx
−∞

Si X está uniformemente distribuida en [0,1] , entonces:

13
1

E( g( X ))=∫ g ( x) dx (1.7)
0

Este hecho sugiere que podemos emplear simulación para estimar la integral
1

∫ g (x) dx , estimando el valor de E (g( X )) . S i X 1 , X 2 , X 3 ,... , X n son


0

independientes y uniformemente distribuidas en [0,1] , entonces las g (X i ) ,


también son independientes. Por lo tanto, si definimos a g (X ) como:
g ( X 1 )+ g (X 2)+...+ g (X n )
g (X )=
n
y suponemos que g (X ) tiene media μ y varianza σ ² , entonces:
2
E (g( X ))=μ y V (g( X ))= σ
n
Estas dos igualdades sugieren que para estimar μ , podemos generar una
secuencia de números u1, u2, u3,. .. ,un uniformemente distribuidos en [0,1] ,
independientes y calcular (g(u1 )+ g (u2 )+ g(u3 )+...+ g (un ))/ n . Obsérvese que la
varianza de g (X ) , puede hacerse tan pequeña como se quiera tomando n
suficientemente grande.

Ejemplo. A continuación se presenta un programa para aproximar π como


1
1
4∫ 2 dx .
0 1+ x

from random import random


N=1000000
suma=0
for i in range(N):
suma=suma+1/(1+random()**2)
print(4*suma/N)

14
1
En este caso, g ( x)= . El programa anterior, estima valores para la
1+ x ²
1 1
+ ...+
1+U 1 ² 1+U n ²
variable X =4 , donde las U i son independientes y
n
uniformemente distribuidas en [0,1] .
b

Para calcular una integral como ∫ g (x ) dx , simplemente hacemos un


a

cambio de variable para que el intervalo de integración se convierta en [0,1] , o


bien, podemos generar números aleatorios en el intervalo [a , b] ; este cambio
puede ser, por ejemplo v=(x−a)/(b−a) . De forma similar, para calcular la

integral ∫ g (x) dx , podemos usar el cambio de variable v=1/(1+ x ) (siempre
0

que la integral exista) .

De manera similar, para estimar una integral ∬ g(x , y) dxdy podemos


[0,1]×[0,1]

generar (u1 , v 1 ), (u2 , v 2), (u3 , v3 ),... , (u n , v n ) con los ui y los vi independientes
todos entre sí y uniformemente distribuidos en [0,1] .

Ejercicios.
1 1
1
1. Estimar el valor de las integrales ∫ 2
dx y ∫ √1−x 2 dx , usando
0 1+x 0

simulación.
3
1
2. Estimar el valor de la integrale ∫ 1+x dx , usando simulación.
2

3. Las dos integrales del problema 1 tienen el mismo valor π / 4 . ¿Cuál de


las dos integrales del problema anterior produce estimaciones con menor varianza?
Demuestre su respuesta.

15

∫ e−x
2

4. Por medio de simulación estime el valor de dx . Encuentre un


0

intervalo de confianza del 90 % para la estimación del valor de la integral.


5. Por medio de simulación estimar el valor de la integral
∞ ∞

∫∫ e−(x + y ) dx dy
2 2

. Encuentre un intervalo de confianza del 90 % para la


0 0

estimación del valor de la integral.

1.5 Caminata aleatoria y movimiento Browniano

Imaginemos una partícula en la recta numérica que se encuentra en una


posición dada por un número entero i y que al siguiente intervalo de tiempo
avanza a i+1 con probabilidad p y retrocede a i−1 con probabilidad 1− p .
Si X j representa el avance de la partícula al tiempo j , entonces:
P( X i =1)= p y P ( X i =−1)=1− p

Si se define Z i =( X i +1)/2 , entonces Z i es de Bernoulli con parámetro p .


Después de n movimientos, la posición de la partícula estará dada por:
S n =S0 +X 1 +X 2 +... X n =S0 +2(Z 1 +Z 2 +...+Z n )−n
donde las X i son independientes. Y por lo tanto la media y la varianza de S n
serán:
E( Sn )=S 0 +2 np−n= S0 +n(2 p−1) y V ( Sn )=4 np(1− p)
A partir de este modelo de caminata aleatoria construiremos otro llamado de
movimiento Browniano y finalmente, conoceremos un modelo para describir la
evolución del precio de una acción en el tiempo.
Considérese el intervalo [0,t] y divídase en n intervalos iguales, cada uno de
ellos de longitud δ=t /n y supóngase que en cada intervalo avanzamos d o
retrocedemos d con probabilidades p y 1-p, respectivamente. Entonces
2
E(S n −S0 )=d (t /δ)(2 p−1) y V (S n −S0 )=d (t /δ)(1−(2 p−1)) y pensemos

16
que tanto d como p puedan depender de δ Si consideramos d=k 1 √ (δ) con
k 1 constante, entonces lim V (S n −S0 )=k 12 t lim (1−(2 p−1)) . Por otro lado,
δ→0 δ→ 0

lim E( Sn −S0 )= lim (k 1 / √ (δ))t (2 p−1) . T o m a n d o 2 p−1=k 2 √ (δ) ,


δ→0 δ→0

2 1+k 2 √ (δ)
lim E( Sn −S0 )=k 1 k 2 t y lim V (S n −S0 )=k 1 t , ya que como ,p=
δ→0 δ→0 2
cuando δ tiende a cero, p tiende a 1/2 . Para n grande, S n− S0 seguirá
una distribución normal con media k 1 k 2 t y desviación estándar k 1 √ (t) . Luego
se considera a k 1 k 2 a la media en el intervalo unitario y se le denota por μ y a
k 1 se le considera como la desviación estándar en el intervalo unitario y se le
denota por σ En efecto, veamos que una caminata aleatoria con éstas
características, cuando δ tiende a cero, resulta un movimiento Browniano.
Divídase el intervalo [0,t ] e n n partes iguales, de tal manera que cada parte
será de longitud Δ=t /n y supongamos que en cada intervalo de tiempo, en lugar
de avanzar o retroceder una unidad, se avanza o retrocede en σ √ (Δ) con
1 μ 1 μ
probabilidades p= (1+ σ √ (Δ)) y 1− p= (1− σ √ (Δ)) , respectivamente.
2 2
Ahora la posición de la partícula al momento t , será:

S (t)−S (0)=σ √ (Δ)( X 1 +X 2 +...+ X n )

Para n grande S (t)−S (0) seguirá una distribución normal. Además, por la
misma forma de construir el proceso, S (t 2)−S (t 1) y S (t 4 )−S(t 3 ) serán
independientes, si los intervalos [t 1 , t 2 ] y [t 3 ,t 4 ] son disjuntos.
La esperanza del cambio en la posición en t será:
t μ
E( S(t )−S(0))=σ √ Δ √ Δ=μ t (1.8)
Δσ
Cuando n tiende a infinito, Δ tiende a cero y p tiende a 1/2 ; la varianza
del cambio de posición tenderá a:
2 t 2
V (S (t )− S(0))=σ Δ 4 p(1− p)→σ t (1.9)
Δ
Luego, S (t)−S (0) sigue una distribución normal con media μt y varianza

17
2
σ t , cuando n tiende a infinito.
Si S (t)−S (0) es un movimiento Browniano tal como lo acabamos de construir,
entonces a e S(t )−S(0) se le llama movimiento Browniano geométrico. El
movimiento Browniano geométrico es un modelo que se emplea frecuentemente
para modelar la evolución del precio de una acción en el tiempo. Al aplicar el
modelo a una acción en particular es necesario verificar primero, si en efecto los
datos se ajustan bien al modelo. Esto puede realizarse efectuando pruebas acerca de
si los valores ln (S(t +1)/ S (t )) son independientes y si siguen una distribución
normal; la media y la desviación estándar de éstos valores son estimadores para
μ y σ .
Ejercicios.
1. Sea X una variable aleatoria que sigue una distribución normal con media
X
μ y desviación estándar σ . Y sea Y =e , decimos que Y sigue una
distribución log-normal. Encuentre la función de densidad de probabilidad de Y .
X
2. a) Calcule el valor esperado de Y =e , donde X sigue una distribución
normal con media μ y desviación estándar σ . b) Calcule la varianza de Y .
3. Considere μ=0.01 , σ=0.142 y t=2 . Simule 100,000 valores para
e S(2)−S(0) y calcule la media y la desviación estándar de la muestra. Para generar
números que sigan una distribución normal utilice una función que tenga su
lenguaje de programación.

1.6 Aplicaciones a las finanzas y a la ingeniería.

1.6.1 Modelo binomial para el precio de una acción.


Se supone que el precio inicial de una acción es S 0 y que durante un intervalo
δ t , el precio es uS0 con probabilidad p y dS0 con probabilidad 1− p .
Alsiguiente intervalo de tiempo δ t ocurre lo mismo, es decir, el precio anterior se
multiplica por u con probabilidad p o por d con probabilidad 1− p .

18
2
p u S0

uS0
1− p
p
udS0

S0

udS0
p
1− p

dS0

1− p
2
d S0

Si estamos interesados en estimar el precio de la acción en el tiempo T ,


dividimos el intervalo de tiempo [0, T ] en n subintervalos iguales de tiempo de
tamaño δ t=T /n y aplicamos la regla anterior en cada subintervalo.

Ejemplo. Suponiendo p=1 /2 , u=1.015 , d=0.99 , S 0 =$ 15 y


δ t=1 . Estimar la probabilidad de que después de diez periodos de tiempo el
precio de la acción sea menor que $ 15.
A continuación se presenta un progrma para resolver el problema. Entre las
líneas 1010 y 1100 está la definición de una función que obtiene un precio
simulado para la acción después de diez periodos de tiempo. De las líneas 110 a
160 está el programa principal.

1000 from random import random


1010 def precio():
1020 s=15
1030 u=1.015
1040 d=0.99
1050 for i in range(10):

19
1060 if random()<0.5:
1070 s=s*u
1080 else:
1090 s=s*d
1100 return s
1110 cuenta=0
1120 nr=1000000
1130 for i in range(nr):
1140 if precio()<15:
1150 cuenta=cuenta+1
1160 print(cuenta/nr)

Ejercicios.

1. Tomando los mismos datos del ejemplo de ésta sección, estime el valor
esperado del precio de la acción después de diez periodos de tiempo.

1.6.2 Simulación de una línea de espera.


Supóngase que los clientes llegan a un banco que dispone de un solo cajero.
Al llegar un cliente, si no hay fila es atendido inmediatamente; si hay fila entonces
pasa al último lugar de la fila. Si el tiempo de llagada de un cliente es mayor que el
tiempo de salida del cliente anterior es atendido inmediatamente; por el contrario, si
el tiempo de llegada del cliente es menor que el tiempo de salida del cliente
anterior, entonces tendrá que esperar hasta que se termine de atender al cliente
anterior; es decir, el tiempo en el que se empieza a atender a un cliente es el
máximo del tiempo en el que llegó y el tiempo de salida del cliente anterior. A
continuación se muestran los tiempos de llegada, de inicio de atención de cada
cliente y los tiempos de salida.

Número de Tiempo Inicio del Tiempo de


cliente de llegada servicio salida
1 0 0 1
2 5 5 6
3 10 10 11
4 11 11 12
5 15 15 16
6 19 19 20

20
7 22 22 23
8 25 25 26
9 30 30 31
10 35 35 36
11 40 40 41
12 42 42 43
13 46 46 47
14 50 50 51
15 55 55 56
16 58 58 59
17 63 63 64
18 64 64 65
19 69 69 70
20 71 71 72

En la tabla se observa que los tiempos entre llegadas consecutivas son 5, 5, 1, 4, 4,


3, 3, 3, 5, 5, ,5, 2, ...Los tiempos de atención a cada cliente son constantes, iguales a
1. Haciendo algunas suposiciones acerca de los tiempos entre llegadas sucesivas y
acerca de los tiempos de atención a cada cliente, es posible simular los tiempos de
ocurrencia de los eventos en el futuro. En la medida en que nuestras suposiciones
sean válidas, los resultados obtenidos serán más semejantes a los que ocurran en la
realidad. Por ejemplo, puede suponerse que los tiempos entre llegadas sucesivas
pueden ser 1, 2, 3, 4 y 5 con igual probabilidad y que los tiempos de atención a
cada cliente son constantes, iguales a 1.
Con el siguiente programa se puede simular a la línea de espera para los 20
primeros clientes, bajo los supuestos que se han hecho.

from random import randint


d=1
n=20
tl=0
tis=0
ts=tis+d

21
for i in range(n):
print("%5i"%(i+1),'\t',"%5i"%tl,'\t',"%5i"%tis,'\t',"%5i"%ts)
tl=tl+randint(1,5)
tis=max(tl,ts)
ts=tis+d

A partir de éste modelo para simular a la línea de espera puede estimarse, por
ejemplo, el tiempo promedio de permanencia de los clientes en el banco.
Las hipótesis que se han hecho en este ejemplo son para ejemplificar y no son
plausibles en la práctica. Posteriormente se tratarán las líneas de espera con más
profundidad.

Ejercicio.
1. Modifique el programa de ésta sección para estimar el tiempo promedio de
permanencia de los clientes en el banco.

22
Capítulo II

2.1 Generación de variables aleatorias discretas

Supongamos que f es una función de densidad discreta definida por


f ( x i)= pi para i=1, 2, .. . . Una manera de generar números aleatorios para la
función de densidad f es considerar un número aleatorio u en el intervalo
[0,1] . Si p 1 + p2 +...+ pk −1⩽u< p1 + p 2 +...+ p k−1 + p k para algún k=1, 2, 3,.. . ,
el número generado para la función de densidad f e s xk ; y si u< p1 , el
número generado es xk ; si u< p1 , el valor generado es x1 . Esto es, porque
la probabilidad de que el número aleatorio u cumpla con la condición
p 1 + p2 +...+ pk −1⩽u< p1 + p 2 +...+ p k−1 + p k es precisamente p k .
Ejemplo. Para generar números aleatorios para la función de densidad dada
por:

xi 1 5 3
f ( x i) 0.2 0.3 0.5

Se calcula primero, p1 =0.2, p1 + p2=0.5 y p1 + p 2 + p3 =1 . Luego, generamos


números aleatorios uniformemente distribuidos en [0,1] e independientes; por
ejemplo, 0.315, 0.271, y 0.802. Como 0.2≤0.315<0.5 , el primer número
aleatorio para f e s x 2=5 ; como 0.2≤0.271<0.5 , el segundo número
generado es también x 2=5 ; finalmente, como 0.5≤0.802<1.0 , el número
generado es x3 =3 .
A continuación se presenta un algoritmo para generar números aleatorios que
sigan una distribución dada por f x ( xi )= p i para i=1, 2, 3, .. . .

23
suma=0
generar número aleatorio entre 0 y 1, u
i=0
mientras suma<u:
suma=suma+ pi
i=i+1
el número generado es x i

2.1.1 Generación de números aleatorios que siguen una


distribución binomial.

En algunos casos específicos los valores de los pi se pueden calcular de


forma iterativa y el algoritmo anterior resulta más eficiente. Por ejemplo, si
consideramos la función de densidad de una distribución binomial con parámetros

n y p , ()
f (i)= n p (1− p)
i
i n−i
con i=0, 1, 2,... ,n . Se observa que:

f (i+1) n−i p n
= ⋅ para i=0, 1, 2,... ,n−1 y que f (0)=(1− p)
f (i) i+1 1− p

(2.1)
Entonces, para el caso de la binomial, el algoritmo toma la forma:

generar número aleatorio entre 0 y 1, u


i=0
producto=(1− p )n
suma=producto
mientras suma<u:
producto= producto⋅((n−i)/(i+1))⋅( p /(1− p))
suma=suma+ producto
i=i+1

24
el número generado es i .

2.1.2 Generación de números aleatorios que siguen una


distribución de Poisson.

Para simular valores para una variables que siga una distribución de Poisson,
hay que observar que:
k +1
e λ
−λ
f (k +1) (k +1) !
= = λ (2.2)
f (k ) k
k +1
e λ
−λ
(k )!

El algoritmo es similar al caso anterior con el cambio correspondiente con


respecto al cálculo de la distribución acumulada.

2.2 Método de aceptación y rechazo

Supongamos que podemos generar valores para una variable aleatoria discreta
Y con función de densidad f Y y que queremos generar valores para otra
variable aleatoria discreta X con función de densidad f X y que existe un
número positivo c tal que f X ( z j )/ f Y ( z j )< c para cualquier j . Entonces puede
emplearse el siguiente algoritmo:
1. Simular un valor para Y, digamos que resulta z k .
2. Generar un número aleatorio u ente cero y uno.
3 . S i u< f X (z k )/(cf Y (z k )) entonces aceptamos a z k como un número
aleatorio para X ; en otro caso, regresamos a 1.

Para probar que el método funciona correctamente, debemos probar que

25
P( X =z k )=f X (z k ) . Primero, se observa que la probabilidad de aceptar el valor
f X (z k ) f X (z k )
z k al usar el método es P(aceptar∣Y = z k )P (Y = z k )= f Y (z k )=
cf Y (z k ) c

f X (z k ) 1
De donde, la probabilidad de aceptar en el método es
c c

= . Ahora,
k

la probabilidad de aceptar z k en el ensayo n es igual a la probabilidad de


rechazar z k en los n−1 primeros ensayos y aceptarlo en el n−ésimo , que es
1
n−1
f X ( zk )
(1− ) . Y la probabilidad de aceptar z k es la suma de esta última
c c
1 n−1 f X (z k )

probabilidad sobre todos los ensayos posibles, ∑ (1− ) =f X (z k ) .
n=1 c c
Obsérvese que para la convergencia de la serie, bajo el supuesto de que c sea
positivo, se requiere que c >1 /2 .

Ejemplo.

zj 2 7 9
f X ( z j) 0.2 0.5 0.3
f Y (z j ) 1/3 1/3 1/3

Puede tomarse c=1.6 . Se genera un valor para Y , generando un número


aleatorio entre cero y uno, digamos u=0.4 ; como 1/3≤0.4<2/ 3 , el valor
generado para Y es 7. Ahora, f X (7)/(1.6⋅f Y (7))=0.9375>0.4=u , luego se
acepta a 7 como un valor generado para X .

Ejercicios.
1. Una variable aleatoria X tiene una función de densidad dada por:

26
xi 1 5 3
f ( xi ) 0.3 0.2 0.5

Generar una muestra de 100 números aleatorios para X .


2. Generar una muestra de 1000,000 números aleatorios para una variables
que siga una distribución binomial con parámetros p=0.75 y n=7 . Calcular
la media y la varianza de la muestra y compararla con los valores np y
np(1− p) .
3. Generar una muestra aleatoria para una variable que sigue una distribución
de Poisson con parámetro λ=5 y calcular la media y la varianza de la muestra,
compararlas con λ .
4. Generar una muestra aleatoria de tamaño 1000,000 para una variables que
siga una distribución geométrica con parámetro p=0.25 , calcular la media y la
varianza y comparar con los valores 1/ p y (1− p)/ p ² .
5. Un vendedor de periódicos los vende a $ 10 cada uno; a él le cuestan $ 7
cada uno. Si no logra vender un periódico, lo regresa y obtiene un reintegro de $ 5
por cada uno. El número de periódico que vende en un día sigue una distribución
de Poisson con media de 70 periódicos. a) Estime la ganancia esperada por día, si
se abastece con 50, 60, 70, 80, 90 y 100 periódicos. b) ¿Cuál es el número de
periódicos con los que debe abastecerse para obtener la mayor ganancia? Y ¿De
cuánto es ésta? c) Si compra 70 periódicos, estime la probabilidad de que su
ganancia sea menor que $ 116.

2.3 Método de composición.

Si la función de distribución F X de una variable aleatoria X se puede


escribir como:

27

F X (x )=∑ ai F i (x ) (2.3)
i =1

o equivalentemente:


f X ( x)=∑ ai f i (x ) (2.4)
i=1

donde las F i y l a s f i son funciones de distribución y de densidad de



probabilidad, respectivamente, ai >0 y ∑ ai =1 , entonces los valores para la
i=1

variable aleatoria X pueden generarse del siguiente modo:

1) Se genera un valor para la variable aleatoria I cuya función de densidad de


probabilidad es f I (i)=ai para i=1, 2, 3,. .. .
2) Si el valor generado en el paso anterior es k , entonces se genera un valor con
la distribución F k , digamos X k y se toma X= X k .

Ejemplo. Supóngase que se quieren generar valore para una variable aleatoria X ,
cuya función de densidad está dada por f X (1)=1/8 , f X (2)=1/2 ,
f X (3)=3/ 8 y cero en cualquier otro valor. Ésta función de densidad se puede
descomponer como f X ( x)=(1/ 4) f 1 ( x)+(3/ 4) f 2 ( x) , d o n d e f 1 (1)=1/2 ,
f 1 (2)=1/ 2 y cero en cualquier otro valor y f 2 (2)=1/ 2 y f 2 (3)=1/ 2 cero en
cualquier otro valor. Para generar valores para X primero generamos un valor
para la variables aleatoria I que tiene la función de densidad f I (1)=1/ 4 ,
f I (2)=3/ 4 ; si el valor generado es k , entonces generamos un valor de
acuerdo a la función de densidad f k .

2.4 Generación de números aleatorios para variables


aleatorias continuas

2.4.1 Método de la transformada inversa.


Una propiedad importante de las distribuciones continuas de probabilidad es la

28
siguiente: Si una variable aleatoria X tiene una distribución de probabilidad dada
p o r F X , entonces la variable aleatoria Y definida por Y = F X ( X ) es
−1
uniformemente distribuida en [0, 1] ; por lo tanto, F X (Y ) tiene una función
de densidad F X . Usando esta propiedad, para generar números aleatorios que
sigan una distribución F X , podemos generar números y 1, y2, y 3, ..., yn con un
generador de números aleatorios uniformemente distribuidos en [0, 1] y
−1 −1 −1 −1
considerar F X ( y1 ) , F X ( y 2 ), F X ( y 3 ),... , F X ( y n ) .
Ejemplo. Para calcular números aleatorios que sigan una distribución exponencial
−α x
con parámetro α , s e t i e n e q u e F X (x )=1−e , de donde
−1
F X ( y)=−(1/ α)log ( y) . Luego, si u1 , u2, u3,. . . son números uniformemente
distribuidos en [0,1], −(1/ α)log (u1 ),−(1 /α)log (u2 ),−(1/ α) log (u3 ),... seguirán
una distribución exponencial con parámetro α
2.4.2 Método polar para generar números que sigan una distribución
normal.
Ahora se presenta un procedimiento para generar variables con una
distribución normal. Para esto, considérese una distribución normal bivariada en el
plano cartesiano con función de densidad:
x2+ y2
1 − 2
f XY (x , y)= e

X y Y son independientes ya que ésta función de densidad es igual al
producto de sus densidades marginales.
Si ahora definimos las variables aleatorias:
Y
para X ≠0 y Θ= π para X =0 .
2 2
U =X +Y y Θ=arctan
X 2
El determinante de la matriz jacobiana de la transformación definida por estas
nuevas variables es

29
[ ]
∂x ∂x
∂u ∂θ 2 2
=2cos θ +2 sen θ=2
∂y ∂y
∂u ∂θ

Y la función de densidad conjunta de U y de Θ es:

u
1 −2
f U Θ (u ,θ)= e

Las funciones de densidad marginales son:


1
1 − u 1
f U (u)= e 2 y f Θ (θ)=
2 2π
con u>0 y θ∈(0,2 π) . Como f U Θ (u ,θ)=f U (u) f Θ (θ) , U y Θ son
independientes; U es exponencialmente distribuida con parámetro 1/2 y Θ
es uniformemente distribuida en (0,2 π) .
S i U 1 es uniformemente distribuida en [0,1] , −2 log(U 1 ) tendrá una
distribución exponencial con parámetro 1/2 y s i U 2 es uniformemente
distribuida en [0,1] , 2 π U 2 es uniformemente distribuida en [0,2 π ] . Por lo
tanto,
X =√−2 log (U 1 ) cos(2 π U 2) (2.5a)
Y = √−2 log(U 1) sen(2 π U 2) (2.5b)
tendrán una distribución normal estándar y serán independientes. Para generar una
variable aleatoria normal con media μ y v a r i a n z a σ , simplemente
consideramos μ+σ X .
A l a t r a n s f o r m a c i ó n d e f i n i d a p o r x=√−2 log(u1)cos(2 π u2 ) y
y= √−2 log(u 1) sen(2 π u 2) , se le llama transformación de Box-Müller.

30
Otra forma de generar números aleatorios que sigan una distribución normal
estándar es utilizar el método de aceptación y rechazo. Si Z es una variable
aleatoria que sigue una distribución normal estándar, X=|Z| tiene una función de
2
x
2 −2 −x
densidad dada por f X ( x)= e y si consideramos f Y ( y)=e , se puede
√ 2π
utilizar el método de aceptación y rechazo para generar valores aleatorios para X ;
a partir de éstos, se generan valores para Z considerando ls valores de X con
1
signo positivo o negativo, con probabilidad . En este caso, puede tomarse
2
c=1.4 .

Ejercicios.
1. Pruebe que si X es una variable aleatoria continua con una función de
distribución F X , entonces la variable aleatoria Y = F X ( X ) es uniformemente
distribuida en [0,1] .
2. Un envase de cartón en forma de paralelepípedo debe tener un largo, ancho y
alto de 10 cm, 7 cm y 15 cm, respectivamente. Pero al construirlos, el largo, el
ancho y la altura siguen distribuciones normales independientes con medias 10, 7 y
15, respectivamente y las tres tienen una desviación estándar de 0.1 . Estime la
probabilidad de que el volumen de los recipientes sea menor que 1010 cm ³ .
3. Suponga que una variable aleatoria X tiene una función de densidad dada por
f X (x)=3 x ² si x ∈[0,1] y f X (x)=0 enotro caso . Genere una muestra de 1000
números aleatorios para la variable aleatoria X .
4. Genere una muestra de 1000 números aleatorios que sigan una distribución
exponencial con parámetro 0.5.

2.5 Generación de un proceso de Poisson

Un proceso de Poisson se refiere a eventos que ocurren en el tiempo. Si

31
N (t ) es el número de eventos que ocurren en el intervalo [0, t ] , N (t ) es un
proceso de Poisson con parámetro λ si:
1. N (0)=0 .
2. Si A y B son dos intervalos disjuntos, entonces los números de eventos
en A y B , son independientes.
3. P(N (t )=1)=λ t + σ(t )
4. P( N (t )> 1)=σ (t ) .
σ(t )
donde lim =0 .
t→ 0 t

Bajo estas hipótesis, el número de eventos que ocurren en [0, t ] sigue una
distribución de Poisson con parámetro λ t . En efecto, dividiendo el intervalo
[0, t ] en n pequeños intervalos de igual longitud t / n , la probabilidad de que
haya exactamente un evento en el intervalo es aproximadamente λ t / n y la de
λt
que no ocurra ningún intervalo es (1− ) , luego:
n

( )( )
k
λt λ t n−k
P(N (t )=k )= n ( 1− )
k n n

Al desarrollar esta expresión, se obtiene:


−k
(λ t )k n n−1 n−(k−1) λt
n
λt
... (1− ) (1− )
k! n n n n n
Y tomando el limite cuando n→ ∞ , se obtiene:
k
( λ t ) −λ t
P( N (t )=k )= e (2.6)
k!

Un proceso de Poisson homogéneo con parámetro λ , tiene la propiedad de


que el tiempo entre dos eventos consecutivos sigue una distribución exponencial
con parámetro λ . En efecto, si X t es la variable aleatoria que da el tiempo que

32
transcurre desde que ocurre un evento en t hasta que ocurre el próximo y N t es
el número de eventos que ocurren durante un tiempo t , entonces los eventos
[ X t > x ] y [ N t =N t +x ] son idénticos y por lo tanto, las probabilidades de ocurrencia
de los mismos son iguales, pero como el proceso es homogéneo,
P( N t +x −N t =0)=P(N x =0)=e−λ x . Luego, P( X t > x )=e−λ x y P( X t ⩽ x)=1−e−λ x , que
es la función de distribución de una exponencial con parámetro λ .
Por lo tanto, para generar los tiempos de ocurrencia de los eventos de un
proceso de Poisson se puede seguir el siguiente algoritmo:
1. t=0
2. Mientras t<T
2. Generar u , uniformemente distribuido en (0,1)
3. t=t −(1 / λ) log(u) .
Para un proceso de Poisson no homogéneo, en el que el parámetro λ es una
función de t , λ (t ) , el proceso puede generarse con el siguiente algoritmo;
1. t=0 .
2. Mientras t<T
3. Generar u1 y u2 , uniformemente distribuidos en (0,1) .

4. t=t−(1/ λ m )log(u1 )

4. Mientras u2 ⩾λ(t )/ λm

5. Generar u1 y u2 , uniformemente distribuidos en (0,1)


t=t−(1/ λm )log (u1 )

6. Aceptar t .
donde λ m> λ (t ) , para cualquier t . Este algoritmo se debe a Lewis y Shedler.

Ejercicios.
1. Generar una muestra de tamaño 100,000 con distribución N (2,1) y

33
realizar un histograma.

2. Si X tiene una distribuión N (μ , σ) , decimos que Y =e X tiene una


log-normal. Genere una muestra de tamaño 100,000 de una log-normal con
μ=2 y σ=1 y realice un histograma.
3. a) Genere 100 datos que sigan un proceso de Poisson homogéneo con
λ=0.4 . b) Genere 100 datos que sigan un proceso de Poisson no homogéneo
con λ=0.2 si t ∈[ 0,2 ) y λ=0.1 si t ∈[ 2, ∞ ) .
4. Sea Z= X 1 + X 2 +...+ X N , donde las X i son independientes y siguen,
todas ellas, una distribución normal con media 100 y desviación estándar 20 .
N es el número de eventos ocurridos en cierto intervalo de tiempo, cuya
ocurrencia sigue un proceso de Poisson con parámetro λ =10 . Simule
100,000 valores para Z , estime la media y la varianza de Z y realice un
histograma. (Para generar valores para una distribución normal, utilice el primer
método presentado en la sección anterior).

34
Capítulo III

3.1 Líneas de espera de un servidor, M/M/1.

Considérese un sistema en el que los usuarios de algún servicio llegan


siguiendo un proceso de Poisson con parámetro λ y que éstos son atendidos de
uno en uno en el mismo orden en el que van llegando. Supongamos también que
los tiempos de atención del usuario sigue una distribución exponencial con
parámetro μ . Este tipo de modelo se denota por M/M/1; la primer M se refiere a
que las llegadas de los usuarios siguen un proceso de Poisson; la segunda, a que los
tiempos de atención a los usuarios siguen una distribución exponencial; y el 1, se
refiere a un solo servidor.
Simular el comportamiento del sistema permite estudiar relaciones entre
variables, tales como el tiempo promedio de permanencia en el sistema, el
promedio del número de personas en el sistema, el promedio del número de
personas en la línea de espera y los parámetros λ y μ .
Una manera de simular el sistema consiste en pensar qué variable o variables
especifican el estado del sistema en cualquier instante y los eventos que ocurren
que cambian el valor de estas variables, o sea, que cambian el estado del sistema.
En nuestro caso, la variable que define el estado del sistema es el número de
personas en el sistema y los eventos que modifican su valor son la llegada de un
usuario al sistema y la salida de un usuario del sistema.
La idea para realizar la simulación será ir avanzando en el tiempo de evento en
evento. La variable t contendrá el tiempo actual durante la simulación; tl ,
contendrá el tiempo en el que ocurrirá la próxima llegada de algún usuario; ts
contendrá el tiempo en el que ocurrirá la próxima salida; y l contendrá el número
de personas en el sistema, que inicialmente supondremos como cero. Inicialmente,
suponemos que en t=0 ocurre la llegada del primer usuario; en ese momento, la

35
llegada del próximo usuario se dará en algún tiempo, que puede ser generado con
una exponencial con parámetro λ , o sea, tl=−(1 /λ)log(u) , donde u es un
número aleatorio en [0,1] . El próximo tiempo de salida será el tiempo necesario
para dar servicio al usuario, que puede obtenerse generando un número aleatorio
para una distribución exponencial con parámetro μ , esto es, ts=−(1/μ)log(u) ,
donde nuevamente, u es un número aleatorio en [0,1] . Ésta será la parte inicial
del algoritmo:

1. t=0 , infi=10000000
2. tl=0
3. ts=infi
4. l=0

Para continuar con el algoritmo, es conveniente considerar que habrá instantes en


los que el sistema esté vacío; en estos casos, el próximo tiempo de salida no estará
definido, podemos poner ts=infinito donde infinito , para efectos prácticos,
puede ser cualquier tiempo mayor que cualquier instante de tiempo considerado
durante la simulación. En cualquier momento, el próximo evento a considerar
ocurrirá en t=mínimo(tl ,ts) y será una llegada si t=tl y será una salida si
t=ts .
5. Mientras t<T
6. t=mínimo(tl ,ts)
7. Si t=tl efectuar 8, 9 ,10 y regresar a 5, sino, ir a 11.
8. l=l +1
9. tl=tl−(1 / λ)log(u1 )
10. Si l=1 , ts=t−(1 /μ)log(u3 )
11. l=l−1
12. Si l=0 , ts=infinito , sino ts=t−(1 /μ)log(u4 )
13. Regresar a 5.

Al traducir el algoritmo a algún lenguaje de programación es necesario

36
agregarle instrucciones de impresión de los valores de las variables, para poder
analizar la funcionalidad del algoritmo.
A continuación se presenta un programa que realiza el algoritmo anterior. El
tiempo de simulación está dado por el valor de la variable T . Los valores de
λ y μ están dados en las variables l_l y l_s, respectivamente. El programa
imprime en la pantalla dos columnas, la primera corresponde a las llegadas y la
segunda, a las salidas. De las líneas 100 a 170 se establecen las condiciones
iniciales; a partir de la línea 180 comienza la simulación. Primero se elije el menor
valor entre el tiempo de la próxima llegada y el tiempo de la próxima salida y
después, se procesa según si haya sido una llegada o una salida. Si es una llegada,
se incrementa en uno el número de personas en el sistema y se genera el el tiempo
de la próxima llegada; además, si después de incrementar el número de personas en
el sistema éste es uno, significa que antes de que llegara el cliente no había ninguno
en el sistema y por lo tanto, el próximo tiempo de salida está puesto como infinito,
pero como ahora ya hay un usuario, debe cambiarse el próximo tiempo de salida,
como el tiempo actual más un tiempo de atención al nuevo cliente. Si el próximo
evento es una salida de cliente, el número de usuarios en el sistema se disminuye en
uno; además, si después de haber disminuido en uno al número de clentes en el
sistema, éste es mayor que cero, significa que por lo menos había un cliente antes
de la llegada actual y por lo tanto, el próximo tiempo de salida va a ser el tiempo
actual más un tiempo de atención del cliente que pasa al servidor cuando ocurre la
llegada actual; por el contrario, si después de haber disminuido en uno al número
de clientes en el sistema, éste es cero, entonces hay que poner el próximo tiempo de
salida como infinito, ya que no hay clientes en el sistema.

100 T=10
110 l_l=1
120 l_s=2
130 t=0
140 infi=1000000000
150 ts=infi
160 tl=0
170 l=0

37
180 while t<T:
190 t=min(tl,ts)
200 if tl<=ts:
210 l=l+1
220 print("%10.2f"%tl,l)
230 tl=t-(1./l_l)*log(random())
240 if l==1:
260 ts=t-(1./l_s)*log(random())
270 else:
280 l=l-1
290 print(" ","%10.2f"%ts,l)
300 if l>0:
310 ts=t-(1./l_s)*log(random())
320 else:
330 ts=infi

En la Fig. 3 se muestra la gráfica del número de personas en el sistema como


una función del tiempo, resultado de una simulación con λ=2 y μ=2.2 .
Otra forma de simular la línea de espera es avanzando sobre los usuarios, en
lugar de sobre los eventos. Para ello, hay que considerar que cuando llega un
usuario, si el tiempo en que llega es mayor que el tiempo en el que sale el usuario
anterior, entonces pasa directamente al servidor para ser atendido; si por el
contrario, el tiempo de llegada es inferior al de salida del usuario anterior, entonces
tiene que esperar a que termine de ser atendido el usuario anterior para poder pasar
a ser atendido en el servidor. Es decir, el instante de tiempo en el que empieza a ser
atendido un usuario es el máximo del tiempo de salida del usuario anterior y del
tiempo de llegada del usuario actual.

38
Figura 3.

Si se denota por tl , tis y por ts a los tiempos de llegada, de inicio del


servicio y de salida de cada usuario, respectivamente, entonces un algoritmo
posible es el siguiente:

1. tl=0 , tis=tl y ts=tis−(1/μ)log(u1 ) .


2. Mientras ts< T ejecutar 3.
3. tl=tl−(1 / λ)log(u2) , tis=máximo (tl , ts) y ts=tis−(1/μ)log(u3 )
En el paso 3 hay que realizar las operaciones en el orden mostrado.

39
3.2 Líneas de espera con dos servidores.

Ahora se considera el caso en el que hay dos servidores.


1000 from random import expovariate,random
1010 infi=1000000
1020 l_l=2
1030 l_sa=1.5
1040 l_sb=1.5
1050 T=100
1060 t=0
1070 l=0
1080 tl=expovariate(l_l)
1090 tsa=infi
1100 tsb=infi
1110 while t<T:
1120 t=min(tl,tsa,tsb)
1130 if t==tl:
1140 l=l+1
1150 print("%10.3f"%t,l)
1160 tl=tl+expovariate(l_l)
1170 if l==1:
1180 if random()<0.5:
1190 tsa=t+expovariate(l_sa)
1200 else:
1210 tsb=t+expovariate(l_sb)
1220 if l==2:
1230 if tsa<infi:
1240 tsb=t+expovariate(l_sb)
1250 else:

40
1260 tsa=t+expovariate(l_sa)
1270 elif t==tsa:
1280 l=l-1
1290 print(" ","%10.3f"%t," por a",l)
1300 if l>1:
1310 tsa=t+expovariate(l_sa)

1320 else:
1330 tsa=infi
1340 else:
1350 l=l-1
1360 print(" ","%10.3f"%t," por b",l)
1370 if l>1:
1380 tsb=t+expovariate(l_sb)
1390 else:
1400 tsb=infi

Los cambios importantes están entre las líneas de 1130 hasta 1260. Durante la
llegada de un cliente, si después de aumentar en uno el número de personas en el
sistema, ésta variable tiene el valor uno, significa que antes de la llegada actual no
había clientes en el sistema, por lo tanto, el nuevo cliente podrá escoger el servidor
en el que será atendido (en el código se supuso que escoge con igual probablidad a
cualquiera de ellos). Si después de aumentar en uno el número de personas en el
sistema, ésta variable tiene el valor dos, significa que antes de llegar el cliente
actual, había una persona en el sistema y la estaban atendiendo en alguno de los dos
servidores; el nuevo cliente pasará al servidor que está vacío.
Ejercicios.
1. Mediante simulación, obtenga una gráfica de la media del número de
personas en el sistema en función del tiempo, considerando los siguientes valores:
a) μ=2.2 , λ=2.0 y t=100, 200, ... , 1000, 2000 ,3000 , ... ,10000 .
b) μ=2.0 λ=2.2 t=100, 200, ... , 1000, 2000 , 3000, ... ,10000 .

41
c) ¿Qué diferencia observa en los resultados obtenidos en a) y en b)?
2. Realice la misma actividad que en el problema anterior considerando al
tiempo promedio de permanencia en el sistema, en lugar del número de personas
promedio en el sistema.
3. Considere μ=2.2 , λ=2.0 . Estime por simulación, el valor esperado y
la varianza del número de personas atendidas en el intervalo de tiempo [0,240] .
4. a) Considere μ=2.2 , λ=2.0 . Estime el valor esperado del número de
personas atendidas en el intervalo de tiempo [0, 200] . b) Estime ésta misma
cantidad, pero considerando que se tienen dos servidores, ambos con μ=1.1 , y
λ=2.0 .
5. Considere dos líneas de espera, una con los parámetros μ=2.0 λ=2.2
y otra, con los parámetros μ=2.2 λ=2.4 . ¿Cuál de ellas atiende a un mayor
número de personas en el intervalo de tiempo? Fundamente su respuesta.

3.3 Inventarios.

Primero, se presenta brevemente un modelo sencillo determinista. Supóngase


que un negocio distribuye artículos de un cierto tipo de acuerdo a las siguientes
reglas: 1. La tasa de artículos solicitados por los clientes por unidad de tiempo o
demanda es una constante d ; 2. El proveedor del artículo proporciona al negocio
la cantidad C solicitada en cualquier momento de manera inmediata; 3 El
inventario no puede estar vacío.
El primer asunto importante a considerar es el costo de mantener el inventario
bajo las condiciones mencionadas. El costo de cubrir un pedido de C artículos es
igual a un costo fijo F , más el costo de cada artículo a multiplicado por el
número de artículos C , esto es, F +aC . El costo de mantener un artículo en el
inventario por unidad de tiempo es r .
Si al inicio se surten C artículos, éstos se venderán en un periodo de tiempo
C / d . Al final de éste periodo será necesario volver a suplir otros C artículos y

42
así sucesivamente. El número de artículos presente en el inventario al tiempo t ,
durante el primer ciclo es C−dt , Entonces el costo durante todo el ciclo es:
C /d 2

∫ (C−dt )r dt = rC
2d
0

Y como el costo de adquirir los C artículos es F +aC , el costo total


durante el ciclo es:
2
rC
CT =F +aC+ (3.1)
2d
Puesto que el ciclo es de duración C / d , el costo por unidad de tiempo es:

dF rC
cT = +ad + (3.2)
C 2

Éste costo tiene un valor mínimo cuando C=


√ 2 dF
r
.

Sin embargo, en la práctica, los clientes pueden llegar siguiendo un proceso de


Poisson con cierto parámetro λ , y cada cliente pedirá una cantidad aleatoria de
artículos. Además, los pedidos no podrán surtirse de inmediato, sino que pasará un
tiempo aleatorio entre que se haga el pedido y que éste se surta. Bajo éstas
consideraciones tenemos un modelo estocástico, en el cual, el costo por ciclo, por
ejemplo, deberá estimarse por simulación. Además, se supone que en el momento
que el inventario tiene un valor menor que s se hace el pedido para llevarlo a un
valor S .
Un algoritmo posible para el caso en el que el cliente pida exactamente un
artículo es el siguiente:
Generar el primer tiempo de llegada.
Poner el primer tiempo de reposición como infinito.
Poner indicador=0.
Mientras el tiempo sea menor que el tiempo total:
Tomar el mínimo del próximo tiempo de llegada de un cliente y del tiempo
de la próxima reposición.
Si el minimo es un tiempo de llegada:

43
Si el número de artículos disponibles es mayor que cero:
Disminuirlo en uno.
Generar el próximo tiempo de llegada.
Si el número de artículos en el almacén es menor que el nivel mínimo
y el indicador es cero:
Generar el tiempo en el que será surtido el próximo pedido.
Poner indicador=1.
Si el mínimo es un tiempo de reposición:
Poner el número de artículos en el inventario al nivel máximo.
Poner el tiempo de la próxima reposición como infinito.
Poner indicador=0.

Figura 4

En la Fig. 4 Se muestra el nivel de inventario como una función del tiempo,


los parámetros son:
T=720 minutos.
S=500 artículos.
s=50 artículos.

44
λ=2 clientes / hora
α=2 artículos /cliente
Tiempo entre pedido y entrega=24
F=10 pesos.
a=1.5 pesos por artículo.
r=0.01 pesos por artículo por hora.

Un programa posible para realizar el algoritmo es:


from math import log
import matplotlib.pyplot as plt
from numpy import *
def genera(lamb,t):
return t-(1.0/lamb)*log(random.uniform(0,1))
def pedido(lamb):
return random.poisson(lamb)
infi=100000000
T=270
S=500
s=50
C=S
lamb=2
lamb1=2
lapso=24
t=0.0
tl=genera(lamb,t)
v=0
nv=0
F=10
a=1.5
precio=5

45
r=0.01
costo_inv=0
costo_ord=F
costo_total=0
tr=infi
l=[]
t_l=[]
indicador=0
while t<T:
l.append(C)
t_l.append(t)
ta=t
t=min(tl,tr)
costo_inv=costo_inv+(t-ta)*r*C
if tl<tr:
p=pedido(lamb1)
if C>=p:
v=v+p
C=C-p
else:
v=v+C
nv=nv+p-C
C=0
print("%10.3f"%tl,',',C)
tl=genera(lamb,tl)
if C<s and indicador==0:
tr=t+lapso
indicador=1
print("Ordena ","%10.3f"%t,"%10.3f"%tr)
else:
costo_ord=costo_ord+(S-C)*a
C=S
indicador=0

46
tr=infi
print("Abastecmiento ","%10.3f"%t,' ',C)
print('Costo=', costo_inv+costo_ord)
print('Vendidos=',v)
print('No vendidos=',nv)
print('Ganancia=',v*precio-costo_inv-costo_ord)
plt.rcParams['font.size']=16
plt.xlabel('Tiempo')
plt.ylabel('Nivel del inventario')
plt.title('Número de articulos en el'+'\n'+'inventario contra tiempo')
plt.plot(t_l,l,color='black')
plt.tight_layout()
plt.savefig('NotIn1.png',dpi=600)
plt.show()
En la Fig. 5 se muestra un gráfico generado por el programa.

Figura 5.

47
Ejercicios.
1. En un problema de inventario tal y como está planteado en la sección, los datos
son:
T=720 minutos.
S=500 artículos.
s=50 artículos.
λ=2 clientes/ hora
α=2artículos /cliente
Tiempo entre pedido y entrega=24 (fijo)
F=10 pesos.
a=1.5 pesos por artículo.
r=0.01 pesos por artículo por hora.
a) Estimar el valor esperado del tiempo que tarda esperado del tiempo que
transcurre hasta que el inventario se encuentre vacío. b) La proporción del tiempo
durante el cual el inventario es menor de 50 artículos.
2. Resuelva el problema anterior suponiendo que los tiempos entre la realización
del pedido y la entrega siguen una distribución exponencial con parámetro 1/24 .

3.4 Reparación y substitución de máquinas.

Un taller para poder operar requiere que n máquinas funcionen


simultáneamente. El tiempo que una máquina dura funcionando está dado por una
distribución de probabilidad F; cuando una máquina falla, se manda a reparar e
inmediatamente es sustituida por una de repuesto, si la hay. El taller de reparación,
repara las máquinas de una en una y el tiempo que tarda en cada una sigue una
distribución G. Hay s máquinas de repuesto. Interesa el valor esperado hasta que el
taller detiene su ejecución; esto ocurre cuando se descompone una máquina y no

48
hay ninguna disponible para substituirla.
Un algoritmo posible para simular el comportamiento de las máquinas del
taller es el siguiente:

n=5, s=4, disp=5, td=[]


Agrega a la lista td los próximos tiempos de descompostura de cada máquina,
de acuerdo a su posición.
tdp=mínimo de los próximos tiempos de descompostura de las máquinas.
tsp=infinito
l=0
Mientras el número de máquinas disponibles sea mayor que cero:
t=mínimo(tdp,tsp)
Si t=tdp:
disp=disp-1
l=l+1
k=posición de la máquina que se descompone.
Si l=1:
tsp=t+G(beta)
De otro modo:
l=l-1
disp=disp+1
Si l>0:
tsp=t+G(beta)
En otro caso:
tsp=infinito

A continuación se presenta el código de un programa para realizar el algoritmo


anterior, suponiendo que F y G son exponenciales. El programa imprime el
tiempo en que ocurre una descompostura y la posición, el número de
máquinas disponibles para reemplazar y los tiempos de descompostura
próximos de cada una de las máquinas.

from math import log


from pylab import *
def F(alfa):
return (-1/alfa)*log(random())
def G(beta):

49
return (-1/beta)*log(random())
def impri(l):
for i in range(len(l)):
print("%8.3f"%l[i],end='')
print('\n')
infi=100000000
alfa=1/50
beta=1/5
n=5
s=4
infi=100000000
disp=s
td=[]
for i in range(n):
td.append(F(alfa))
tdp=min(td)
tsp=infi
l=0
while disp>0:
t=min(tdp,tsp)
if t==tdp:
disp=disp-1
l=l+1
k=-1
for i in range(n):
if tdp==td[i]:
k=i
td[k]=t+F(alfa)
if l==1:
tsp=t+G(beta)
tdp=min(td)
print("_____________________")
print("Descompostura ","%8.3f"%t," Posición ",k," Disponibles ",disp)

50
impri(td)
if t==tsp:
l=l-1
disp=disp+1
if l>0:
tsp=t+G(beta)
else:
tsp=infi
print("_____________________")
print(" Sale máquina reparada
","%8.3f"%t,”Disponibles “,disp,'\n')
print(t)

A continuación se presenta la salida obtenida por una ejecución del programa:

_____________________
Descompostura 3.244 Posición 0 Disponibles 3
44.816 75.575 32.373 13.039 20.921

_____________________
Descompostura 11.648 Posición 0 Disponibles 3
44.816 75.575 32.373 13.039 20.921

_____________________
Sale máquina reparada 11.648 Disponibles 4

_____________________
Descompostura 13.039 Posición 3 Disponibles 3
44.816 75.575 32.373 58.532 20.921

_____________________
Descompostura 14.517 Posición 3 Disponibles 3
44.816 75.575 32.373 58.532 20.921

51
_____________________
Sale máquina reparada 14.517 Disponibles 4

_____________________
Descompostura 20.921 Posición 4 Disponibles 3
44.816 75.575 32.373 58.532 29.184

_____________________
Descompostura 29.035 Posición 4 Disponibles 3
44.816 75.575 32.373 58.532 29.184

_____________________
Sale máquina reparada 29.035 Disponibles 4

_____________________
Descompostura 29.184 Posición 4 Disponibles 3
44.816 75.575 32.373 58.532 118.587

_____________________
Descompostura 32.373 Posición 2 Disponibles 2
44.816 75.575 169.539 58.532 118.587

_____________________
Descompostura 44.816 Posición 0 Disponibles 1
63.258 75.575 169.539 58.532 118.587

_____________________
Descompostura 45.587 Posición 0 Disponibles 1
63.258 75.575 169.539 58.532 118.587

_____________________
Sale máquina reparada 45.587 Disponibles 2

52
_____________________
Descompostura 47.434 Posición 0 Disponibles 2
63.258 75.575 169.539 58.532 118.587

_____________________
Sale máquina reparada 47.434 Disponibles 3

_____________________
Descompostura 53.738 Posición 0 Disponibles 3
63.258 75.575 169.539 58.532 118.587

_____________________
Sale máquina reparada 53.738 Disponibles 4

_____________________
Descompostura 58.532 Posición 3 Disponibles 3
63.258 75.575 169.539 89.937 118.587

_____________________
Descompostura 63.258 Posición 0 Disponibles 2
71.037 75.575 169.539 89.937 118.587

_____________________
Descompostura 71.037 Posición 0 Disponibles 1
176.221 75.575 169.539 89.937 118.587

_____________________
Descompostura 75.575 Posición 1 Disponibles 0
176.221 203.747 169.539 89.937 118.587

75.5747524286

53
La salida del programa permite hacer un seguimiento muy preciso de la
operación del mismo, para constatar que la operación del programa es la
esperada.
Las primeras versiones de los programas correspondientes a la aplicación
de algún modelo, siempre deberán imprimir en la pantalla los detalles de su
operación para facilitar la validación del mismo.

Ejercicios.
1. Considera un problema de reparación de máquinas como el planteado en la
sección en el que F y G son exponenciales con parámetros 1/40 y 1/4 ,
respectivamente, n=6 y s=3. a) Estimar el tiempo que transcurre hasta que el
taller tiene que suspender la actividad. b) Estimar el valor medio del número
de máquinas disponibles para substituir , en el intervalo de tiempo desde cero
hasta que el taller tiene que suspender la actividad. c) ¿Cómo cambian las
respuestas a los incisos anteriores si variamos a s como s=4, 5, 6?
2. Resuelva el problema anterior suponiendo que el tiempo de reparación de
cada máquina es 4 con probabilidad 1.

3.5 Ejercicio de opciones financieras.

Una opción es un contrato por medio del cual se adquiere el derecho,


pero no la obligación, a comprar una acción a un precio K llamado precio
de ejercicio en un tiempo especificado. Para adquirir tal derecho se requiere
del pago de una cierta cantidad c por cada acción, llamada prima.
Las opciones europeas solamente pueden ejercerse en una fecha
determinada, mientras que las americanas, pueden ejercerse en cualquier
momento.
Para el caso de una opción europea, si el precio de la opción al tiempo
T , S (T ) , es mayor que el precio de ejercicio K se optará por comprar;
en caso contrario, no se realizará la compra. Por lo tanto, la ganancia será:

54
−c{
G= S (T )− K −c si S (T )> K
en otro caso
(3.3)

Si se supone que el precio de la acción sigue un movimiento Browniano


geométrico con deriva μ y volatilidad σ , entonces:

2
(μ− σ )Δ t +σ ϵ( √ Δt )
2
S (t +Δ t )=S(t )e (3.4)

donde ϵ( √ Δ t) es una variable aleatoria que sigue una distribución normal


con desviación estándar √ (Δ t ) . Es importante observar que los ϵ son
independientes en intervalos de tiempo disjuntos. Si los parámetros μ y
σ están referidos a un día, entonces por medio de simulación pueden
generarse los valores S (1), S(2) , ,S (3), ... , S (T ) ; a partir de S 0 se
obtendrá S 1 , a partir de éste, se obtendrá S 2 , y así sucesivamente, hasta
S (T ) . Para ello, se puede utilizar la fórmula recursiva:

2
(μ− σ )+σ ϵ(1)
2
S (i +1)=S(i)e para i=0, ,1 ,2 ,... ,T −1 (3.5)

Si solamente se quiere simular el precio de la acción al tiempo T , se


puede considerar:

2
(μ− σ )T +σ ϵ( √(T ))
2
S (T )=S(0)e (3.6)

Ejercicios.

1. Considere una opción europea a 180 días de una acción cuyo precio inicial
es 1, el precio de ejercicio es 1.01 , el pago por tener derecho a la opción es de
0.03. El precio de la acción sigue un movimiento Browniano geométrico con deriva
0.0029 y volatilidad 0.05, considerados ambos parámetros con respecto a un día. a)
¿Cuál es el valor esperado de la ganancia? b) ¿Cuál es la probabilidad de que la

55
ganancia sea negativa?

3.6 Verificación.

La verificación se refiere a si el programa en computadora opera de la manera


esperada. Por otro lado, la validación se refiere al modelo en sí, por ejemplo, si las
hipótesis hechas en el modelo son válidas. Esta sección se refiere a verificación del
programa.
Uno de los primeros aspectos se refiere a verificar que el programa no tenga
errores; en ésta tarea es importante tener una buena técnica de programación, por
ejemplo, modular, que permita revisar cada módulo en forma independiente. Por
supuesto, es útil también que el programa pueda leerse con facilidad, que no tenga
complicaciones innecesarias. Es conveniente definir funciones, por ejemplo, para
generar números aleatorios, que puedan probarse aisladamente.
En muchos casos, es posible comparar los resultados intermedios que produce
el programa con los que pudieran obtenerse en forma manual. Por ejemplo, en el
caso de una línea de espera con un solo servidor, es posible generar los primeros
eventos con papel y lápiz y comparar los resultados con los que produce el
programa. Muchos entornos de programación permiten la depuración, es decir, que
mientras el programa se va ejecutando, pueden mostrar el número de línea que está
ejecutando y los valores de las variables importantes.
Otra técnica útil para verificación, cuando es posible aplicarla, es compara los
resultados dados por el programa con los teóricos. Por ejemplo, en las líneas de
espera de un solo servidor del tipo M/M/1, si λ<μ , se sabe que el número de
personas en el sistema alcanza un estado estacionario con un valor λ /(μ−λ) ,
luego podemos realizar una simulación con nuestro programa con un valor de λ
menor que μ y observar si produce el resultado correcto.
En la sección 3.4 está ejemplificada una parte importante de la verificación del
modelo computacional. En el programa para simular la reparación y substitución de
máquinas en un taller, se han insertado muchas líneas solamente para poder ver en

56
la pantalla la ocurrencia de eventos y cómo cambian los valores de las variables
cuando ocurren los eventos; esto nos permite estudiar si el comportamiento del
programa está de acuerdo al modelo. La realización de éste trabajo es
imprescindible, porque siempre es posible que el programa elaborado no se apegue
totalmente al modelo.
Para la validación del modelo es importante que, cuando sea posible, se
compare el comportamiento del modelo con el de la realidad que pretende modelar.
Por ejemplo, tomar mediciones de las entradas y las salidas del sistema para
compararlas con los resultados obtenidos por el modelo. Por otro lado, con
frecuencia las hipótesis hechas en el modelo admiten una verificación en la
realidad, como lo es el caso de que los clientes lleguen a una línea de espera de
acuerdo a un proceso de Poisson.

57
Capítulo IV

4.1 Interpretación estadística de resultados.

Usualmente, al realizar una simulación se quiere estimar algún parámetro de


un modelo igual al valor esperado de alguna variable aleatoria X . Por ejemplo,
nos puede interesar estimar el valor esperado del número de usuarios atendidos en
una línea de espera durante un período específico de tiempo. Para ello, repetimos la
simulación con los mismos parámetros, digamos n veces; así se obtiene una
muestra aleatoria X 1 , X 2, X 3, ... , X n y un estimador del valor esperado de X es
la media muestral X . La esperanza de la media muestral es igual a la esperanza
de X , por lo tanto, la media muestral es un estimador insesgado de la esperanza
de X . La varianza de X es igual a V ( X )/ √ n , luego podemos esperar que
cuando el número de repeticiones de la simulación crece, la variación de los
resultados será más pequeña. Finalmente, para n grande, la distribución de
probabilidad de la media muestral es muy similar a una normal. Por lo tanto,
podemos dar intervalos de confianza de nuestra estimación para la esperanza X .
Dado que generalmente el número de repeticiones de una simulación es lo
suficientemente grande como para que podamos asumir que X sigue una
distribución normal, entonces el intervao de confianza de α % tiene la forma:

[ X −z α σ , X +zα σ ] (4.1)
√n √n

donde σ es la desviación estándar de X zα y es un valor para la distribución


normal estándar tal que el área a la derecha de zα más el área a la izquierda de
−zα es α . Puesto que usualmente no se conoce σ , ésta se estima a través
s . La longitud del intervalo de confianza disminuye a medida que n crece, de
tal manera, que si se desea que la longitud del intervalo sea menor que e , se

58
( )
2
2 ze σ
tiene que tomar n> . Al usar ésta fórmula hay que considerar que no se
e
conoce σ ; usualmente se estima σ con el estimador :


n
1
s= ∑
n−1 i =1
(x i − x̄)
2
(4.2)

En muchos casos, se requiere más información acerca de la distribución de la


variable X y es conveniente obtener un histograma de frecuencias para la
variable. En tal caso, hay que estimar la probabilidad p de que la variable
aleatoria X tome un valor en algún intervalo [a , b] . Definamos a la variable
aleatoria Y como 1 si X toma un valor en [a , b] , y como 0 en caso
contrario. Entonces, Y es de Bernoulli con parámetro p . Dada una muestra
aleatoria Y 1 , Y 2 ,... , Y n , el estimador de máxima verosimilitud para p es
n
p^ =∑ Y i / n . Para n grande, que es el caso en simulación, el estimador p^
i=1

sigue aproximadamente una distribución normal con media p y desviación


estándar √ p (1− p)/ n . Esto permite dar un intervalo de confianza para la
estimación de p .

Ejemplo. Supóngase que tratamos de aproximar el valor de π lanzando


dardos al cuadrado unitario ubicado en el primer cuadrante y observando cuántos
caen en la parte del círculo unitario, centrado en el origen, que está en el primer
cuadrante. La proporción de dardos que caen dentro del círculo es π /4 . Sea
X la variable aleatoria que vale uno si el dardo cae dentro del círculo y cero en
caso contrario. Y sea X 1 , X 2 ,... , X n una muestra aleatoria; X̄ es el estimador
de máxima verosimilitud para la proporción p de dardos que caen dentro del
círculo. Al repetir el experimento un millón de veces, es decir, n=1000,000 , se
obtuvo 0.78496, como estimador para p , de donde también se obtuvo a [0.7843,
0.7856] como intervalo de confianza del 90 % para p , y a [3.1371, 3.1426]
como intervalo de confianza del 90 % , para π .

59
Figura 6.

A continuación se presenta el código de un programa para estimar π con los


correspondientes intervalos de confianza.

1000 from random import random


1010 from math import sqrt
1020 nm=1000000
1030 cuenta=0
1040 l=[]
1050 for i in range(nm):
1060 x=random()
1070 y=random()
1080 if x*x+y*y<1:
1090 cuenta=cuenta+1
1100 m=cuenta/nm
1110 print(m)
1120 delta=sqrt(m*(1-m))/sqrt(nm)

60
1130 print("[","%10.4f"%(m-delta),"%10.4f"%(m+delta),"]")
1140 print("[","%10.4f"%(4*(m-delta)),"%10.4f"%(4*(m+delta)),"]")

Con frecuencia, al realizar simulaciones se obtienen realizaciones de muestras


aleatorias, a partir de las cuales se desea estimar algún parámetro θ empleando
algún estimador θ^ , que es función de la muestra aleatoria. Y, naturalmente, se
desea tener alguna medición acerca de qué tanto puede diferir el valor estimado del
parámetro. Para ello se considera el error cuadrático medio:

^
ECM =E (θ−θ)
2
(4.3)

Desarrollando, se verifica que:

^
ECM =V (θ)+( ^
E( θ)−θ)
2
(4.4)

Si el estimador es insesgado, el segundo término del miembro derecho de la


igualdad anterior es cero.
En el caso particular en el que el parámetro sea la esperanza de la variable
2
aleatoria, el ECM se calcula fácilmente y es igual a s / n . Pero, en muchos
casos, si no se conoce la distribución de la variable, no se podrá calcular el
ECM ; en éstos casos, se puede utilizar la técnica de “bootstrap” para estimar el
ECM . Se toma una realización de una muestra aleatoria de tamaño n ,
digamos x1, x2, x3, ... , x n y se calcula el valor del parámetro sobre ésta muestra;
l u e g o s e g e n e r a n n números aleatorios n1, n2 ,n3... ,nn uniformemente
distribuidos sobre {1, 2, 3,... , n} (con reemplazo) y se construye la muestra
xn , xn , x n ,... , x n . Repitiendo este proceso, se pueden obtener m muestras de
1 2 3 n

este tipo. Sobre cada una de ellas, se calcula la diferencia del valor del parámetro
de la muestra original con cada uno de los valores obtenidos en cada muestra, se
elevan al cuadrado éstas diferencias y se promedian sobre las m diferentes
muestras.
Con éste procedimiento se generan muestras aleatorias de una población que
sigue una distribución dada por la muestra original; ésta estará tan cercana a la

61
distribución teórica de la muestra original tanto cuanto más grande sea n .

Ejemplo. El programa que se muesta a continuación, primero crea una


muestra de tamaño 10,000 que sigue una distribución exponencial con función de
densidad (1/ α) e(−x / α) para x>0 c o n α=0.5 . A continuación el programa
estima el parámetro α , que es el valor esperado de la variable, usando la técnica
de “bootstrap”, generando m=1000 muestras. El valor estimado para α fue de
−5
0.4988 y la estimación para el ECM fue de 2.3831×10 . En este caso el
−5
valor exacto del ECM es de 2.5×10 .

1000 from random import random,randint


1010 from math import log
1020 mu=[]
1030 alfa=0.5
1040 n=10000
1050 for i in range(n):
1060 mu.append((-alfa)*log(random()))
1070 t=0
1080 for i in range(n):
1090 t=t+mu[i]
1100 t=t/n
1110 m=1000
1120 suma=0.
1130 for i in range(m):
1140 mu1=[]
1150 for j in range(n):
1160 k=randint(0,n-1)
1170 mu1.append(mu[k])
1180 s=0
1190 for j in range(n):
1200 s=s+mu1[j]
1210 s=s/n
1220 suma=suma+(s-t)**2

62
1230 print(suma/m)

Ejercicios.

1. Con respecto al ejemplo de ésta sección, verificar que el valor exacto del
−5
ECM es de 2.5×10 .
2. Elaborar un programa similar al de ésta sección para la mediana de una
muestra con una distribución exponencial dada por (1/ α) e(−x /α) para x>0 con
α=0.5 y que estime el ECM .

4.2 Métodos de reducción de varianza.

4.2.1 Variables antitéticas.


Supongamos que tenemos una muestra aleatoria X 1 , X 2 , X 3 , ... X n de una
cierta población y que ^θ1 y ^θ2 son dos estimadores de algún parámetro θ .
Entonces la media de ambos estimadores tiene una varianza dada por:

θ^ 1 + θ^ 2 1
V( )= ⋅(V ( θ^ 1 )+V ( θ^ 2 )+2 Cov ( θ^ 1 , θ^ 2 )) (4.5)
2 4
El máximo valor de la varianza de la media se da cuando
Cov( θ^1 , θ^2 )=√ V ( θ^1 )⋅V ( θ^2 ) . Si V ( θ^2 )=V ( θ^1 ) , éste máximo tiene un valor de
V ( θ^ 1 ) . Por lo tanto:

θ^1 + θ^2
V( )⩽V ( θ^1 ) (4.6)
2
Es decir, en ningún caso, la varianza de la media de los dos estimadores puede
ser mayor que la varianza de uno de ellos. Si la covarianza es negativa, la varianza
de la media será menor que la varianza de uno de ellos.
Si ^θ1 =f (U 1 ,U 2 ,... , U n ) , d o n d e U 1 ,U 2 , ... , U n son independientes y

63
uniformemente distribuidas en [0,1] y f es creciente o decreciente, entonces la
covarianza de ^θ1 y ^θ2 =f (1−U 1 ,1−U 2 ,... ,1−U n ) , será negativa. A la variable
^θ se le llama antitética de ^θ .
2 1

Ejemplo. Supóngase que se quiere calcular la integral ∫ 1 /(1+ x)dx . El


0

1 1 1
+ +...+
1+U 1 1+U 2 1+U n
estimador del valor de la integral es ^θ1 = y
n
1 1 1
+ +...+
^θ = 2−U 1 2−U 2 2−U n
. La covarianza entre estos dos estimadores es:
2
n
n n n
1 1 1 1
Cov (^θ 1 ,^θ 2 )= ∑ ∑Cov ( , )= ∑Cov ( , )
i=1 j=1
1+U i 1+U j i=1 1+U i 2−U i

Ahora:
1 1 1 1 1 1 log(2)(2−3 log(2))
Cov ( , )= E( )− E( ) E( )=
1+U i 2−U i 1+U i 2−U i 1+U i 2−U i 3
Substituyendo esta expresión en la anterior:
log(2)(2−3log(2))
Cov (^θ 1 ,^θ 2 )=n
3
Y la varianza de ^θ1 es:

1 1 1
+ +...+
1+U 1 1+U 2 1+U n 1 1 1 1
V (^θ 1 )=V (
2
)= V ( )= ( −log(2) )
n n 1+U i n 2
La disminución de varianza por unidad de varianza de ^θ1 es:

0.01836
(51.1588(0.01955 n−0.5(0.01955 n− )))
n
n

64
≈51.1588(0.01955−(0.01955)(0.5))=0.50
para n grande.
Es decir, se obtiene una reducción de varianza del 50 % .
Ejercicios.
1. Con relación a la fórmula 4.5, ¿Porqué el máximo valor de la varianza de la


media se da cuando Cov( θ^1 , θ^2 )= V ( θ^1 )⋅V ( θ^2 ) ?
1

2. Para aproximar la integral ∫ 1 /(1+ x2)dx=π/ 4 , se puede considerar el


0

1 1 1
2
+ 2
+...+
^ 1+U 1 1+U 2 1+U 2n
estimador θ1 = , donde U 1 ,U 2 ,... ,U n son variables
n
aleatorias independientes y uniformemente distribuidas en [0,1] . Calcular la
varianza de ^θ .1

3. Mediante simulación, aproxime el valor de la integral ∫ 1 /(1+x)dx=log(2) .


0

Después, aproxime la misma integral usando la técnica de variables antitéticas y


compare los errores relativos; repítalo varias veces.
4. Por medio de simulación estime la varianza de X 1=1 /(U +1) , de
X 2=1 /((1−U )+1) y de la covarianza de X 1 y X 2 . A partir de estas
X1+ X2
estimaciones calcule V ( ) .
2

4.2.2 Método de variables de control.

Supongamos que se quiere estimar mediante simulación a un parámetro θ a


partir de los valores de una variable aleatoria X , cuyos valores son parte de la
salida de una simulación. Y supóngase que la la simulación también da valores para

65
otra variable aleatoria Y , c o n E(Y )=μY . La variable aleatoria
Z= X +c (Y −μY ) , tiene el mismo valor esperado que X , esto es, θ ; cualquiera
que sea el valor de c . La idea es encontrar un valor para c , para el cual, la
varianza de ésta variable sea lo menor posible. La varianza de Z está dada por:
V (Z)=Cov (Z , Z)=Cov ( X +c (Y −μY ), X +c (Y −μY ))
2
V (Z)=V ( x)+2 c Cov ( x , y)+ c V (Y )
Luego V (Z) tiene un mínimo para c=−Cov ( X ,Y )/V (Y ) , y éste mínimo
tiene un valor:
Cov( X ,Y )2
V ( Z)=V ( X )−
V (Y )

Puesto que el coeficiente de correlación entre X y Y está dado por


r XY =Cov ( X , Y )/ √ V ( x )⋅V (Y ) ,

V ( Z)=V ( X )⋅(1−r XY 2 )

Cuanto más cercano sea r XY a 1 ó a −1 , tanto menor será la varianza de Z.


1

Ejemplo. Supóngase que se quiere calcular ∫ 1+1x 2 dx= π4 , para aproximar el


0

valor de π . La variable X , salida de un programa de simulación, cuyo valor


esperado es igual a la integral es:
1 1
+...+
1+U 1 ² 1+U n ²
X=
n

Una variable de control Y puede ser:


U 1 +...+U n
Y=
n

La covarianza entre X y Y es:


log(2) π

2 8
Cov ( X ,Y )=
n
Y la varianza de Y es:

66
1
V (Y )=
12n
Por lo tanto el valor de c es:
log(2) π
c=−12( − )=0.5535
2 8
Y la varianza de Z es:

π+2 π ² log(2) π
− 12( − )²
8 16 2 8
V (Z)= −
n n

La varianza de X es:
π+2 π ²

8 16
V ( X )=
n
La reducción de la varianza es de 98.8 % .

Ejercicios.
2
1. Pruebe que el máximo valor de V (Z )=V ( x)+2 c Cov( x , y )+c V (Y ) se da
cuando c=−Cov ( X ,Y )/V (Y ) .
1
dx
2. Calcule por simulación la integral ∫ 1+ x . Luego, reduzca la varianza
0

U 1 +U 2 +... U n
utilizando a Y = . Calcule el porcentaje de reducción de la
n
varianza.

67
4.2.3 Por condicionamiento.

Supongamos que queremos estimar un parámetro θ , por medio de un


estimador X insesgado. Por la fórmula llamada de la varianza total:
V ( X )= E(V ( X | Y ))+V (E ( X |Y ))
(véase el apéndice) se deduce que:
V ( X )≥V (E( X | Y ))
Además, E (X |Y ) también será un estimador insesgado de θ , ya que
E (E (X |Y ))=E (X ) . Luego al utilizar al estimador E (X | Y ) , tenemos la
posibilidad de disminuir la varianza.
Ejemplo. Una manera de aproximar el valor de π es simular el lanzamiento
de dardos sobre el cuadrado unitario y observar cuántos caen dentro del cuarto de
círculo circunscrito. Para realizar la simulación, sean U 1 y U 2
uniformemente distribuidas en [0,1] e I la variable indicadora definida por:

I=
{
1 si U 1 ² +U 2 ²<1
0 en otro caso
La esperanza de I es π / 4 .
E (I | U 2 =u)=1⋅P (I=1 | U 2 =u)+0⋅P (I=0 | U 2=u)=P(U 1 ²+U 2 ²<1 | U 2 =u)

Ahora:
P(I =1|U 2 =u)=P (U 1 ²+U 2 ²<1 |U 2 =u)= P(−√ 1−u ²<U 1 < √ 1−u ²)= √1−u²
Por lo tanto:
E( I |U 2 )= √ 1−U 2 ²

Ahora bien,
2 π²
V (P(I |U 2 ))=V ( √ 1−U 2 ²)= − ≈0.05
3 16
Mientras que:

68
V (I )= π (1− π )≈0.169
4 4
La disminución porcentual de la varianza es de 99.7 % .
Ejercicios.
1
dx
1. Una manera de estimar el valor de la integral ∫ 1+ x
es lanzar dardos al
0

cuadrado [0,1]×[0,1] y observar cuántos de éstos puntos caen por debajo de la


gráfica de la función. Usar este método para estimar la integral. Y luego, usar el
método de condicionamiento para reducir la varianza. ¿En qué porcentaje redujo la
varianza?

69
Capítulo V
5.1 Introducción.

Respecto a la validación de los modelos construidos para simular algún


fenómeno de la realidad hay por lo menos dos aspectos fundamentales, uno de ellos
se refiere a la validez de los supuestos acerca de las distribuciones de probabilidad
de las variables involucradas en el fenómeno; el otro se refiere, a la funcionalidad
de los programas de computadora empleados.

5.2 Validación estadística.


5.2.1 Pruebas de bondad de ajuste.
En muchos procesos de simulación la validación acerca de las hipótesis que se
consideran acerca de la distribución de probabilidad de las variables involucradas
es indispensable. Por ejemplo, al modelar una línea de espera de un solo servidor
con frecuencia se supone que los ususarios llegan siguiendo un proceso de Poisson;
en tal caso, los tiempos entre llegadas consecutivas son independientes y siguen
una distribución exponencial. En este caso, la manera de validar nuestra hipótesis
es realizar una prueba de hipótesis acerca de si los tiempos entre llegadas
consecutivas siguen o no una distribución exponencial.
Para verificar si un conjunto de datos x1 , x 2, x 3 , ..., xm sigue o no una
distribución dada por una función F , se toman n intervalos iguales disjuntos
A 1 , A 2 , ..., An que contengan a los datos y se contabilizan el número de datos
f i que están en el i-ésimo intervalo, para cada uno de ellos. Por otro lado, bajo la
hipótesis, llamada hipótesis nula, de que los datos iniciales siguen una distribución
dada por F , el número esperado de datos que deberían estar en el i-ésimo

70
intervalo es ei =m ( F (bi )− F (ai )) , donde ai y bi son los extremos derecho e
izquierdo del i-ésimo intervalo. Bajo la hipótesis nula, la variable:

n 2
( f i−ei )
D= ∑ (5.1)
i =1 ei
2
sigue una distribución de χ con n− p , donde p es el número de parámetros
estimados que definen a F .

Ejemplo. Verificar si se puede suponer que los datos 0.134 1.054 0.469 0.090
1.629 0.074 3.132 8.095 2.210 2.154 0.040 1.834 0.682 0.500 1.347 0.383 0.326
0.761 7.031 1.816 3.855 0.206 2.478 5.084 0.202 0.204 0.999 4.957 1.893 0.462
1.316 3.553 1.292 0.565 0.158 0.845 2.457 1.662 1.025 4.307 2.781 0.149 0.273
2.426 0.938 0.790 0.620 1.040 5.101 0.778 0.480 2.624 1.103 3.144 2.614 4.242
1.677 0.892 3.351 4.272 2.547 4.625 7.433 0.472 0.269 4.516 1.732 1.070 1.335
0.244 0.195 0.910 1.909 6.052 2.120 0.219 1.792 0.014 0.174 0.327 3.587 1.383
0.577 0.198 5.404 2.032 0.351 1.734 2.255 0.077 2.866 0.748 1.310 3.389 1.879
0.845 1.954 0.393 2.036 3.618 proviene de una distribución exponencial o no.
Intervalo fi ei
[ 0.014 , 0.903 ] 39.000 37.849
[ 0.903 , 1.792 ] 19.000 23.417
[ 1.792 , 2.681 ] 19.000 14.488
[ 2.681 , 3.570 ] 7.000 8.963
[ 3.570 , 4.459 ] 6.000 5.546
[ 4.459 , 5.348 ] 5.000 3.431
[ 5.348 , 6.237 ] 2.000 2.123
[ 6.237 , 7.126 ] 1.000 1.313
[ 7.126 , 8.015 ] 1.000 0.813
[ 8.015 , 8.904 ] 1.000 0.503

2
El valor de D es 4.0753. Para 9 grados de libertad, P(χ >36.19)=0.01 . Luego,
la región de rechazo de la hipótesis nula a un nivel de significancia del 1 % es el
conjunto { x∈R | x>36.19 } . Como el valor de D no pertenece a la región de

71
rechazo, no se puede rechazar la hipótesis nula a un nivel de significancia del 1%.
Para verificar la bondad de ajuste también se utiliza la prueba de Kolmogorov-
Smirnov. Considérese una muestra de datos x 1 , x 2, x3 , ... , x m , ordenados en
forma ascendente y que se quiere verificar si provienen o no de una distribución
F . Primero, se determina la función de densidad acumulada empírica, dada por:

{
0 x <x1
S (x )= k xk ⩽ x<x k +1 (5.2)
m
1 x≥ xm

La estadística empleada para probar la hipótesis nula de que los datos


provienen de una distribución F , es:

D=Supremo | F (x )−S(x )| (5.3)


x

Se puede demostrar que la distribución de D bajo la hipótesis nula, no


depende de F . La distribución de D puede encontrarse en las tablas
correspondientes.
Como F es no-decreciente, el máximo de | F ( x)−S ( x)| tiene que darse
en alguno de los puntos xi ; éste hecho facilita el cálculo de D , ya que D
puede obtenerse como:

i i−1
D= Max { Max {| −F (x i )|}, Max {| −F (x i )|}} (5.4)
i=1,... , n−1 n i=2,... , n n

La Fig. 6 puede ayudar a entender ésta fórmula.

72
Figura 7

Ejemplo. Verificar si se puede suponer que los datos 0.436, 1.047, 1.568, 4.932,
3.818, 0.120, 3.367, 0.183, 1.425, 3.159, provienen de una distribución
exponencial. El valor estimado para el parámetro es 0.4987. En este caso,
F (x )=1−e−0.4987 x .
i xi i/ n F (x i ) |i /n−F (x i)| |F ( x i )−(i−1)/ n|

1 0.120 0.100 0.058 0.0419 --------


2 0.183 0.200 0.087 0.1127 0.0127
3 0.436 0.300 0.195 0.1046 0.0046
4 1.047 0.400 0.407 0.0068 0.1068
5 1.425 0.500 0.509 0.0087 0.1087
6 1.568 0.600 0.542 0.0576 0.0424
7 3.159 0.700 0.793 0.0930 0.1930
8 3.367 0.800 0.813 0.0134 0.1134
9 3.818 0.900 0.851 0.0490 0.0510
10 4.932 1.000 0.915 -------- 0.0145

D= Máx | F (x )−S (x )|=0.1930

73
Para una muestra de tamaño 10, P( D>0.410)=0.05 ; éste valor se obtiene de las
tabla para la distribución de D. Luego, a un nivel de significancia de 5 %, la región
de rechazo es { D | D>0.410 } . Como el valor D=0.1930 no está en la región de
rechazo, se concluye que no se puede rechazar H 0 al nivel de significancia
especificado.

Ejercicios.
1. Verifique la hipótesis de que la muestra 0.811, 1.491, 0.627, 0.365, 1.368, 1.386,
0.848, 0.502, 1.177, 0.447, proviene de una población que sigue una distribución
exponencial. Utilice una prueba de chi-cuadrada y una prueba de Kolmogorov-
Smirnov.
2. Verifique la hipótesis de que los datos 9.9602, 9.7313, 10.2611, 9.7755, 10.0374,
10.1625, 9.8777, 10.3733, 10.1853, 10.4190, 9.8410, 10.0697, 10.0947, 9.9652,
10.0482, 9.9197, 10.1855, 9.8417, 10.3788, 10.0078, 10.0309, 9.9197, 10.0023,
9.9924, 10.0789, 10.4128, 9.5809, 10.3255, 9.9295, 10.1004, 9.9244, 10.0576,
9.7026, 10.3345, 10.0497, 9.7416, 10.2721, 10.2124, 10.3154, 10.1698, 10.2594,
9.7189, 10.4893, 9.7221, 9.6767, 9.6867, 9.7955, 10.0013, 9.8699, 9.6303,
10.0264, 9.8520, 10.3640, 10.0887, 10.1144, 10.1127, 9.6343, 10.0133, 9.9088,
9.7563, 10.1438, 10.0122, 10.0837, 9.9286, 9.8706, 9.6269, 10.0140, 9.8148,
10.0410, 9.8920, 10.0491, 10.2817, 10.0433, 10.2659, 9.8463, 10.4007, 9.9834,
9.6468, 10.1388, 9.7332, 10.2421, 10.0909, 10.0916, 9.5068, 10.1067, 9.5760,
9.8612, 10.1703, 9.8964, 10.0454, 10.3437, 9.7423, 10.1985, 10.0944, 10.1657,
10.1020, 10.0290, 10.2598, 10.0417, 9.9599 siguen un movimiento Browniano
geométrico. ¿Cuáles son los valores estimados de la deriva y de la volatilidad?

5.2.2 El problema de las dos muestras.


Si se dispone de un conjunto de datos reales x 1 , x 2, x3 , ... , x n y de un
modelo para generar por medio de simulación datos del mismo tipo, digamos,
y1, y2, y3,. .. , y m , se puede realizar una prueba de la hipótesis nula de que ambas
muestras provienen de una población con una misma distribución, bajo el supuesto

74
de que tanto las x como las y son independientes, tal como la de Mann-Whitney.
Se agregan ambas muestras para formar una sola y se suman los rangos que
ocupan los datos de la muestra x obteniendo R x . Dado este valor, se calculan
U x =nm+n (n+1)/2−R x y U y =nm−U x . La prueba se basa en el estadístico
U=mín(U x ,U y ) . Para valores pequeños de n y m, digamos menores que 20, se
disponen de tablas para la distribución de U bajo la hipótesis nula. Para valores
mayores de n , U sigue aproximadamente una distribución normal con media
nm/ 2 y varianza nm(n+m+1)/ 12 .
Ejemplo. Pruebe la hipótesis de que las muestras 0.731, 0.461, 0.318, 0.127,
0.185, 0.283, 0.028, 1.086, 0.143, 0.056, 0.954, 0.457, 0.030, 1.199, 0.438 y
0.520, 1.102, 1.626, 0.760, 1.433, 1.527, 1.155, 0.281, 0.999, 0.383, 0.413,
3.120, 1.898, 1.386, 0.494, 3.325, 0.046, 1.350, 0.079, 1.237 provienen de una
misma distribución.
A continuación se presenta el listado ordenado de ambos conjuntos de datos. Los
números entre paréntesis son los rangos que ocupan los datos de la primer muestra
en la lista completa.
0.028(1) , 0.030(2) , 0.046, 0.056(4) , 0.079, 0.127(6) , 0.143(7) , 0.185(8) , 0.281,
0.283(10) , 0.318(11) , 0.383, 0.413, 0.438(14) , 0.457(15) , 0.461(16) , 0.494,
0.520, 0.731(19) , 0.760, 0.954(21) , 0.999, 1.086(23) , 1.102, 1.155, 1.199(26) ,
1.237, 1.350, 1.386, 1.433, 1.527, 1.626, 1.898, 3.120, 3.325
Sumando los valores entre paréntesis se obtiene R x =183 ; de donde U x =237 ,
U y =63 y U=63 . Suponiendo la aproximación normal para la distribución de
U , se obtiene z=−2.9 . Considerando que P(| Z |>1.96)=0.05 , el valor de
z=−2.9 está en la región de rechazo de la hipótesis nula a un nivel de
significancia de 5 % ; por lo tanto, se rechaza la hipótesis nula que las dos
muestras provienen de una misma distribución al nivel de significancia del 5 % .
Otra forma de realizar esta prueba es basarse directamente en el estadístico
R . Para muestras pequeñas, la distribución de probabilidad de R se puede
obtener con fórmulas recursivas. Sea p (n ,m ,r )= Pn ,m ( R⩽r) . Si el valor más
grande se encuentra en la primer muestra, la suma de rangos será igual a n+m

75
más la suma de rangos de los n−1 valores restantes y la suma de rangos de los
n valores será menor o igual que r si y solamente si la suma de rangos de los
n−1 restantes valores es menor o igual que r−(n+ m) . Si el valor más grande
está en la segunda muestra, entonces la suma de rangos para los n datos será
menor o igual que r si y solamente si, la suma de rangos para los m−1
restantes valores también es menor o igual que r . Como:

Pn, m ( R⩽r )= Pn , m (R⩽r | el mayor valor está en la primer muestra)


P(el mayor valor está enla primer muestra)
+Pn , m( R⩽r | el mayor valor está en la segunda muestra)
P(el mayor valor está en la segunda muestra)

De donde:

n m
p (n ,m ,r )= p(n−1, r−(n+ m))+ p(n ,m−1, r) (5.5)
n+ m n+m

Además:

p(1,0,r)=1 si r> 0 y p (1,0, r)=0, en otro caso (5.6)


p(0,1, r)=1 si r⩾0 y p(0,1,r)=0, en otro caso

Se puede obtener una tabla para valores pequeños de n y de m con el siguiente


programa:
def fu(n,m,r):
if (n+m)==1:
if n==1 and m==0:
if r>0:
return 1
else:
return 0
elif n==0 and m==1:
if r>-1:
return 1
else:

76
return 0
else:
return 0
else:
return (n/(n+m))*fu(n-1,m,r-n-m)+(m/(n+m))*fu(n,m-1,r)
for i in range(2,20):
for j in range(2,20):
r1=int(i*(i+1)/2)
r2=int(j*(j+2*i-1)/2)
for r in range(r1,r2+1):
x=fu(i,j,r)
print("%3.0f"%i,"%3.0f"%j,"%3.0f"%r,"%4.4f"%x)

La función fu está definida en forma recursiva de acuerdo a las ecuaciones


anteriores.

A continuación se muestran algunos valores calculados con el programa anterior.

n m r P( R≤r) n m r P( R≤r) n m r P( R≤r)

2 2 3 0.1667 2 4 12 1.0000 3 4 13 0.6857


2 2 4 0.3333 2 4 13 1.0000 3 4 14 0.8000
2 2 5 0.6667 2 4 14 1.0000 3 4 15 0.8857
2 3 3 0.1000 3 2 6 0.1000 3 4 16 0.9429
2 3 4 0.2000 3 2 7 0.2000 3 4 17 0.9714
2 3 5 0.4000 3 3 6 0.0500 3 4 18 1.0000
2 3 6 0.6000 3 3 7 0.1000 4 3 10 0.0286
2 3 7 0.8000 3 3 8 0.2000 4 3 11 0.0571
2 3 8 0.9000 3 3 9 0.3500 4 3 12 0.1143
2 3 9 1.0000 3 3 10 0.5000 4 3 13 0.2000
2 4 3 0.0667 3 3 11 0.6500 4 3 14 0.3143
2 4 4 0.1333 3 3 12 0.8000 4 3 15 0.4286
2 4 5 0.2667 3 4 6 0.0286 4 4 10 0.0143
2 4 6 0.4000 3 4 7 0.0571 4 4 11 0.0286
2 4 7 0.6000 3 4 8 0.1143 4 4 12 0.0571
2 4 8 0.7333 3 4 9 0.2000 4 4 13 0.1000
2 4 9 0.8667 3 4 10 0.3143 4 4 14 0.1714
2 4 10 0.9333 3 4 11 0.4286 4 4 15 0.2429
2 4 11 1.0000 3 4 12 0.5714 4 4 16 0.3429

77
4 4 17 0.4429 4 4 19 0.6571 4 4 21 0.8286
4 4 18 0.5571 4 4 20 0.7571 4 4 22 0.9000

Ejercicios.
1. Pruebe la hipótesis nula de que las dos muestras 0.306, 0.171, 1.023, 0.063,
1.086, 0.154, 1.492 y 0.087, 0.230, 0.352, 0.350, 0.325, 0.338, 0.628, 0.922
provienen de una misma distribución de probabilidad, a un nivel de significancia
del 5 %. Use la fórmula recursiva dada en la sección.

5.2.3 Validación de la hipótesis de que un proceso de


Posisson es no homogéneo.

Para verificar que un proceso de Poisson no es homogéneo se puede aplicar


una prueba de bondad de ajuste. La hipótesis nula es que los datos siguen un
proceso de Poisson homogéneo. Supongamos que queremos realizar la prueba a
m datos que se encuentran en el intervalo de tiempo [0, T ] . Primero dividimos
el intervalo en n subintervalos iguales y calculamos las frecuencias absolutas
correspondientes a los datos en los subintervalos; digamos que en el intervalo i-
ésimo hay f e . Si el proceso es homogéneo, entonces en cualquier intervalo
i

debería haber f t =m/n datos. Tomamos el estadístico:


i

2
n(f t −f e )
Q=∑ i i

i=1 f t–i

que debe seguir una distribución de chi-cuadrada con n−2 grados de


libertad, dado que se estima un parámetro.

Ejemplo. Se observa que de 1410 datos en el intervalo de tiempo [0,10] las


siguientes cantidades caen en los intervalos [0,1), [1,2),…,[9,10]: 1042, 921, 985,
1034, 1011, 1046, 997, 1004, 1089 y 1057. Decidir si los datos provienen de un
proceso homogéneo o no. En este caso Q=23.83 y el número de grados de
libertad es 8 . Para éste número de grados de libertad el valor crítico a un nivel de
significancia de 10 % es 13.36. Como 23.83>13.36, se rechaza la hipótesis nula de
homogeneidad a un nivel de significancia del 10 %.

78
5.2.4 Aplicaciones a problemas de finanzas e ingeniería.
Una de las aplicaciones imortantes en finanzas es la verificación de si un
conjunto de precios de acciones sigue o no un movimiento Browniano. Si el precio
de una acción al tiempo t es S (t ) , entonces los valores de ln (S(t +1)/ S (t ))
deben se independientes y seguir una distribución normal con media μ y
desviación estándar σ . Aplicando una prueba de bondad de ajuste a los valores
de ln (S(t +1)/ S (t )) podemos decidir si los precios de la acción siguen o no un
movimiento Browniano. Es conveniente también verificar la independencia de
éstos valores, por ejemplo, con una prueba de correlación serial.
En ingeniería, por ejemplo, en el caso de líneas de espera, por medio de las
pruebas señaladas en éste capítulo, podemos verificar si los usuarios llegan o no
siguiendo un proceso de Poisson homogéneo; ésta es una parte importante de la
validación del modelo.

79
Apéndice.
Esperanza, varianza y covarianza.
La esperanza de una variable aleatoria X que tiene a f X como función de
densidad (continua), está dada por:
+∞
E( X)= ∫ x f X (x)dx
−∞

Y en el caso discreto, por:



E( X)=∑ x f X (x )
x=0

Algunas de las propiedades empleadas con más frecuencia son las siguientes:
a) E( X +Y )=E (X )+ E(Y )
b) E(aX )=a E (X )
La esperanza condicional de una variable aleatoria X dado Y = y se define
como:
E( X |Y = y)=∑ x f X |Y ( x | y)
x

Y se define a la variable aleatoria E( X |Y ) del modo siguiente: Dado w∈Ω ,


E( X |Y ) toma el valor E( X | Y = y ) , donde y=Y (w) . La esperanza de ésta
nueva variable aleatoria es igual a E( X ) :
f ( x , y)
E( E ( X |Y ))=∑ ∑ xf X |Y ( x | y) f Y ( y )=∑ ∑ x f ( y )=∑ xf X ( x)= E( X )
y x y x f Y( y) Y x

La varianza de una variable aleatoria X se define como:


V ( X)= E[( X−E( X ))²]
Desarrollando el miembro derecho:
2 2 2 2
V ( X )=E [ X −2 E ( X ) X +( E( X ) )]= E( X )− E ( X )
La covarianza de X y Y , se define como:

80
Cov( X ,Y )=E [( X − E( X ))(Y − E(Y ))]
La covarianza de X y Y también se puede escribir como:
Cov( X ,Y )=E ( XY )− E( X ) E(Y )
La covarianza tiene las siguientes propiedades:
a) Cov( X , X )=V ( X )
b) Cov( X ,Y )=Cov (Y , X )
c) Cov(aX +bY , Z)=aCov( X ,Z )+bCov(Y , Z)
Además:
V ( X +Y )=Cov( X +Y , X +Y )=Cov ( X , X )+2Cov ( X ,Y )+Cov(Y ,Y )
Por lo tanto:
V ( X +Y )=V ( X)+V (Y )+2Cov ( X , Y )
S i X y Y son independientes, entonces , E( XY )=E ( X ) E (Y ) ,
Cov( X ,Y )=0 y:
V ( X +Y )=V ( X )+V (Y )
Por otro lado,
V (aX )=a ² V (X )
Se define al coeficiente de correlación entre X y Y como:
Cov ( X ,Y )
r XY =
√ V ( X)V (Y )
Como −√ V ( X)V (Y )⩽Cov (X , Y )⩽√ V ( X)V (Y ) , el coeficiente de correlación
siempre está entre −1 y 1 . Si dos variables aleatorias son independientes,
entonces su coeficiente de correlación es cero; pero, el recíproco no es cierto.
La varianza condicional de X dada Y se puede definir como:
V ( X | Y )=E( X ² |Y )−E( X |Y )²
Una propiedad importante de la varianza condicional es el teorema de la varianza

81
total: E(V ( X |Y ))+V (E( X | Y ))=V ( X) . A continuación se verifica la fórmula:
E(V (X | Y ))+V (E( X | Y ))= E(E( X ² | Y )− E(E (X |Y )²))
+ E(E( X |Y )²)−( E(E( X |Y )))²= E( X ²)−E( X)²

Desigualdad de Tchevychev.
La desigualdad de Tchebyshev se basa en la desigualdad de de Markov:
E(X)
P( X ⩾a)⩽
a
Para cualquier variable aleatoria no-negativa X que tenga esperanza y cualquier
número positivo a. Se demuestra fácilmente considerando la variable aleatoria
Z=a si X⩾a y 0 enotro caso y c o n s i d e r a n d o q u e E( Z )⩽E ( X ) y
E( Z )=aP( X ⩾a) . Si en ésta desigualdad, consideramos a X como
( X− E ( X ))² y e n v e z d e a ponemos a ² , resulta la desigualdad de
Tchebyshev:
V (X)
P(|X− E( X )|⩾a)⩽

siempre que X tenga varianza.

82
Bibliografìa.
Banks, J., Carson, J.S., Nelson, B.L., Nicol, D.M., Discret-Event System
Simulation, Pearson, Prentice Hall, Fourth Edition, 2004.
Hoel, P.G., Introduction to Mathematical Statistics, Wiley International Edition,
Third Edition, 1962.
Hunter, J.D., Matplotlib: A 2D graphics environment, Computing In Science \&
Engineering, Vol. 9-3, pp. 90-95, 2007.
Law, A.M., Simulation, Modeling & Analysis, McGraw Hill, Higher Education, 4th
Edition, 2007.
Leemis, L.M.,Park, S.K., Discrete-event Simulation: A First Course, Pearson
Prentice Hall, 2006.
Lewis, P.A.W, G. S. Shedler, G,S, Simulation of nonhomogenous Poisson processes
with degree-two exponential polynomial rate function. Operations Research, 27(5),
pp. 1026–1039, 1979.
Mood, A.M., Graybill, F.A., Boes, D.C., Introduction To The Theory of Statistics,
McGraw-Hill International Edition, Third Edition, 1974.
Ross, S.M., Simulation. Academic Press, Elsevier, Fifth Edition, 2013.
Ross, S.M., An Elementary Introduction to Mathematical Finance, Cambridge
University Press, Third Edition, 2011.
Van Rossum, G., Python tutorial, Technical Report CS-R9526, Centrum voor
Wiskunde en Informatica (CWI), Amsterdam, May 1995.

83

También podría gustarte