Está en la página 1de 14

Simulación de variables aleatorias

2.1 Producción de números con comportamiento estadístico aleatorio y


uniforme en [0, 1].
Las variables aleatorias son aquellas que tiene un comportamiento en la realidad. Por
ejemplo el número de clientes que llegan cada hora a un banco depende del momento
del día, de la semana y de otros factores.

La generación de variables aleatorias o estocásticas significa la obtención de variables


que siguen una distribución de probabilidad determinada. Requiere de dos etapas:
generar números aleatorios distribuidos uniformemente (R) generar con R y con las
distribuciones de la probabilidad las variables aleatorias o estocásticas.

La generación de estadísticas simuladas, o sea de los valores de las variables


aleatorias, tienen una naturaleza enteramente numérica y deben soportarse por
números aleatorios, generados por algún método.

1
f ( x )= , a>0 , b>0
( b−a)

Si el método (0,1) es dividido en n clases, o sub-intervalos de longitudes iguales, el


numero esperado de observaciones en cada intervalo es N/n, donde N es el número
total de observaciones.

La probabilidad de observar un valor en un intervalo en particular es independiente de


los valores previamente observados.

Números “elegidos al azar” son útiles en diversas aplicaciones, entre las cuales
podemos mencionar:

 Simulación en métodos de Monte Carlo: se simula un proceso natural en


forma computacional. Estas aplicaciones se realizan en muy variados campos
con el fin de emular distintos comportamientos: física (por ejemplo, para simular
colisiones entre partículas), ingeniería (diseño de obras hidráulicas, puentes,
etc.), inversiones de capital, redes, servicios a clientes, call centers, etc. La
simulación a través de la computadora es una herramienta poderosa para
comprender la naturaleza de sistemas complejos.
 Muestreo: con el fin de seleccionar una sub-muestra de una población.
 Análisis numérico: algunas técnicas para resolver problemas de análisis
numéricos complejos han sido desarrolladas usando números aleatorios.
 Programación: la generación de valores aleatorios puede ser útil para poner a
prueba la efectividad de un algoritmo. También son útiles en criptología
2.1.1 Uso del generador incluido en la hoja de cálculo
La función ALEATORIO () de Excel

Las hojas de cálculo como Excel (y cualquier lenguaje de programación estándar) son
capaces de generar números pseudo-aleatorios provenientes de una distribución
uniforme entre el 0 y el 1. Este tipo de números pseudo-aleatorios son los elementos
básicos a partir de los cuales se desarrolla cualquier simulación por ordenador. En
Excel, es posible obtener un número pseudo-aleatorio -proveniente de una distribución
uniforme entre el 0 y el 1- usando la función ALEATORIO:

Los números generados mediante la función ALEATORIO tienen dos propiedades que
los hacen equiparables a números completamente aleatorios:

1. Cada vez que se usa la función ALEATORIO, cualquier número real entre 0 y 1
tiene la misma probabilidad de ser generado (de ahí el nombre de distribución
uniforme).
2. Los diferentes números generados son estadísticamente independientes unos
de otros (es decir, el valor del número generado en un momento dado no
depende de los generados con anterioridad).
La función ALEATORIO es una función volátil de Excel. Esto significa que cada vez que
pulsamos la tecla F9 o cambiemos alguno de los inputs del modelo, todas las celdas
donde aparezca la función ALEATORIO serán recalculadas de forma automática.

2.1.2 Teoría: métodos congruentes


Algunos de los métodos utilizados para la generación de los números aleatorios son:

Algoritmo de cuadrados medios:

 Inicie con un número entero positivo de 4 (2n) dígitos y llámele Z 0 (X0), llamado
semilla.
 Eleve Z0 (X0) al cuadrado para obtener un número de 8 (4n) dígitos. Si es
necesario, agregue ceros a la izquierda para hacerlo exactamente de 8 dígitos.
 Tome los 4 (2n) dígitos centrales como el próximo número de 4 (2n) dígitos y
llámele Z1(X1).
 Coloque el punto decimal a la izquierda de Z 1(X1) para obtener el primer número
pseudoaleatorio U(0,1).
 Continué generando de esta forma números pseudoaleatorios U(0,1)

Algoritmo de productos medios:


 Seleccionar semilla (Xo) con D dígitos (D>3)
 Seleccionar una semilla (X1) con D dígitos (D>3)
 Sea Y0=X0*X1 Sea X2 los D dígitos del centro y sea ri=.0 D dígitos del centro.
 Sea Yi=Xi*Xi+1; sea Xi+2= los D dígitos del centro, y sea ri+1=0.D dígitos del centro
para toda i=1,2,3,…n.
 Seguir generando números aleatorios.

Algoritmo de multiplicador constante:

 Selecciona una semilla (X0) con D dígitos (D > 3).


 Seleccionar una constante (a) con D dígitos (D > 3).
 Sea Y0 = a * X0; sea X1 = los D dígitos del centro y sea r1 = 0.D dígitos del
