Sei sulla pagina 1di 43

Generacin de variables aleatorias

La generacin de cualquier variable aleatoria se va a basar en la


generacin previa de una distribucin uniforme (0,1). Vamos a estudiar
algoritmos que nos van a transformar dichos nmeros generados en
valores de otras distribuciones.

Existen varios algoritmos para generar valores de una distribucin, y
diferentes factores para determinar qu algoritmo utilizar.
Desafortunadamente dichos factores suelen entrar en conflicto unos con
otros.

Algunos de estos factores son los siguientes:

1. Exactitud: Se han de obtener valores de una variable con una precisin
dada. A veces se tiene suficiente con obtener una aproximacin y otras no.

2. Eficiencia: el algoritmo que implementa el mtodo de generacin tiene
asociado un tiempo de ejecucin y un gasto de memoria. Elegiremos un
mtodo que sea eficiente en cuando al tiempo y a la cantidad de memoria
requeridos.
3. Complejidad: Buscamos mtodos que tengan complejidad mnima, siempre
y cuando se garantice cierta exactitud.

4. Robusted: el mtodo tiene que ser eficiente para cualquier valor que tomen
los parmetros de la distribucin que siga la variable aleatoria.

5. Facilidad de implementacin.


Mtodos generales

Los mtodos generales para la generacin de variables aleatorias son:
Mtodo de Inversin,
Mtodo de Aceptacin-Rechazo,
Mtodo de Composicin
Mtodo Convolucin (Polar).

A continuacin pasamos a estudiarlos.
Generacin de variables aleatorias Discretas
1.- Mtodo transformacin Inversa:
Este mtodo consiste en utilizar la funcin de distribucin acumulada F.
Sea X una variable aleatoria discreta con funcin de probabilidad
Para esto, generaremos un nmero aleatorio U, es decir, U est distribuido
uniformemente en (0,1) , tal que
Como:
Tenemos que
Entonces X tiene la distribucin deseada.
Podemos escribir lo anterior en forma algortmica, como
Tambin el algoritmo queda como sigue:
Ejemplo 1:
Si queremos simular una v.a. X tal que
donde
Solucin:
Entonces podramos generar U y hacer los siguiente:
Si U<0.20 hacemos X=1 y terminamos
Si U<0.35 hacemos X=2 y terminamos
Si U<0.60 hacemos X=3 y terminamos
En caso contrario, hacemos X=4
inv1<-function(n){u<-c(runif(n));for(i in 1:n){if(u[i]<=0.20) u[i]<-1 else
if(u[i]<=0.35) u[i]=2 else if(u[i]<=0.60) u[i]=3 else
u[i]=4};print(u);table(u)}
a.- Simulacin en R-project
b.- Simulacin en Excel
=SI(A1<=0,2;1;SI(A1<=0,35;2;SI(A1<=0,6;3;4)))
inv1<-function(n){for(i in 1:n){u<-runif(1);if(u<=0.20) u<-1 else
if(u<=0.35) u=2 else if(u<=0.60) u=3 else u=4;print(u)}}
Ejemplo 2

Generar el valor de X, que tiene la misma probabilidad de tomar los
valores 1,2,,n. Es decir.
Solucin:
Entonces podramos generar U y establecer los siguiente:
X=j si
; en otras palabras
a.- Simulacin en R-project
b.- Simulacin en Excel
u<-runif(10)
x<-round(10*u)+1
ENTERO(10*A1)
table(x)
x
inv2<-function(m,n){u<-runif(m);x<-trunc(n*u)+1;print(x);table(x)}
Ejemplo 3:
Tenemos la siguiente distribucin de probabilidades para una demanda
(aleatoria) de cierto producto y queremos ver que sucede con el promedio
de la demanda en varias iteraciones.
Solucin:

