Está en la página 1de 9

GRADO en INGENIERIA de TELECOMUNICACION

(Sistemas de comunicaciones, audiovisuales y telematica)

ESTADISTICA

2008-2009

PRACTICA 2. VARIABLES ALEATORIAS

OBJETIVOS: Introduccion a las variables aleatorias: generacion de variables aleatorias. Meto-


do de la transformacion inversa.

1. Variables aleatorias
La siguienta tabla resume algunas de las funciones mas importantes para la generacion de
numeros aleatorios en MATLAB/Octave:

Funcion Descripcion Sintaxis


rand no aleatorios [0, 1] rand(m,n)
unifrnd no aleatorios [a, b] unifrnd(a,b,m,n)
unidrnd o
n aleatorios discretos {1, 2, ..., N } unidrnd(N,m,n)

donde m y n, son respectivamente en no de filas y columnas a generar.

1.1. Funciones preliminares utiles


1. Genera 100 datos de la distribucion uniforme contnua U(0, 1).

>> x=rand(100,1) % o x=unifrnd(0,1,100,1)

2. Genera con MATLAB/Octave, 5 lanzamientos de un dado.

>> x=unidrnd(6,5,1) % generamos los 5 lanzamientos


% a partir de una uniforme discreta entre 1 y 6
% otra manera:
>> u=rand(6,1)
>> x=floor(6*u+1)

Grado en Ing. de Telecomunicacion - Estadstica (2008-2009), PRACTICA 2. VARIABLES ALEATORIAS 1


3. Genera con MATLAB/Octave, 5 lanzamientos de 3 dados.

>> x=unidrnd(6,5,3) % generamos los 5 lanzamientos de los 3 dados


% a partir de una uniforme discreta entre 1 y 6
% otra manera:
>> u=rand(5,3)
>> x=floor(6*u+1)

4. Comenta el siguiente codigo de MATLAB/Octave:


1:>> n=1000000;
2:>> x=rand(n,1); y=rand(n,1);
3:>> c=sum(x.^2+y.^2<=1)
4:>> a=(4/n)*c;
SOLUCION:
X El codigo esta generando n pares de puntos (x, y) en el cuadrado unidad (lneas 1 y 2). La
lnea 3, nos indica cuantos de estos pares estan dentro del crculo unidad, definido por la ecuacion
x2 + y 2 1. Finalmente, por un razonamiento de areas proporcionales en la lnea 4, se obtiene a
como una aproximacion al numero .
5. Calcular mediante simulacion la integral dada por:
Z 3
x2 dx
2

SOLUCION:
X Dado que la funcion f (x) = x2 en el intevalo [2, 3] verifica que su valor esta entre 0 y 9.
Generaremos puntos aleatorios en el rectangulo [2, 3] [0, 9] y veremos la proporcion de estos
puntos que caen por debajo de la grafica. El codigo en MATLAB/Octave es:

% creamos la funcion f(x) en un fichero *.m


function f = f(x)
f = x.^2;
% En el Command Window:

>> n=1000000;
>> x=unifrnd(2,3,n,1); y=unifrnd(0,9,n,1);
>> area=9*sum(y<f(x))/n
>> area=
6.3212
% podemos compararlo con el valor teorico:

>> int(x^2,x,2,3)
ans=
19/3

Grado en Ing. de Telecomunicacion - Estadstica (2008-2009), PRACTICA 2. VARIABLES ALEATORIAS 2


1.2. Generacion de variables aleatorias
1. Supongamos el experimento del lanzamiento de dos monedas. Sea X, la variable aleatoria
numero de cruces. Determina con MATLAB/Octave la funcion de probabilidad de X.

>> n=10000;
>> u1=rand(n,1);
>> u2=rand(n,1);

>> m1=1*(u1<=1/2)+0*(u1>1/2); % generamos los n lanzamientos de las


>> m2=1*(u2<=1/2)+0*(u2>1/2); % monedas 1 y 2, con probabilidad
% 1/2 de cruz (=1) y de cara (=0)

>> x=m1+m2; % x es la suma de las cruces de ambas monedas

>> tabulate(x) % con tabulate, obtenemos la tabla de frecuencias


% absoluta y relativa

Value Count Percent


0 2483 24.83%
1 5006 50.06%
2 2511 25.11%

De este modo hemos aproximado la funcion de probabilidad teorica:

p(x) = P (X = x)

>> tab=tabulate(x) % guardamos la tabla en una matriz tab


>> bar(tab(:,3)) % representamos el diagrama de barras de las
% frecuencias relativas
60

50 X p(x)
40
0 1/4
1 1/2
30
2 1/4
20

10

0
1 2 3

2. Dada la variable aleatoria X, del ejercicio anterior, comprueba los valores teoricos E[X] y
Var[X].
SOLUCION:

Grado en Ing. de Telecomunicacion - Estadstica (2008-2009), PRACTICA 2. VARIABLES ALEATORIAS 3


