Beruflich Dokumente
Kultur Dokumente
5.1.- Introducción
Buscamos métodos que nos permitan obtener valores de variables aleatorias que sigan
determinadas distribuciones de probabilidad a partir de los números aleatorios generados, que siguen
la distribución Uniforme en el intervalo (0,1).
Hay cuatro métodos generales de generación de variables aleatorias y una serie de métodos
particulares de las distintas distribuciones.
La facilidad de aplicación de dichos métodos, así como el coste computacional asociado a los
mismos, varía mucho según la familia de variables aleatorias a las que se apliquen.
Normalmente existen varios algoritmos que se pueden utilizar para generar valores de una
determinada distribución, y diferentes factores que se pueden considerar para determinar qué
algoritmo utilizar en un caso particular. Desafortunadamente dichos factores suelen entrar en conflicto
unos con otros y a veces se ha de llegar a una solución de compromiso.
ü Exactitud: se han de obtener valores de una variable con una precisión dada. A veces
se tiene suficiente con obtener una aproximación y otras no.
Generación de variables aleatorias
ü Robusted: el método tiene que ser eficiente para cualquier valor que tomen los
parámetros de la distribución que siga la variable aleatoria.
ü Facilidad de implementación.
• 0≤ F(x)≤ 1 ∀x.
• F(x) es no decreciente (es decir, si x1 <x2 , entonces F(x1 )<F(x 2 )).
• lim F ( x) = 1 y lim F ( x ) = 0 (ya que X sólo toma valores finitos).
x →∞ x → −∞
Una variable aleatoria X se dice que es discreta si puede tomar unos valores determinados, no
pudiendo tomar ningún valor comprendido entre dos consecutivos. Así la variable sólo puede tomar un
conjunto finito de valores x1 , x2, ..., xn . La probabilidad de que la variable aleatoria X tome el valor xi
es dado por:
∑ p( x ) = 1
i
i =1
donde la sumatoria significa la suma de todas las probabilidades p(x 1 ), p(x2 ),... Todas las
probabilidades acerca de X se pueden calcular desde p(x), a la cual se le llama función de probabilidad
para la variable discreta X. Si I=[a,b], donde a y b son números reales tales que a≤b, entonces
78
Generación de variables aleatorias
P( X ∈ I ) = ∑ p( x )
a ≤ xi ≤ b
i
F ( x) = ∑ p (x )
xi ≤ x
i ∀−∞< x< ∞
Vamos a ver en qué consiste dicho método tanto para el caso en el que la variable aleatoria sea
continua como para cuando es discreta.
F(x)
u
Generar u~U(0,1)
Salida xßF -1(u)
Al ser discreta no hay fórmula de su inversa y puede ocurrir que dado un u no se encuentre
imagen x de la función, sino que este valor esté entre dos valores posibles.
79
Generación de variables aleatorias
F(x)
Lo que se va a hacer en este caso es que dado un u se va obtener como salida un xj tal que
j −1 j
∑p
i =1
i ≤ u < ∑ p i . El algoritmo queda como sigue:
i =1
Generar u U(0,1)
SI u<p1
ENTONCES salida x1
SI NO
SI u<p1+p2
ENTONCES salida x2
….
Nosotros vamos a aplicar este método en el caso de que la variable aleatoria sea continua, el
caso discreto es análogo y está 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)≥f(x) ∀x. Hay que notar que t(x) no es, en general, una función de densidad
+∞ +∞
c = ∫ t ( x)dx ≥ ∫ f ( x)dx = 1
−∞ −∞
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:
80
Generación de variables aleatorias
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).
función.
Cada uno de los fragmentos se puede expresara como producto de un función de distribución y
un peso t i ( x ) = f i ( x )wi y la función de distribución global la podemos obtener
n n
como f ( x ) = ∑ w1 f 1 ( x ) con ∑w i =1.
i =1 i =1
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.
Generar u 1,u2~U(0,1)
Si u1=w1 entonces generar x~f1(x)
Si no
Si u 1=w1+w2 entonces generar x~f2(x)
…
81
Generación de variables aleatorias
En este método se necesita generar k números aleatorios (u 1 ,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.
Ejemplos de aplicación de este método los veremos cuando veamos métodos particulares de
cada una de las distribuciones más utilizadas.
1
si a ≤ x ≤ b
f ( x) = b − a
0 en otro caso
0 si x < a
x − a
F ( x) = si a ≤ x ≤ b
b − a
1 x>b
a +b (b − a) 2
La media de la distribución es µ ( x) = y la varianza σ 2 ( x) =
2 12
Como los números aleatorios que generamos siguen la distribución uniforme en el intervalo
(0,1), para generar valores de una distribución uniforme en cualquier intervalo (a,b) sólo tenemos que
hacer un cambio de intervalo:
82
Generación de variables aleatorias
La variable aleatoria normal posee una función de densidad caracterizada por dos parámetros,
su media y su varianza ( µ y σ2 respectivamente). La media µ mide la ubicación de la distribución y la
desviación estándar σ mide su dispersión.
La inversa de su función de distribución no es fácil de calcular, pero hay otros métodos para
obtener valores de ella.
Método Polar
Se usa para generar valores de la distribución N(0,1), hay dos aproximaciones diferentes de
dicho método:
El algoritmo es el siguiente:
83
Generación de variables aleatorias
x1 ← sen 2πu1 − 2 Ln (u 2 )
x 2 ← cos 2πu 1 − 2 Ln (u 2 )
Convolución:
Vamos a ver una serie de propiedades de la distribución normal y un teorema que nos van a
servir para generar valores mediante este método.
Propiedad: Si tenemos una variable X que sigue una N(µ,σ), entonces aX+b sigue una
N (µa + b, σ a )
Teorema del Límite Central : si X es una variable aleatoria con media µ y varianza σ2 , entonces la
media X , para una muestra de tamaño n (si n es lo suficientemente grande), sigue una distribución
Normal de meida µ y varianza σ2 /n.
n
∑x
i =1
i
X= sigue N ( µ ,σ / n )
n
xß0
PARA i=1 HASTA 12
Genera u i ( número aleatorio en (0,1))
xßsuma+u1 (para conseguir una varianza 1)
FIN_PARA
xßx-6 (para conseguir una media 0)
Salida x
1 −x / β
e , x≥0
f (x ) = β
0, en otro caso
1 − e − x / β , x ≥ 0
F ( x) =
0, en otro caso
La media de la distribución es β, y su varianza 1/β2.
84
Generación de variables aleatorias
La distribución exponencial se usa para modelar intervalos de tiempo entre sucesos. Ejemplos
de procesos que han sido modelados mediante distribuciones exponenciales: la duración de
conversaciones telefónicas, el tiempo entre fallos en ciertos elementos, tiempo entre interrupciones en
la CPU de un ordenador.
Es muy usada para simular el tiempo entre llegadas cuando las llegadas son completamente
aleatorias y para modelar tiempo de servicio, en los sistemas de colas. En estos casos β es la
proporción de llegadas o de servicios por unidad de tiempo.
x α −1e − x / β
x>0
f ( x ) = β α Γ(α )
0 en otro caso
∞
donde Γ(α ) = ∫0
x α −1e − x dx
Es una candidata popular para modelar procesos, dada su capacidad para asumir una amplia
variedad de formas. Ejemplos de procesos que están distribuidos según una gamma son el tiempo que
se tarda en ejecutar una tarea, el tiempo de CPU que un trabajo necesita para ejecutarse, la desviación
de una trayectoria desde su blanco, ventas mensuales de un determinado item, etc.
Hay tres propiedades de la distribución gamma que a menudo son utilizadas para generar
variables ale atorias:
2) Si X1 es una gamma (α1 ,β) y X2 es una gamma (α 2 ,β) entonces Y=X1+X2 es una gamma
(α 1 +α 2 ,β).
3) Si X es una gamma (α ,1) entonces βX es una gamma (α ,β), para cualquier β>0.
Las dos primeras propiedades nos dicen que podemos generar valores de distribuciones
gamma de valores grandes de α mediante convolución de valores de distribuciones gamma. La tercera
propiedad nos dice que sólo es necesario desarrollar métodos de generación de varia bles aleatorias
gamma con β=1. Una gamma(1,1) es una exponencial de media 1.
85
Generación de variables aleatorias
Para generar valores de gamma con 0<α<1 y α>1 han sido propuestos varios algoritmos. Por
ejemplo Aherns y Deiter proponen un algoritmo basado en el método de aceptación-rechazo para
valores de α<1; Tadikamalla presenta también una serie de métodos para volores α>1 y otros
algoritmos están propuestos por Fishman o por Cheng y Feast.
x α1 −1 (1 − x) α2 −1
0 < x <1
f ( x ) = β (α 1 , α 2 )
0 en otro caso
∫x
1
α1 −1
donde β (α 1 ,α 2 ) = (1 − x) α 2 −1 dx
0
α1 αα
Su media E ( x ) = y su varianza Var( x) = 1 2
α1 + α 2 (α + α )(α + α + 1)
1 2 1 2
Esta distribución se usa a menudo para representar variables aleatorias que están restringidas
al intervalo (0,1).
Se utiliza para generar entradas cuando no tenemos datos (por ejemplo el tiempo que tarda en
estropearse un aparato, el tiempo que tarda en suceder algo,...). Cuando en proyectos PERT se ha de
aproximar el tiempo que se le da a las distintas actividades, se usa esta distribución. En general suele
usarse como modelo en primera aproximación en ausencia de datos experimentales.
La función de densidad de esta variable puede adoptar una gran variedad de formas
dependiendo de los parámetros de la distribución. Una de los más comunes y simples métodos de
generación de valores de la distribución beta es usar las relaciones que existen entre ésta y la
distribución gamma:
Este algoritmo es fácil de implementar pero debido a que los métodos de generación de
gammas pueden ser ineficientes, se han desarrollado métodos de generación basados en el método de
aceptación-rechazo (Ahrens and Deiter).
Se puede observar que una distribución U(0,1) y una beta(1,1) son la misma distribución.
Una variable X que sigue una beta(α1 , α 2 ) en [0,1] puede reescalarse y desplazarse para
obtener una variable beta(α1 , α2 ) en [a,b] con los mismos parámetros de forma mediante la
transformación a+(b-a)X.
Si X sigue una beta(α 1 , α2 ) en [0,1], entonces (1-X) sigue una beta(α 2, α 1 ) en [0,1].
86
Generación de variables aleatorias
x
x x x t α1
F ( x) = ∫ f (t ) dt =∫ α 1t α1 −1
dt =α 1 ∫ t α1 −1
dt =α 1 = x α1 . Si suponemos que
0 0 0
α1 0
1
α1 α1
u = F ( x ) = x , entonces x = u .
87
Generación de variables aleatorias
1 − p si x = 0
Su distribución de probabilidad es p ( x ) = p si x = 1 y su distribución de
0 en otro caso
0 si x < 0
probabilidad acumulada F ( x) = 1 − p si 0 ≤ x ≤ 1
1 si x ≥ 1
La media de la distribución es E(x)=p y su varianza Var(x)=p(1-p).
Generar u~U(0,1)
Si u<=p entonces salida éxito si no salida fracaso
x ∈ {a, a + 1,..., b}
1
Su distribución de probabilidad es p ( x ) = b − a + 1
0 en otro caso
0 si x < a
x − a + 1
Su distribución de probabilidad acumulada es F ( x) = si a ≤ x ≤ b
b − a +1
1 si x > b
Los parámetros a y b son enteros siendo a el parámetro de posición. Su media es
a +b (b − a + 1) 2 −1
E (x ) = y su varianza Var ( x ) = .
2 12
Para generar valores de una variable que siga esta distribución podemos utilizar el siguiente
algoritmo:
Generar u~U(0,1)
Dar como salida X ← a + ( b − a + 1)u , donde x es el operador que trunca
88
Generación de variables aleatorias
si x ∈ {0,1,...}
p (1 − p ) x
Su distribución de probabilidad es p ( x ) = y su distribución de
0 en otro caso
1 − (1 − p ) x−1 si x ≥ 0
probabilidad acumulada F ( x) =
0 en otro caso
1− p 1− p
La media de la distribución es E (x ) = y su varianza Var ( x ) = 2
p p
Fß0
Eß0
MIENTRAS E=0 HACER
Genera u~U(0,1)
SI u<=p
ENTONCES EßE+1
SI NO FßF+1
FIN_MIENTRAS
DEVOLVER F
Esta distribución tiene dos parámetros: n que es el número de experimentos y p que indica la
probabilidad de éxito.
n x
p (1 − p ) n− x si x ∈ {0,1,2,..., n}
Su distribución de probabilidad es p ( x ) = x y su
0 en otro caso
0 si x < 0
x n
distribución de probabilidad acumulada F ( x) = ∑ p i (1 − p ) n− i si 0 ≤ x ≤ n
i= 0 i
1 si x > n
Se pueden obtener valores de una distribución binomial(n,p) mediante los siguientes métodos:
1) Si n es pequeño:
89
Generación de variables aleatorias
n
p j ( x = j ) = p j (1 − p ) n− j de forma que
j
Generar u~U(0,1)
Si u<p0 Entonces salida X=0
Si u<p0+p1 Entonces salida X=1
Si u<p0+p2+p3 Entonces salida X=2
...
Eß0
PARA i=1 HASTA n
Genera u~U(0,1)
SI u<=p
ENTONCES EßE+1
FIN_PARA
DEVOLVER E
Cuando p es pequeño se puede aproximar mediante una Poisson. Si p→0 y n→∞ de forma tal
que la media λ=np permanece constante, entonces se puede aproximar una B(n,p) por una P(λ).
El algoritmo es el siguiente:
Generar z~N(0,1)
v ← np + z np(1 − p ) (v~ N ( np, p (1 − p) n ) )
SI v>np
1
ENTONCES x ← min x + , n
2
1
Si NO x ← max x − ,0
2
DEVOLVER x
90
Generación de variables aleatorias
Son problemas en los que la variable aleatoria se distribuye a lo largo del tiempo o del espacio.
En todos los casos, las condiciones para que se trate de una distribución de Poisson son:
e − λ λx
Su distribución de probabilidad es p ( x ) = x! si x ∈ {0,1,...} y su distribución de
0 en otro caso
0 si x < 0
probabilidad acumulada F ( x) = −λ x λ
i
e ∑ si x ≥ 0
i=0 i!
Propiedades de la distribución:
1) Cuando n es pequeño:
λi −λ
pi = e i = 0,1,...
i!
91
Generación de variables aleatorias
Generar u~U(0,1)
Yß-βln(u) (con β=1/λ)
tßt+Y
SI t>T
ENTONCES finßVERDAD
SI NO XßX+1
FIN_MIENTRAS
DEVOLVER X
X es la variable que sigue una P(λ), en cada momento se va generando mediante una
exponencial Y el tiempo en el que ocurre el siguiente suceso. T es la cantidad de tiempo en la
que se quieren contar los sucesos ocurridos.
2) Cuando n es grande se puede aproximar una P(λ) mediante una Normal de media y
varianza λ, N (λ , λ ) ., se debe de aplicar un factor de corrección ya que se pasa de
un valor continuo de la distribución Normal a aproximar un valor discreto de la
distribución de Poisson.
Generar u~U(0,1)
finßFALSO
iß1;
MIENTRAS NO fin HACER
SI u<=F(xi)
ENTONCES finßVERDAD
SI NO ißi+1
FIN_MIENTRAS
DEVOLVER xi
92