Generando valores aleatorios se obtiene el valor de la demanda. De esta
forma logramos a partir de la distribucin de densidad calcular los valores
de la variable aleatoria dada.
La tabla, muestra que a medida que aumenta el numero de
simulaciones, el valor simulado se acerca al valor original de la media y
desviacin estndar, adems de la disminucin del error tpico.
a.- Simulacin en R-project
a.- Generando una variable aleatoria geomtrica
X es una variable aleatoria geomtrica con parmetro p si
donde
Se puede pensar que X representa el tiempo del primer xito, cuando se realizan
ensayos independientes, de los que cada uno es un xito con probabilidad p.
Como
{primeros j-1 ensayos sean todos fracasos}
podemos generar el valor de X al generar un nmero aleatorio U y hacer X igual al
valor j para el cual.
, en forma equivalente, para el cual
Es decir, podemos definir X como
Por lo tanto, como el logaritmo es una funcin montona, y entonces 0<a<b es
equivalente a log(a)< log(b), tenemos que X se puede expresar como
donde la ltima desigualdad cambia de signo, ya que log(q) es negativo para 0<q<1.
Por lo tanto, con la notacin Ent() podemos expresar X como
Por ltimo, al observar que 1 - U tambin est uniformemente distribuida en (0,1),
tenemos que
tambin es geomtrica con parmetro p.
a.- Simulacin en R-project
b.- Simulacin en Excel
u<-runif(10)
q<-0.2
x<-round(log(u)/log(q))+1
table(x)
geo<-function(n,q){u<-runif(n);x=trunc(log(u)/log(q))+1;print(x);table(x)}
b.- Generando una variable aleatoria Poisson

La variable aleatoria X es Poisson con media si
La llave para usar el mtodo de la transformacin inversa para generar dicha
variable aleatoria es la siguiente identidad de recurrencia;
Donde
probabilidad acumulada
La cantidad i se refiere al valor en cuestin: p=p
i
es la probabilidad de que X
sea igual a i, y F=F(i) es la probabilidad de que X sea menor o igual a i.

Poisson con media se puede expresar en el siguiente algoritmo.

Paso 1 Generar un nmero aleatorio U
Paso 2 i=0, p=e
-
, F=p.
Paso 3 Si U<F. hacer X=i y terminar
Paso 4 p= p/(i+1), F=F+p, i=i+1
Paso 5 Ir a paso 3
Algoritmo 3: Generacin de una v.a. Poisson P()

Generar U ~(0; 1);
i=0, p=e
-
, F=p.
while U F do
p = (p)/(i+1);
F = F + p;
i = i + 1
end
X=i
Algoritmo 2:
a.- Simulacin en R-project
b.- Simulacin en Excel
pos<-function(x,u){j<-0;p<-exp(-1);F<-p;for(i in 1:x+1){if(u<=F) u<-j else u <-
u;p<-p/(j+1);F<-F+p;j<-j+1;print(u)}}
pos<-function(a,u){j<-0;p<-exp(-a);F<-p;while(u>F){p<-(a*p)/(j+1);F<-F+p;j<-
j+1};print(j)}
pos<-function(n,a){u<-c(runif(n));j<-0;p<-exp(-a);F<-p;for(i in
1:n){while(u[i]>F){p<-(a*p)/(j+1);F<-F+p;j<-j+1};print(j)}}
c.- Generando una variable aleatoria Binomial

Suponer que se quiere generar un valor de una binomial(n.p) variable aleatoria
X, esto es, X es tal que;
Haciendo esto, se emplea el mtodo de la transformacin inversa para hacer uso
de la identidad recursiva
Si i denota el valor en cuestin, pr =P{X =i} la probabilidad de que X sea igual a i,
y F = F(i) la probabilidad de que X sea menor o igual a i , el algoritmo puede ser
expresado como sigue;
Paso 1
Paso 2
Paso 3
Paso 4
Paso 5
El algoritmo anterior primero se verifica que sea X =0 , entonces sea X =1, y
as en todos. Por lo tanto, el nmero de buscadores hecho es 1 ms que el
valor de X . Por consiguiente, en promedio, se elige 1+np buscadores para
generar X. Desde una variable aleatoria binomial (n, p) , representa el nmero
de sucesos en n intentos independientes, cada suceso tiene una probabilidad
p, esto sigue que cada variable aleatoria puede ser generada por substraccin
de n valores de una variable aleatoria binomial (n,1-p). Por lo tanto, cuando
p>1/ 2, se puede generar una variable aleatoria binomial (n,1-p) , por el
mtodo arriba mencionado y substrayendo este valor de n se obtiene la
generacin deseada.
Tambin puede utilizar el siguiente algoritmo
Puede utilizar el siguiente algoritmo
a.- Simulacin en R-project
b.- Simulacin en Excel
bin<-function(m,n,p){u<-c(runif(m));c<-p/(1-p);j<-0;pr<-(1-p)^n;F<-pr;for(i in
1:m){while(u[i]>F){pr<-((c*(n-1))/(j+1))*pr;F<-F+p;j<-j+1};print(j)}}
2.- Mtodo de Aceptacin y Rechazo
Suponer que se tiene un mtodo eficiente para simulacin de variables aleatorias
teniendo funcin de probabilidad conjunta, {q
j
, j 0} . Se puede usar esto como la
base para la simulacin de la distribucin teniendo como funcin conjunta, {p
j
, j 0}
simulando primero una variable aleatoria Y teniendo como funcin conjunta {q
i
} y
aceptando este valor simulado con una probabilidad proporcional a
Ahora se tiene la siguiente tcnica, llamada mtodo de rechazo o el mtodo de
aceptacin-rechazo, para simulacin de variable aleatoria X , teniendo la funcin
conjunta p
j
=P{X =j}.

