generación va continua 2

Post on 29-Dec-2015

22 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related