Date post: | 29-Dec-2015 |
Category: |
Documents |
Upload: | todd-martinez |
View: | 20 times |
Download: | 0 times |
Generación de variables aleatorias Continuas 1.- Método transformación Inversa:
Proposición:
Sea U una variable aleatoria uniforme en (0,1). Para cualquier función de distribución continua F, invertible, la variable aleatoria X se definida como
X=F-1(U)
tiene distribución F. [F-1 se define como el valor de x tal que F(x) = u.]
Demostración
Sea Fx denota la función de distribución de X = F-1(U) . Entonces
Ahora, como F es una función de distribución, se tiene que F(x) es una función
monótona creciente de x y por lo tanto la desigualdad "a≤ b" es equivalente a la
desigualdad “F(a) ≤ F(b)". Así, de la ecuación (1), vemos que
……(1)
La proposición anterior muestra entonces que para generar una variable aleatoria
X a partir de la función de distribución continua F, generamos un número aleatorio
U y hacemos entonces X = F-1(U).
Se propone el siguiente algoritmo para esta técnica:
Poso 1 Generar n valores ui ~U(0,1)
Paso 2 Regresar xi=F-1(ui)
También puede usar el siguiente algoritmo
Paso 1 Obtener una expresión para la función de distribución inversa F−1(U).
Paso 2 Genera un número uniforme U.
Paso 3 Entrega la variable aleatoria X deseada, usando X = F−1(U).
Ejemplo 1
Queremos generar una variable aleatoria X con función de distribución
F(x)=xn , 0<x<1
Solución:
Si hacemos x = F-1(u), entonces
u = F(x) = xn, o, en forma equivalente, x = u1/n
Por lo tanto, para generar dicha variable aleatoria X generamos un número
aleatorio U y luego hacemos X = U1/n.
a.- Simulación en R-project
b.- Simulación en Excel
u<-runif(30)
x<-u^(1/30)
x
inv1<-function(n){u<-runif(n);x<-u^(1/n);x}
Ejemplo 2
Distribución exponencial
La media de la distribución es , y su varianza 1/ 2.
Distribución exponencial
La función de distribución acumulada para una variable aleatoria exponencial
con parámetro λ está dada por
Solución
Haciendo
podemos resolver para encontrar x como sigue
a.- Simulación en R-project
b.- Simulación en Excel
u<-runif(30)
Notando que la cantidad 1− u también se distribuye uniformemente en el intervalo
(0, 1), podemos generar una variable aleatoria exponencial con parámetro λ
usando la transformación
x<--log(u)
x
exp<-function(n,a){u<-runif(n);x<-(-1/a)*log(u);x}
plot(exp(50000,1))
Se ajustan los parámetros
lambda = 1;
n = 1000;
Se genera los valores aleatorios.
uni = rand(1,n);
X = -log(uni)/lambda;
El siguiente código en R-Project generará una variable aleatoria exponencial
para un λ dado.
A continuación se muestran las gráficas hechas en R para generar 50,000
números aleatorios con una distribución exponencial con parámetro λ=1
plot(exp(50000,1))
hist(exp(50000,1))
Comparación de números aleatorios generados por el método de la
transformación inversa con la distribución teórica.
Ejemplo 3
Distribución Weibull. En este caso, se tiene que.
Solución
Si y
Si hacemos x = F-1(u), entonces
Por lo tanto, para generar dicha variable aleatoria X generamos un número
aleatorio U y luego hacemos.
U =
En forma equivalente
a.- Simulación en R-project
b.- Simulación en Excel
u<-runif(30)
b<-1
c<-1
xb*(-log(u))^(1/c)
x
plot(exp(50000,1,2))
exp<-function(n,b,c){u<-runif(n);x<-(b)*(-log(u))^(1/c);x}
Se ajustan los parametros
b = 1;
c=2
n = 50000;
Se genera los valores aleatorios.
U<.runif(50000)
xb*(-log(u))^(1/c)
El siguiente código en R-Project generará una variable aleatoria Weibull para
una b y c dada
A continuación se muestran las gráficas hechas en R para generar 50,000
números aleatorios con una distribución Weibull
Comparación de números aleatorios generados por el método de la
transformación inversa con la distribución teórica.
a.- Método transformación Inversa función Gamma
Suponga que queremos generar el valor de una variable aleatoria gamma (n,λ).
Como la función de distribución F de tal variable aleatoria está dada
No es posible dar una expresión con forma cerrada para su inversa. Sin embargo
una variable aleatoria gamma X con parámetros (n,λ) se puede considerar como
la suma de n exponenciales independientes, cada con razón λ. Podemos obtener
una variable aleatoria gamma (n,λ) si generamos n números aleatorios
U1,……..Un y hacemos entonces
Por el uso de la identidad
Generar X y Y, un par de exponenciales independientes e idénticamente
distribuidas con media 1, generando primero X+Y y luego el resultado de que,
dado que X+Y = t, la distribución condicional de X es uniforme en (0,t). Entonces,
se puede utilizar el siguiente algoritmo para generar un par de exponenciales
con media 1.
Paso 1: Generar números aleatorios U1 y U2.
Paso 2: Hacer t = -log(U1U2).
Paso 3: Generar un número aleatorio U3.
Paso 4: X = tU3,Y=t-X.
Al comparar esto con el método directo de generar dos números aleatorio U1 y U2,
y luego hacer X=-logU1, y Y=-logU2, el algoritmo anterior ahora un cálculo
logarítmico, con un costo de dos multiplicaciones y la generación de un número
aleatorio.
También podemos generar k exponenciales independientes con media 1, al
generar primero su suma, digamos con -log(U1,,Uk), y luego generar k-1 números
aleatorios adicionales U1,..,Uk-1, que deben ser ordenados. Si U(1)<U(2)<,...,<Uk-1
son sus valores ordenados, y si -log(U1,…,Uk) = t, entonces las k exponenciales
son
t[U(i) – U(i-1)], i = 1, 2 , . . . , k, donde U(0)=0, U(k) = t
2.- Método de Rechazo:
Suponga que tenemos un método para generar una variable aleatoria con función
de densidad g(x). Podemos utilizarlo como base para generar a partir de la
distribución continua con función de densidad de f(x): se genera Y a partir de g y
luego se acepta este valor generado con una probabilidad proporcional a f(Y)/g(Y).
En concreto, sea c una constante tal que
El método de rechazo
Paso 1: Generar Y con densidad g.
Paso 2: Generar un número aleatorio U.
Paso 3: Si, , hacer X =K. En caso contrario, regresar al paso 1
para toda y
Teorema
(i) La variable aleatoria generada por el método de rechazo tiene densidad f.
(ii) El número de iteraciones necesarias del algoritmo es una variable aleatoria
geométrica con media c.
Corno en el caso discreto, debe observarse que la forma en que para aceptar el
valor Y con probabilidad f(Y)/cg(Y) se genera un número aleatorio U y se acepta
si Y si U≤f(Y)/cg(Y).
Ejemplo 1
Generar una variable aleatoria con función de densidad
Solución
Esta variable aleatoria se concentra en el intervalo (0,1), consideremos
Para hallar “c” tal que f(x)/g(x) ≤ c, utilizamos cálculo del valor máximo de
AI derivar se obtiene
Igualando a cero, el valor máximo es x = 1/4, entonces
Por lo tanto
así, el procedimiento de rechazo es el siguiente
Paso 1: Generar números aleatorios U1 y U2:
Paso 2: Si, U2≤ (256/27)U1(1-U1)3, detenerse y hacer X=U1. En caso
contrario, regresar al paso 1.
R-Project
Rec1<-function(n){U1<-c(runif(n));U2<-c(runif(n));for(i in
1:n){if(U2[i]<(256/27)*U1[i]*(1-U1[i])^3) X<-U1[i];print(X)}}
Ejemplo 2
Generar una variable aleatoria con densidad gamma (2/3,1)
donde Como esta variable aleatoria está concentrada en el eje
positivo y tiene media 3/2, es natural intentar la técnica de rechazo con una variable
aleatoria exponencial con la misma media. Por lo tanto, sea
Ahora
Al derivar e igualar a cero la derivada resultante, obtenemos que el valor máximo
de este cociente se obtiene cuando
es decir, cuando x=3/2. Por lo tanto
Como
Pues
El algoritmo será
Paso 1: Generar un número aleatorio U1, y hacer Y = -(3/2)logU1,.
Paso 2: Generar un número aleatorio U2.
Paso 3: Si hacer X=Y. En caso contrario, regresar al paso 1
El número promedio de iteraciones necesarias es
Paso 1: Generar un número aleatorio U1, y hacer Y = -(3/2)logU1,.
Paso 2: Generar un número aleatorio U2.
Paso 3: Si hacer X=Y. En caso contrario, regresar al
paso 1
Rec2<-function(n){U1<-c(runif(n));U2<-c(runif(n));Y<-(-3/2)*log(U1[i]);for(i in
1:n){if(U2[i]<(2*exp)*U1[i]*(1-U1[i])^3) X<-U1[i];print(X)}}
3.- El método polar para generar variables aleatorias normales
Sean X y Y variables aleatorias normales unitarias independientes y sean R y θ
las coordenadas polares del vector (X, Y).
Como X y Y son independientes, su densidad conjunta es el producto de sus
densidades individuales y por lo tanto está dada por
……..(1)
Para determinar la densidad conjunta de R2 y θ -llamémosla f(d,θ) hacemos el
cambio de variables.
El jacobiano de esta transformación es igual a 2, la ecuación (1) implica que la
función de densidad conjunta de R2 y θ está dada por
Sin embargo, como esto es igual al producto de una densidad exponencial con
media 2. (a saber, ) y la densidad uniforme en (O, 2π) (a saber, 1/2 π),
esto implica que
R2 y θ son independientes; R2 es exponencial con media 2
y θ se distribuye uniformemente en (0, 2θ)
Ahora podemos generar un par de variables aleatorias normales estándar
independientes X y Y de la siguiente manera
Paso 1: Generar números aleatorios U1 y U2.
Paso 2: R2 = -2 logU1, (R2 exponencial con media 2). Sea θ = 2πU2
(θ es uniforme entre 0 y 2π).
Paso 3: Ahora, sean
…….(Box-Muller)
no es eficiente computacional por tiene senos y cósenos , entonces
Por
Por transformación de Box-Muller se tiene.
Como está uniformemente distribuida en (0,1) y es independiente del
ángulo aleatorio θ, podemos tomar un número aleatorio U necesario. Por lo tanto, si
S = R2, obtenemos que
son normales unitarias independientes cuando (V1, V2) es un punto elegido al
azar en el círculo de radio 1 con centro en el origen, y
El algoritmo es
Paso 1: Generar números aleatorios U1 y U2.
Paso 2: Hacer V1= 2U1- 1, V2 = 2U2 -1, S = V12+ V2
2.
Paso 3: Si S > 1 regresar al paso 1.
Paso 4: Regresar las normales unitarias independientes.
Esto se llama método polar. Como la probabilidad de que un punto aleatorio
del cuadrado esté dentro del círculo es igual a n/4
1.- Dé un métodos para generar una variable aleatoria con función de densidad
2.- Dé un métodos para generar una variable aleatoria con función de densidad