centro.
 Sea Yi = a * Xi; sea Xi+1 = los D dígitos del centro y sea ri+1 = 0.D dígitos del
centro para toda i = 1, 2, 3,..., n.
 Repetir el paso 4 hasta obtener los n números ir deseados.

Algoritmo lineal:

Este algoritmo genera una secuencia de números enteros por medio de la ecuación

Xi +1=( aXi +c ) mod ( m ) i=0,1,2,3 , … , n

Dónde:

 Xo>0, semilla
 a=1+4k, constante multiplicativa, k debe ser entero
 c primo a m, constante aditiva
 m=2^g es el modulo, donde g es un entero
A partir de los enteros generados por la ecuación anterior, para obtener los números
pseudoaleatorios (0,1) se usa la ecuación

Xi
ri= i=0,1,2,3 , … ,n
m−1

Algoritmo congruencial multiplicativo:

Xi +1=( aXi ) mod ( m ) i=0,1,2,3 , … , n

Dónde:
 Xo debe ser un número impar
 a=3+8k, constante multiplicativa, k= 0, 1, 2, 3,…
 m=2^g es el modulo, donde g es un entero
Xi
ri= i=0,1,2,3 , … ,n
m−1

Algoritmo congruencial aditivo:

Xi=( X i−1+ X i−n ) mod ( m ) i=n+ 1, n+2 , n+3 , … , N

Para este algoritmo se requiere tener una secuencia previa de n número enteros
X 1 , X 2 , X 3 … y para obtener los números pseudoaleatorios se usa:

Xi
ri= i=0,1,2,3 , … ,n
m−1

Algoritmo congruencial cuadrático

Xi +1=( aX i 2 +bXi+ c ) mod ( m) i=0,1,2,3 , … , N

Dónde:

 a debe ser un número par


 c debe ser un número impar
 m=2^g , g es un entero
Xi
ri= i=0,1,2,3 , … ,n
m−1

Algoritmo de Blum y Shub

Xi +1=( X i 2 ) mod ( m ) i=0,1,2,3 ,… , n

Xi
ri= i=0,1,2,3 , … ,n
m−1

2.2 Simulación de otras variables aleatorias


Método de la transformación inversa

Es el método más directo para generar una variable aleatoria. Sea

F ( z ) , a≤ z ≤ b

Una función de distribución cuya función de distribución inversa es:

F−1 ( u )=∈ f { z ϵ [ a , b ] : F ( z ) ≥ u , 0 ≤u ≤ 1 }

Sea U una variable aleatoria de

u ( 0,1 )

Se verifica que

z=F−1 ( U )

Tiene la función de distribución F. la prueba se sigue de la observación de que

pr ( Z ≤ z )= pr [ F −1 (U )≤ z ]= pr [ U ≤ F ( z) ] =F ( z )

Esto sugiere inmediatamente el siguiente esquema de generación:

Algoritmo del método de la transformación inversa

Propósito: generar Z aleatoriamente de

F ( z ) , a≤ z ≤ b

Entrada: Capacidad para evaluar

F−1 ( u ) , 0 ≤u ≤ 1

Salida: Z

Método: Generar aleatoriamente U de

U ( 0,1 )

Z ← F −1 ( U )

Devolver Z

Ejemplo. La distribución exponencial

Supongamos que tiene una distribución exponencial de media beta. La función


densidad de probabilidad es:
La función de distribución (acumulativa) es:

Método de aceptación rechazo

Este método es más probabilístico que el anterior. Los métodos de inversión,


composición y convolucion son métodos de generación directos, en el sentido en que
tratan directamente con la función distribución. El método de aceptación-rechazo es
menos directo en su aproximación.

Se va aplicar este método en el caso de que la variable aleatoria se continua, el caso


discreto es análogo y esta tratado en Prob 8.9.

En este caso tenemos la función de densidad f(x) de la variable y necesitamos una


función t(x) que la acote, es decir t(x) ^3f(x) “x. Hay que notar que t(x) no es, en
general, una función de densidad

Pero la función r(x)=t(x)/c, si es claramente una función de densidad. (Suponemos que t


es tal que c<¥). Debemos de poder generar (esperamos que de forma fácil y rápida) un
valor de la variable aleatoria que sigue la función r(x). el algoritmo general queda como
sigue:

Generar x que siga la distribución r(x)

Generar u ~ U (0,1), independiente de x

Entonces devolver x si no volver a repetir el algoritmo.

El algoritmo continúa repitiéndose hasta que se genera un valor que es aceptado.


Para hacer que se rechacen el menor número de puntos posibles la función t(x) debe
ser la mínima función que acote a f(x)

Método de composición

Este método va a poder ser aplicado cuando la función de densidad es fácil de

Siendo n el número de trozos en los que se ha dividido la función

Cada uno de los fragmentos se puede expresar como producto de una función de
distribución y un peso

Y la función de distribución global la podemos obtener como

