Prácticas Ingeniería de Telecomunicaciones

Anuncio
INGENIERIA de TELECOMUNICACION
ESTADISTICA
2009-2010
PRACTICA 2. PROBABILIDAD Y VARIABLES ALEATORIAS
OBJETIVOS: Introducción a la probabilidad y a las variables aleatorias
1.
Probabilidad
1. Simular 1000 lanzamientos de una moneda cuya probabilidad de obtener cara (codificada
como 1) es de 0,4 y la de obtener cruz (codificada como 0) es de 0,6. ¿Cómo se podrı́a ver
que la simulación está funcionando según lo esperado?
>>
>>
>>
>>
n=1000; p=0.4;
u=rand(n,1);
m=1*(u<=p)+0*(u>p);
mean(m) % aprox. 0.40
2. Simular 10 lanzamientos de una moneda cuya probabilidad de obtener cara (codificada como
1) es de 0,4 y la de obtener cruz (codificada como 0) es de 0,6 y localizar en un vector los
lanzamientos que son cara.
>>
>>
>>
>>
>>
>>
n=10; p=0.4;
u=rand(n,1);
m=1*(u<=p)+0*(u>p);
lanza=(1:n)’
data=[lanza m];
donde=data(find(data(:,2)==1))
3. La probabilidad de lluvia en un dı́a es de p = 0,5. Indicar el código MATLAB/Octave para
saber cuál es la probabilidad de que llueva el fin de semana (asumiendo independencia de
lluvia entre dı́as) Compararla con la teórica.
Sea A el suceso llueve en sábado y B el suceso llueve en domingo, y la probabilidad de
lluvia P (A) = P (B) = 0,5. Por tanto, la probabilidad de que llueva el fin de semana es:
P (A ∪ B) = P (A) + P (B) − P (A ∩ B) = 0,5 + 0,5 − 0,5 · 0,5 = 0,75
Ing. de Telecomunicacion - Estadistica (2009-2010), PRACTICA 2. PROBABILIDAD Y V.A’s
1
% mediante simulacion:
>> u=rand(10000,2) ;
% simulamos 2 columnas (sábado y domingo)
>> x=(u<=p);
% si u<=p, toma valor 1 y 0 en caso contrario
>> w=(x(:,1)==1 | x(:,2)==1); % si llueve el sábado
%
domingo o ambos, w=1 y w=0 en caso
%
contrario
>> prob = sum(w)/10000; % aprox. 0.75
4. Indicar el código MATLAB para calcular la fiabilidad de un sistema de 5 componentes en
serie cuya probabilidad de fallo es de 0.05 para cada uno de ellos y donde se supone que los
fallos se producen de forma independiente entre sı́. Compararla con la fiabilidad teórica.
Sea p = 1 − 0,05 la “probabilidad de que cada componente no falle”, la probabilidad
teórica es p5 = 0,7738.
% mediante simulación:
>> u=rand(1000,5);
>> x=(u<=p);
>> w=(x(:,1)==1 & x(:,2)==1 & x(:,3)==1 & x(:,4)==1 & x(:,5)==1);
>> prob=sum(w)/1000; % aprox. 0.7738
5. La empresa “Aikon” tiene una planta de fabricación de teléfonos móviles. Se sabe que el 30 %
de los teléfonos fabricados en dicha planta son defectuosos. Si un teléfono es defectuoso, la
probabilidad de que un robot del Departamento de Calidad de la empresa lo detecte es 0, 9
y si no es defectuoso, la probabilidad de que el robot lo considere defectuoso y lo saque de
producción es de 0, 2. Si un cliente compra dos teléfonos que no han sido sacados de la cadena
de producción, ¿cuál es la probabilidad de que sean ambos no defectuosos?
Ing. de Telecomunicacion - Estadistica (2009-2010), PRACTICA 2. PROBABILIDAD Y V.A’s
2
La solución teórica es la siguiente: Sean los sucesos A = “ser defectuoso”, Ā = “no
ser defectuoso”, R = “el robot dice que es defectuoso”, y R̄ = “el robot dice que no es
defectuoso”. Los datos del problema nos dice que:
P (A) = 0,3, P (R|A) = 0,9 y que P (R|Ā) = 0,2, por lo que P (Ā) = 1 − P (A) = 0,7,
P (R̄|A) = 0,1 y P (R̄|Ā) = 0,8. Se tiene por tanto que la probabilidad de que un teléfono
que no haya sido sacado de la cadena de producción sea no defectuoso es:
P (Ā|R̄) =
P (R̄|Ā)P (Ā)
P (R̄|Ā)P (Ā)
=
= 0,949
P (R̄)
P (R̄|Ā)P (Ā) + P (R̄|A)P (A)
Y por tanto, que dos lo sean es 0, 949 × 0, 949 = 0, 9006.
En MATLAB, podemos calcular la probabilidad, sin necesidad de aplicar el teorema
de Bayes. Mediante simulación y a partir de las probabilidades dadas en el problema:
1. Simulamos la fabricación de n móviles (por ej: n = 10000). Sabiendo que el 30 %
son defectuosos (el 70 % no son defectuosos).
>> n=10000;
>> n_def=0.3*n;
% no de defectuosos
>> n_no_def=0.7*n; % no de no defectuosos
2. Crearemos el vector M, formado por los vectores DEF, y NDEF, que toma valor 1 si el
móvil fabricado es defectuoso y 0 si no lo es.
>> DEF = repmat(1,n_def,1) ;
>> NDEF = repmat(0,n_no_def,1) ;
>> M = [DEF ; NDEF];
3. Generamos números aleatorios mediante el comando rand, de tamaño n_def y
n_no_def.
>> u_def=rand(n_def,1);
>> u_no_def=rand(n_no_def,1);
4. Mediante la condición booleana, y con las probabilidades P (R|A) = 0,9 y P (R|Ā) =
0,2, generamos un vector R, que indica que el Robot detecta que el móvil es defectouso y en efecto lo es (1) y toma valor 0 si lo detecta cuando no lo es.
>> R_DEF = 1*(u_def<=0.9) + 0*(u_def>0.9);
>> R_NDEF = 1*(u_no_def<=0.2) + 0*(u_no_def>0.2);
>> R =[ R_DEF ; R_NDEF ];
Ing. de Telecomunicacion - Estadistica (2009-2010), PRACTICA 2. PROBABILIDAD Y V.A’s
3
5. Finalmente creamos un matriz datos, que contiene en la primera columna el vector
M y en la segunda el vector R. Por tanto la probabilidad P (Ā|R̄), se puede aproximar
contando las veces que R=0 y M=1, para ello utilizamos en comando find.
>> datos = [ M R ];
>> AIKON = datos(find(datos(:,2)==0));
% finalmente con tabulate
>> tabulate(AIKON)
Value
0
1
Count
5631
309
Percent
94.80%
5.20%
Obtenemos P (Ā|R̄) ≈ 0, 949, en nuestro caso hemos obtenido 0.9480.
Ing. de Telecomunicacion - Estadistica (2009-2010), PRACTICA 2. PROBABILIDAD Y V.A’s
4
2.
Variables aleatorias
2.1.
Funciones preliminares útiles
La siguienta tabla resume algunas de las funciones más importantes para la generación de
números aleatorios en MATLAB/Octave:
Función
Descripción
Sintaxis
rand
unifrnd
unidrnd
n. aleatorios ∈ [0, 1]
n. aleatorios ∈ [a, b]
n. aleatorios discretos ∈ {1, 2, ..., N }
rand(m,n)
unifrnd(a,b,m,n)
unidrnd(N,m,n)
donde m y n, son respectivamente en nÂo de filas y columnas a generar.
Ejemplos:
1. Genera 100 datos de la distribución uniforme contı́nua U(0, 1).
>> x=rand(100,1)
%
ó 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 unif. discreta entre 1 y 6
% otra manera:
>> u=rand(6,1)
>> x=floor(6*u+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)
2.2.
Generación de variables aleatorias
1. Supongamos el experimento del lanzamiento de dos monedas. Sea X, la variable aleatoria
“número de cruces”. Determina con MATLAB/Octave la función de probabilidad de X.
Ing. de Telecomunicacion - Estadistica (2009-2010), PRACTICA 2. PROBABILIDAD Y V.A’s
5
>> n=10000;
>> u1=rand(n,1);
>> u2=rand(n,1);
>> m1=1*(u1<=1/2)+0*(u1>1/2);
>> m2=1*(u2<=1/2)+0*(u2>1/2);
>> x=m1+m2;
% generamos los n lanzamientos de las
% monedas 1 y 2, con probabilidad
% 1/2 de cruz (=1) y de cara (=0)
% x es la suma de las cruces de ambas monedas
>> tabulate(x) % con tabulate, obtenemos la tabla de frecuencias
% absoluta y relativa
Value
0
1
2
Count
2483
5006
2511
Percent
24.83%
50.06%
25.11%
De este modo hemos aproximado la función de probabilidad teórica:
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
40
30
X
p(x)
0
1
2
1/4
1/2
1/4
20
10
0
1
2
3
2. Dada la variable aleatoria X, del ejercicio anterior, comprueba los valores teóricos E[X] y
Var[X].
Ing. de Telecomunicacion - Estadistica (2009-2010), PRACTICA 2. PROBABILIDAD Y V.A’s
6
La esperanza de X es:
µ = E[X] =
n
X
xi × P (X = xi ) = 0 ×
i=1
1
1
1
+1 +2× =1
2
4
2
Y la varianza:
σ 2 = Var[X] =
n
X
(xi − µ)2 P (X = xi )
i=1
2
= (0 − 1) ×
1
1
1
+ ... + (2 − 1)2 × =
2
2
2
Recuerda:
Var[X] = E[X 2 ] − (E[X])2
En MATLAB podemos comprobar que:
>> mean(x)
>> var(x)
% es aproximadamente 1
% es aproximadamente 0.5
3. El método de la inversa1 de la función de distribución, FX (x), afirma que “si una variable
aleatoria X tiene una función de distribución FX (x) que admite inversa, entonces se verifica
que la variable transformada U = FX (X) sigue siempre una distribución uniforme continua
U”.
Este resultado se aplica en la vida real considerando la igualdad u = FX (x) y despejando x
en función de u, que vendrá dado por x = FX−1 (u), con lo que si se genera u ∼ U(0, 1) se tiene
que x = FX−1 (u) sigue la distribución de X.
Para generar u ∼ U con MATLAB/Octave podemos utilizar rand ó unifrnd.
a) Sea X una variable aleatoria con función de distribución FX (x), dada por:
0
x<0
FX (x) =
1 − e−2x
0≤x
?Cómo simuları́as valores de la v.a. X?
b) Comprueba con MATLAB/Octave los valores de E[X] y de Var[X].
1
Para más detalles: link
Ing. de Telecomunicacion - Estadistica (2009-2010), PRACTICA 2. PROBABILIDAD Y V.A’s
7
a) Por el método de la inversa tenemos que considerando la igualdad u = FX (x), tenemos
que para 0 ≤ x, se verifica que:
1 − e−2x = u
1 − u = e−2x
1
− log(1 − u) = x
2
Con lo que si generamos u ∼ U(0, 1), obtendremos que x ∼ f (x). El pseudocódigo serı́a:
1:
2:
3:
4:
Fijar n = 100
Generar n datos u ∼ U(0, 1)
Aplicar transformación inversa (x = − 21 log(1 − u))
Tenemos que x ∼ f (x)
45
40
35
En MATLAB, sobre el Command Window:
30
>>
>>
>>
>>
n=100000;
u=rand(n,1);
x = (-1/2)*log(1-u);
hist(x)
25
20
15
10
5
0
0
0.5
1
1.5
2
2.5
NOTA: El método 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
parámetro λ = 2.
b) Dada la función de distribución de X, FX (x), podemos obtener la función de densidad
f (x), sabiendo que
dFX (x)
f (x) =
dx
y por tanto:
−2x
2e
x≥0
f (x) =
0
en otro caso
Z
µ = E[X] =
∞
xf (x)dx =
−∞
Z ∞
1
2
1 2
1
f (x)dx =
σ = Var[X] =
(x − µ) f (x)dx =
x−
2
4
−∞
−∞
2
2
Z
∞
Ing. de Telecomunicacion - Estadistica (2009-2010), PRACTICA 2. PROBABILIDAD Y V.A’s
8
>> mean(x)
>> var(x)
% es aprox. 0.5
% es aprox. 0.25
NOTA: como se indicó en el apartado anterior, X ∼ Exp(λ = 2), donde E[X] = 1/λ
y Var[X] = 1/λ2 .
Ejemplos:
4. Sea X una variable aleatoria Rayleigh de parámetro α cuya función de densidad f (x) viene
dada por
αx exp − α2 x2 x > 0
f (x) =
0
resto
con media y varianza dadas por
r
µ = E [X] =
π
2α
σ 2 = V [X] =
4−π
2α
a) ¿Cuál serı́a el código para generar 50 valores X con α = 0, 17?
b) ¿Qué procedimientos numéricos se podrı́a usar para ver que se ha generado de forma
correcta la v.a. X en el apartado anterior?
a) La forma de generar X es a través del método de la función inversa de la función de
distribución. Para ello en primer lugar hay que calcular la función de distribución.
Rx
x≤0
−∞
0dt R=x0
F (x) = R x
α 2
α 2
αt
exp
−
αt
exp
−
t
dt
=
t
dt
x
>0
2
2
−∞
0
con lo que
F (x) =
α
−2 1
α 2
exp − α2 t2
t
0
0
= − exp − α2 x2 − 1 = 1 − exp − α2 x2
x≤0
x>0
que cumple las cuatro propiedades para ser función de distribución (F (−∞) =
0, F (+∞) = 1, monótona no decreciente y continua por la derecha).
Ing. de Telecomunicacion - Estadistica (2009-2010), PRACTICA 2. PROBABILIDAD Y V.A’s
9
En segundo lugar se utiliza el resultado teórico de que Y = F (X) sigue, siempre que F
admita inversa, una U (0, 1). A efectos prácticos este resultado se utiliza generando una
u según una U (0, 1) igualando a F (x) y despejando x en función de u. Dado que u > 0
se invierte F según la expresión:
α 1 − exp − x2 = u
2
α 1 − u = exp − x2
2
−2
x2 =
Ln (1 − u)
α
r
−2
Ln (1 − u)
x=±
α
De la expresión anterior se toma la raı́z positiva para que x > 0 que es donde se ha
invertido F . El pseudocódigo serı́a:
- Generar u según una
q U (0, 1) .
- 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));
b) Podemos comprobar que la media observada y la desviación tı́pica obervada para los x
generados son parecidos a los valores teóricos:
>> media_teorica = sqrt(pi/(2*alpha));
>> media_teorica =
3.0397
>> var_teorica = (4-pi)/(2*alpha);
>> var_teorica =
2.5247
>> mean(x)
>> var(x)
% aprox. 3.0397
% aprox. 2.5247
5. Decir si es verdadera o falsa la siguiente afirmación. En caso de que sea verdadera demostrarlo
y en caso de que sea falsa dar un contraejemplo o su valor correcto:
El código en MATLAB/Octave para generar 100 valores de una v.a “Gompertz generalizada”
con función de distribución
1 − exp (− exp (x)) 0 < x
F (x) =
0
resto
Ing. de Telecomunicacion - Estadistica (2009-2010), PRACTICA 2. PROBABILIDAD Y V.A’s
10
es
>> x=rand(100,1);
>> g=-log(1-x); % log es logaritmo neperiano
X Es falsa. Para generar una v.a. continua cuya función de distribución 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 código en MATLAB serı́a:
>> u=rand(1000,1);
>> x=log(-log(1-u));
2.3.
Ejercicios propuestos: Probabilidad
1. Indicar el código MATLAB para resolver el problema Ex. JUN 2005 ITTel, C2a (link).
NOTA: Utilizar a modo de ejemplo que p=0.8 y recordar que la probabilidad teórica resuelta
en dicho ejercicio es:
2p2 − p3
2. Indicar el código MATLAB para resolver el problema Ex. JUN 2007 ITTel, C1a (link).
Recordar: Ejercicio AIKON.
2.4.
1.
Ejercicios propuestos: Variables aleatorias
a) Indicar el código MATLAB para resolver el problema Ex. JUN 2007 ITTel, C1b
(link).
b) En el apartado a), comprueba gráficamente mediante un diagrama de barras, que la
generación de X1 y X2 es correcta. PISTA: Recordar Ejercicio 2.2.1 de esta práctica.
2. Utiliza el método de la transformación inversa de la función de distribución para generar una
variable aleatoria continua cuya función de densidad sea
0
resto
f (x) =
1
0<x<6
18 x
a) Aplica el procedimiento del método de la transformación inversa para este caso. PISTA:
Determina en primer lugar la función de distribución FX (x).
Ing. de Telecomunicacion - Estadistica (2009-2010), PRACTICA 2. PROBABILIDAD Y V.A’s
11
b) Escribe el PSEUDOCÓDIGO para generar números aleatorios de la variable aleatoria
X.
c) Escribe el código MATLAB que genera las variables aleatorias de X mediante el método
de la transformación inversa.
Ing. de Telecomunicacion - Estadistica (2009-2010), PRACTICA 2. PROBABILIDAD Y V.A’s
12
Descargar