X La esperanza de X es:
n
X 1 1 1
= E[X] = xi P (X = xi ) = 0 +1 +2 =1
2 4 2
i=1

Y la varianza:
n
X
2 = Var[X] = (xi )2 P (X = xi )
i=1
2 1 1 1
= (0 1) + ... + (2 1)2 =
2 2 2

Recuerda:
Var[X] = E[X 2 ] (E[X])2

>> mean(x) % es aproximadamente 1


>> var(x) % es aproximadamente 0.5

3. El metodo de la inversa1 de la funcion de distribucion, FX (x), afirma que si una variable


aleatoria X tiene una funcion de distribucion FX (x) que admite inversa, entonces se verifica
que la variable transformada U = FX (X) sigue siempre una distribucion uniforme continua
U.
Este resultado se aplica en la vida real considerando la igualdad u = FX (x) y despejando x
en funcion de u, que vendra dado por x = FX1 (u), con lo que si se genera u U(0, 1) se tiene
que x = FX1 (u) sigue la distribucion de X.
Para generar u U con MATLAB/Octave podemos utilizar rand o unifrnd.

a) Sea X una variable aleatoria con funcion de distribucion FX (x), dada por:

0 x<0
FX (x) =
1 e2x 0x

Como simularas valores de la v.a. X?


b) Comprueba con MATLAB/Octave los valores de E[X] y de Var[X].

SOLUCION:
a) Por el metodo de la inversa tenemos que considerando la igualdad u = FX (x), tenemos que
para 0 x, se verifica que:

1 e2x = u
1 u = e2x
1
log(1 u) = x
2
1
Para mas detalles: link

Grado en Ing. de Telecomunicacion - Estadstica (2008-2009), PRACTICA 2. VARIABLES ALEATORIAS 4


Con lo que si generamos u U(0, 1), obtendremos que x f (x). El pseudocodigo sera:
1: Fijar n = 100
2: Generar n datos u U(0, 1)
3: Aplicar transformacion inversa (x = 21 log(1 u))
4: Tenemos que x f (x)

45

40

35
En MATLAB, sobre el Command Window:
30

>> n=100000; 25

>> u=rand(n,1); 20

>> x = (-1/2)*log(1-u); 15

>> hist(x) 10

0
0 0.5 1 1.5 2 2.5

NOTA: El metodo de la inversa permite simular variables aleatorias de manera sencilla a partir
de v.a.s uniformes. En este ejercicio se han simulado v.a.s Exponenciales de parametro = 2.

b) Dada la funcion de distribucion de X, FX (x), podemos obtener la funcion de densidad f (x),


sabiendo que
dFX (x)
f (x) =
dx
y por tanto:  2x
2e x0
f (x) =
0 en otro caso

Z
1
= E[X] = xf (x)dx =
2
1 2
Z   Z
2 2 1
= Var[X] = (x ) f (x)dx = x f (x)dx =
2 4

>> mean(x) % es aprox. 0.5


>> var(x) % es aprox. 0.25

NOTA: como se indico en el apartado anterior, X Exp( = 2), donde E[X] = 1/ y


Var[X] = 1/2 .

4. Sea X una variable aleatoria Rayleigh de parametro cuya funcion de densidad f (x) viene
dada por
x exp 2 x2 x > 0
 
f (x) =
0 resto

Grado en Ing. de Telecomunicacion - Estadstica (2008-2009), PRACTICA 2. VARIABLES ALEATORIAS 5


con media y varianza dadas por r

= E [X] =
2
4
2 = V [X] =
2
a) Cual sera el codigo para generar 50 valores X con = 0, 17?
b) Que procedimientos numericos se podra usar para ver que se ha generado de forma
correcta la v.a. X en el apartado anterior?

SOLUCION:

a) La forma de generar X es a traves del metodo de la funcion inversa de la funcion de distribucion.


Para ello en primer lugar hay que calcular la funcion de distribucion.
 Rx
 0dt R=x0
x0
F (x) = R x 2 2

t exp 2 t dt = 0 t exp 2 t dt x >0

con lo que
x0

0
F (x) = 2 1
t
exp 2 t2 = exp 2 x2 1 = 1 exp 2 x2
    
2 0
x>0

que cumple las cuatro propiedades para ser funcion de distribucion (F () = 0, F (+) = 1,
monotona no decreciente y continua por la derecha).

En segundo lugar se utiliza el resultado teorico de que Y = F (X) sigue, siempre que F admita
inversa, una U (0, 1). A efectos practicos este resultado se utiliza generando una u segun una
U (0, 1) igualando a F (x) y despejando x en funcion de u. Dado que u > 0 se invierte F segun
la expresion:  
1 exp x2 = u
2
 
1 u = exp x2
2
2
x2 = Ln (1 u)

r
2
x= Ln (1 u)

De la expresion anterior se toma la raz positiva para que x > 0 que es donde se ha invertido
F . El pseudocodigo sera:
- Generar u segun una U (0, 1) .
q
- Concluir que x = 2 Ln (1 u) sigue la v.a. requerida (en este caso Rayleigh).