El algoritmo es como sigue;

Paso 1 Simular el valor de Y, teniendo la funcin de probabilidad conjunta q
j
.
Paso 2 Generar un nmero aleatorio U.
Paso 3 Si U < p
y
/cq
y
, hacer X= Y termina. En caso contrario regresar al paso 1.
Especficamente, sea c una constante tal que;
Teorema
El algoritmo de aceptacin y rechazo genera una variable aleatoria X tal que;
Adems, el nmero de iteraciones del algoritmo necesarios para obtener X es una
variable aleatoria geomtrica con media c .
Demostracin
Para empezar, determinar la probabilidad que una sola iteracin produce al
aceptar el valor j . Primero note que;
Sumando sobre j se obtiene la probabilidad que ha generado la variable aleatoria
es aceptada;
Como cada iteracin independientemente el resultado es un valor aceptado con
probabilidad 1/ c , se puede ver que el nmero de iteraciones necesarias tiene
una distribucin geomtrica con media c . Tambin,
Algoritmo del mtodo de aceptacin y rechazo
Ejemplo 1

Suponga que queremos simular el valor de una variable aleatoria X que toma uno
de los valores 1,2,...,10 con probabilidades respectivas 0.11, 0.12, 0.09, 0.08,
0.12, 0.10, 0.09, 0.09, 0.10, 0.10.

Solucin:
Sea q la densidad uniforme discreta en 1,...,10. Es decir, q
i
=1/10, j = 1, . . . , 10.
Para esta eleccin de {q
j
}, podemos elegir c como.
de modo que el algoritmo sera el siguiente
Paso 1: Generar un nmero aleatorio U
1
, y hacer Y = Ent(10U
i
) + 1.
Paso 2: Generar un segundo nmero aleatorio U
2
.
Paso 3: Si U
2
P
Y
/0.12, hacer X =Y y terminar.
En caso contrario, regresar al paso 1.


La constante 0.12 del paso 3 se debe a que cq
y
=1.2/10 = 0.12. En promedio,
este algoritmo requiere slo 1.2 iteraciones para obtener el valor generado de
X
a.- Simulacin en R-project
b.- Simulacin en Excel
rec<-function(u){p<-c(0.11,0.12,0.09,0.08,0.12,0.10,0.09,0.09,0.10,0.10);j<-
trunc(10*runif(1))+1;if(u<=p[j]/0.12)x<-j;print(x)}
Ejemplo 2

Aplicar del mtodo de aceptacin y rechazo para generar una variable aleatoria
discreta con funcin de probabilidad definida como.
P(X = 1) = 0,15,
P(X = 2) = 0,22,
P(X = 3) = 0,33,
P(X = 4) = 0,10,
P(X = 5) = 0,20.
Sea q
Y
una distribucin uniforme discreta con dominio 1, ...5, donde la distribucin
de probabilidad est dada por.
q
Y
=1/5 ; y = 1, . . . , 5.
La constante c lo determinamos como el valor mximo del cociente p
Y
/q
Y.

Los pasos para generar los nmeros aleatorios son:

1. Genera un nmero aleatorio de la distribucin discreta uniforme q
y
.
2. Genera un nmero aleatorio uniforme U.
3. Si se cumple que
entonces entrega X = Y , de otro modo regresa al paso 1.
rec2<-function(u){p<-c(0.15,0.22,0.33,0.10,0.20);j<-
trunc(5*runif(1))+1;if(u<=p[j]/0.33)x<-j;print(x)}
a.- Simulacin en R-project
3.- Mtodo de Composicin
Suponer que se tiene un mtodo eficiente para simular el valor de una variable
aleatoria teniendo cualquiera de las dos funciones de probabilidades conjunta
y se quiere simular el valor de la variable aleatoria X teniendo la funcin conjunta
Donde 0<<1. Una forma para simular tal variable aleatoria X es para notar que si
X
1
y X
2
son variables aleatorias teniendo funciones conjuntas
Se tendr la funcin dada por (1).
respectivamente, entonces la variable aleatoria X definida por,
. (1)
Esto implica que para generar el valor de tal variable aleatoria primero generamos
un nmero aleatorio U y luego un valor de X
1
si U< y de X
2
si U >.
Paso 1 Generando un nmero aleatorio U1
Paso 2 Generando un nmero aleatorio U2
Paso 3 Si U1< , sea X = X1. En caso contrario, sea X= X2
Algoritmo de composicin
Ejemplo 1