El método consiste en generar dos números aleatorios, uno sirve para seleccionar un
trozo y el otro se utiliza para generar un valor de una variable que sigue la distribución
de dicho trozo. El valor de la variable obtenida es el valor buscado.

El algoritmo general queda como sigue:

Generar u1, u2~U (0,1)

Su u1=w1 entonces generar x~f1(x)

Si no

Si u1=w1+w2 entonces generar x~f2(x)

Método de convolución

Muchas variables aleatorias incluyendo la normal, binomial, poisson, gamma, erlang,


etc., se pueden expresar de forma exacta o aproximada mediante la suma lineal de
otras variables aleatorias.
El método de convolucion se puede usar siempre y cuando la variable aleatoria x se
puede expresar como una combinación lineal de k variables aleatorias:

En este momento se necesita generar k números aleatorios (u1, u2,…, uk) para
generar (x1, x2,…xk) variables aleatorias usando alguno de los métodos anteriores y
así poder obtener un valor de la variable que se desea obtener por convolución.

2.2.1 Teoría: trasformación inversa, composición, convolución y otros


procedimientos
Método de transformación inversa

El método de transformación inversa puede utilizarse para simular variables aleatorias


continuas, lo cual se logra mediante la función acumulada f(x) y la generación de
números pseudoaleatorios rᵢ~U(0,1) .

El método consiste en:

 Definir la función de Densidad f(x) que representa la variable a modelar,


 Calcular la función acumulada f(x)
 Despejar la variable aleatoria x y obtener la función acumulada inversa f ( x )−1
 Generar las variables aleatorias x, sustituyendo valores con números
pdeudoaleatorios rᵢ~U (0,1) en la función acumulada inversa

El método de la transformación inversa también puede emplearse para simular


variables aleatorias de tipo discreto, como en las distribuciones de Poisson, de
Bernoulli, binomial, geométrica, discreta general, etc. La generación se lleva a cabo a
través de la probabilidad acumulada P(x) y la generación de números pdeudoaleatorios
rᵢ~U (0,1).

Método de convolucion

La distribución de probabilidad de la suma de dos o más variables aleatorias


independientes es llamada la convolucion de las distribuciones de las variables
originales. El método de convolucion es entonces la suma de dos o más variables
aleatorias para obtener una variable aleatoria con la distribución de probabilidad
deseada. Puede ser usada para obtener variables con distribución Erlang y binomiales.

Metodología

 Se generar números aleatorios (Y1, Y2, Y3… Yn)


 Con uno (o más dependiendo del método a utilizar) de los números aleatorios ,
se generan las variables aleatorias componentes (X1, X2, X3,…, Xn)
 Se obtiene un valor de variable por suma lineal de las variables aleatorias
componentes

Distribución uniforme

A partir de la función de la densidad de las variables aleatorias uniformes entre a y b.

 Se obtiene la función acumulada

 Igualando la función acumulada F(x) con el número pseudoaleatorio rᵢ~ U (0,1), y


despejando x se obtiene:

Distribución Bernoulli

A partir la distribución de probabilidad de las variables aleatorias de Bernoulli con


media

p ( x ) =p x (1− p)1−x para x =0,1

Se calculan las probabilidades para x=0 y x=1, para obtener

Acumulando los valores de p(x) se obtiene:


Generando números pseudoaleatorios rᵢ~U(0,1) se aplica la regla:

2.2.2 Funciones inversas de hoja de cálculo, utilizables como simuladores


Construcción de funciones en Excel mediante VBA

Dado que en determinadas simulaciones las variables a simular no siguen ninguna de las
distribuciones que incorporan las aplicaciones de hoja de cálculo, se debe proceder a su
simulación. Básicamente, existen dos posibilidades:

• Realización manual de los cálculos necesarios en la propia hoja de cálculo.


• Programación de la función adecuada mediante VBA.
La primera de las técnicas puede suponer el problema de que existan cálculos intermedios
que es necesario realizar para obtener el valor final. En este caso, para cada tirada aleatoria
habría que recalcular la simulación y guardarla mediante macros en una tabla, en la cual se
vería solamente el valor obtenido. Adicionalmente, en el caso de que se necesitara efectuar
otra simulación mediante la misma distribución de probabilidades se deberían rehacer los
cálculos nuevamente. Por otra parte, esta posibilidad tiene como ventaja que no precisa
conocimiento alguno en programación para poder efectuarla.

La segunda técnica, que implica conocer programación en Visual Basic para Aplicaciones
(VBA), plantea la ventaja de que mediante una función que se añade a la hoja de cálculo
como cualquier otra función de las que trae incorporadas la propia aplicación, puede ser
llamada tantas veces como sea necesario y en tantas celdas como sea preciso simular sin
ninguna limitación. Adicionalmente, se puede proteger su contenido para que no sea visible
por el usuario de forma que éste sólo tenga que conocer la sintaxis de la función para su
utilización. De esta forma, también, se evitan manipulaciones que puedan arrojar resultados
incorrectos

2.3 Simulación de variables especiales: tablas

También podría gustarte