>> y=rand(50,1);
>> alpha=0.17;
>> x=sqrt((-2/alpha)*log(1-y));

Grado en Ing. de Telecomunicacion - Estadstica (2008-2009), PRACTICA 2. VARIABLES ALEATORIAS 6


b) Podemos comprobar que la media observada y la desviacion tpica obervada para los x generados
son parecidos a los valores teoricos:

>> media_teorica = sqrt(pi/(2*alpha));


>> media_teorica =
3.0397

>> var_teorica = (4-pi)/(2*alpha);


>> var_teorica =
2.5247

>> mean(x) % aprox. 3.0397


>> var(x) % aprox. 2.5247

5. Decir si es verdadera o falsa la siguiente afirmacion. En caso de que sea verdadera demostrarlo
y en caso de que sea falsa dar un contraejemplo o su valor correcto:

El codigo en MATLAB/Octave para generar 100 valores de una v.a Gompertz generalizada
con funcion de distribucion

1 exp ( exp (x)) 0 < x
F (x) =
0 resto
es

>> x=rand(100,1);
>> g=-log(1-x); % log es logaritmo neperiano

SOLUCION:

X Es falsa. Para generar una v.a. continua cuya funcion de distribucion admita inversa, se
considera
F (x) = u

con u U (0, 1) y se despeja la x. Por lo que

F (x) = 1 exp ( exp (x)) = u

1 u = exp ( exp (x))


ln (1 u) = exp (x)
x = ln ( ln (1 u))

Por tanto el codigo en MATLAB sera:

>> u=rand(1000,1);
>> x=log(-log(1-u));

Grado en Ing. de Telecomunicacion - Estadstica (2008-2009), PRACTICA 2. VARIABLES ALEATORIAS 7


6. En una caseta de una feria se nos propone el siguiente juego. Hay que elegir un numero del
1 al 6. El feriante lanzara tres dados. Si sale el numero elegido en los tres dados recibiremos
3 euros, si sale en dos recibiremos 2 euros, si sale en uno recibiremos 1 euro y si no sale en
ninguno, pagaremos 1 euro. Es ventajoso el juego para nosotros? Resolverlo con una funcion
MATLAB/Octave.
SOLUCION:

X Creamos la funcion juego3dados.m:

%%% *.m file


function esperanza = juego3dados(n,k)
u=unidrnd(6,n,3);
a=(u==k);
s=sum(a,2);
g=-1*(s==0)+1*(s==1)+2*(s==2)+3*(s==3);
esperanza=sum(g)/n;
%%%

Utilizando esta la funcion juego3dados.m, observamos que para cualquier valor de k, la esper-
anza es negativa, y por tanto el juego no es ventajoso. Se puede observar que el valor obtenido
es aproximadamente el valor teorico 0,08.

>> esperanza = juego3dados(1000,k)

1.3. Ejercicios propuestos


1. a) Indicar el codigo MATLAB para resolver el problema Ex. JUN 2007 ITTel, C1b
(link).
b) En el apartado a), comprueba graficamente mediante un diagrama de barras, que la
generacion de X1 y X2 es correcta. PISTA: Recordar Ejercicio 1.2.1 de la practica 2.

2. Utiliza el metodo de la transformacion inversa de la funcion de distribucion para generar una


variable aleatoria continua cuya funcion de densidad sea

0 resto
f (x) = 1
18 x 0 < x<6

a) Calcular E [X] .
b) Aplicar el metodo de la transformacion inversa para generar valores de la v.a. X. PISTA:
determinar en primer lugar la funcion de distribucion FX (x) .
c) Escribir el PSEUDOCODIGO para generar valores de la v.a. X.
d ) Escribir el codigo MATLAB/Octave para genera valores de la v.a. X.
e) Dada la v.a. Y = 1/X, determinar fY (y) por el teorema de la transformacion. Verificar
que fY (y) cumple las dos propiedades para ser funcion de densidad.

Grado en Ing. de Telecomunicacion - Estadstica (2008-2009), PRACTICA 2. VARIABLES ALEATORIAS 8


f ) Determinar FY (y) a partir de fY (y) y directamente a partir de la definicion FY (y) =
P (Y y). Verificar que FY (y) cumple las cuatro propiedades para ser funcion de dis-
tribucion.
g) Calcular E [Y ] a traves de fY (y) y directamente a traves de fX (x) .
h) Comprobar con MATLAB/Octave el valor teorico de E [Y ] por el metodo de la inversa
aplicado a FY (y) .
i ) Comprobar con MATLAB/Octave el valor teorico de E [Y ] generando directamente Y =
1/X, con valores X a partir del apartado d).
j ) Comprobar con MATLAB/Octave, utilizando las v.a. X e Y anteriores que
 
1 1
E 6=
X E [X]

(es decir que la esperanza no es un operador no lineal).

Grado en Ing. de Telecomunicacion - Estadstica (2008-2009), PRACTICA 2. VARIABLES ALEATORIAS 9

También podría gustarte