Suponer que se quiere generar valores de una variable aleatoria X tal que
Solucin:
Para ello primero un nmero aleatorio U y despus a partir de la distribucin
uniforme discreta sobre 1,2,,10 si U < 0.5 y de la distribucin uniforme discreta
sobre 6, 7, 8, 9, 10 en caso contrario. Es decir, podemos simular X como sigue;
(2)
Paso 1 Generando un nmero aleatorio U
1
Paso 2 Generando un nmero aleatorio U
2
Paso 3 Si U
1
<0.5 , sea X = Ent(10U
2
) +1. En caso contrario, sea X= int(5U
2
) +6


Si F
1
, i =1,..., n son funciones de distribucin y
i
, i =1,..., n son nmeros no
negativos cuya suma es 1, entonces la funcin de distribucin F dada por.
Es decir, una composicin de la distribucin F
i
, i =1,..., n. Una forma de simular a
partir de F es simular una variable aleatoria I , para i con probabilidad
i
, i =1,..., n
y luego simular a partir de la distribucin F
I
(es decir, si el valor simulado de I es
I=j , entonces la segunda simulacin es a partir de F
j
).
a.- Simulacin en R-project
com<-function(u1){u2<-runif(1);if(u1<0.5)x<-trunc(10*u2 )+1 else x<-
trunc(5*u2)+6}
4.- Mtodo de convolucin

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 mtodo de convolucin se puede usar siempre y cuando la variable aleatoria
x se pueda expresar como una combinacin lineal de k variables aleatorias:
En este mtodo se necesita generar k nmeros aleatorios (u
1
,u
2
,...,u
k
) para
generar (x
1
,x
2
,...x
k
) variables aleatorias usando alguno de los mtodos
anteriores y as poder obtener un valor de la variable que se desea obtener por
convolucin.
a.- Distribucin de Bernouilli mtodo de convolucin
Su distribucin de probabilidad es
su distribucin de probabilidad acumulada
La media de la distribucin es E(x)=p y su varianza Var(x)=p(1-p)
El algoritmo para generar valores de una Bernouilli es el siguiente:


Generar u~U(0,1)
Si u<=p entonces salida xito si no salida fracaso
a.- Simulacin en R-project
b.- Simulacin en Excel
con1<-function(n,p){u<-c(runif(n));for(i in 1:n){if(u[i]<=p) u[i]<-1 else
u[i]=0};print(u);table(u)}
b.- Distribucin Geomtrica mtodo de convolucin

La distribucin geomtrica mide el nmero de fracasos antes del siguiente xito.
sta distribucin tiene un parmetro p que indica la probabilidad de xito. El
nmero de piezas revisadas antes de obtener una defectuosa, el nmero de
lanzamientos de una moneda antes de que salga cara, etc..., son ejemplos de
variables que siguen una distribucin geomtrica.
Su distribucin de probabilidad es
su distribucin de probabilidad acumulada
La media de la distribucin es
y su varianza
Se pueden obtener valores de una distribucin geomtrica mediante convolucin
de bernouilli:
a.- Simulacin en R-project
con2<-function(p){E<-0;F<-0;{while(E<=0){u<-runif(1);if(u<=p)E<-E+1 else F<-
F+1};print(F)}}
c.- Distribucin Binomial mtodo de convolucin

La distribucin binomial mide el nmero de xitos en n pruebas independientes.
Ejemplos de variables que siguen esta distribucin son el nmero de miembros de
un conjunto que cumplen cierta caractersticas tal como el nmero de piezas
defectuosas en una caja de 200, el nmero de veces que se obtiene cara si se
lanza 10 veces una moneda, etc.

Esta distribucin tiene dos parmetros: n que es el nmero de experimentos y p
que indica la probabilidad de xito.
Su distribucin de probabilidad es
distribucin de probabilidad acumulada
La media de la distribucin es
y su varianza
Mediante convolucin de bernouilli
a.- Simulacin en R-project
con3<-function(n,p){E<-0;for(i in 1:n){u<-runif(1);if(u<=p)E<-E+1};print(E)}

Potrebbero piacerti anche