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)}