GRADO de TELECOMUNICACIONES
ESTADISTICA 2009-2010
PRACTICA 3. MODELOS DE PROBABILIDAD
OBJETIVOS: Introducci´on a modelos de probabilidad discretos y cont´ınuos m´as comunes.
Caracterizaci´on, representaci´on gr´afica. Resoluci´on mediante simulaci´on con MATLAB/Octave de
ejercicios propuestos.
1.
Introducci´
on
En general, para generar variables aleatorias cont´ınuas utilizaremos el m´etodo de la
trans-formaci´on inversa de la funci´on de distribuci´on (siempre que exista inversa). Para el caso de v.a.’s
discretas utilizaremos una condici´on booleana (Ya visto en la pr´actica anterior). No obstante,
MATLAB/Octave, dispone de funciones propias para generar variables aleatorias de modelos de probabilidad conocidos.
La Tabla 1 resume algunas de las funciones m´as importantes para la generaci´on de n´umeros
aleatorios de modelos de probabilidad para variables cont´ınuas y discretas en MATLAB/Octave:
Funci´on Descripci´on Sintaxis
normrnd no aleatorios N (µ, σ) normrnd(MU,SIGMA,m,n)
randn no aleatorios N (0, 1) randn(m,n)
exprnd no aleatorios Exp(λ) exprnd(1/lambda,m,n)
binornd no aleatorios Bin(n, p) binornd(N,P,m,n)
poissrnd no aleatorios Poiss(λ) poissrnd(lambda,m,n)
Tabla 1: Algunas funciones importantes para la generaci´on de n´umeros aleatorios
donde m y n, son respectivamente en no de filas y columnas a generar.
2.
Caso cont´ınuo
Distribuci´on normal
Recordemos que la distribuci´on Normal tiene como funci´on de densidad:
X ∼ N (µ, σ) : f (x) = 1 σ√2πexp − 1 2σ2(x−µ) 2 , donde x ∈ R, σ > 0 y µ ∈ R.
1. Representa en MATLAB/Octave la funci´on de densidad de una Normal N (µ, σ), para los
La funci´on normdf(x,MU,SIGMA), proporciona la la funci´on de densidad de una Normal(µ,σ), evaluado en los valores de x. En MATLAB/Octave:
% generamos una secuencia
% de 100 no entre -3 y 3 >> x=linspace(-3,3,100); >> mu=0; >> sigma=1; >> y=normpdf(x,mu,sigma); >> plot(x,y) -3 -2 -1 0 1 2 3 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4
2. Representa gr´aficamente la funci´on de densidad de la v.a. normal para distintos valores de
los par´ametros de la distribuci´on:
a) Manteniendo σ y variando µ ⇒ Considera 3 distribuciones Normales con desviaci´on
t´ıpica constante (σ = 1) y con diferentes medias (µ =-1,0 y 1). ¿C´omo afectan los
par´ametros a la forma de la distribuci´on? ¿y a su posici´on en los ejes?
b) Mantiendo µ y variando σ ⇒ Considera 3 distribuciones Normales con media
con-stante (µ = 0) y variando la desviaci´on t´ıpica (σ =0.3,0.5 y 1.2). Analizar c´omo afecta
a la forma de la distribuci´on y c´omo afecta a su posici´on en los ejes.
>> x = linspace(-3,3,100);
% a)
>> y1 = normpdf(x,0,1); % y1 es Normal con media 0 y desv. 1
>> y2 = normpdf(x,-1,1); % y1 es Normal con media -1 y desv. 1
>> y3 = normpdf(x,1,1); % y1 es Normal con media 1 y desv. 1
% b)
>> y4 = normpdf(x, 0, 0.3); % y4 es Normal con media 0 y desv. 0.3
>> y5 = normpdf(x, 0, 0.5); % y5 es Normal con media 0 y desv. 0.5
>> y6 = normpdf(x, 0, 1.2); % y6 es Normal con media 0 y desv. 1.2
Una vez generadas las 6 variables aleatorias normales, vamos a compararlas gr´aficamente
usando la funcionessubplot1;plot yhold on, hold off.
1
mediante la funci´onsubplotpodemos crear varios gr´aficos a la vez. En el ejemplo,subplot(1,2,i), significa que dibujamos en 1 fila y en 2 columnas el gr´afico i = 1 y 2
% GRAFICO CASO a)
>> subplot(1,2,1) % 1 fila, 2 columnas, gr´afico no 1
>> hold on % esta opcion permite superponer gr´aficos
>> plot(x,y1, ‘b’) % gr´afico x/y1 en color azul (‘blue’)
>> plot(x,y2, ‘g’) % gr´afico x/y2 en color verde (‘green’)
>> plot(x,y3, ‘r’) % gr´afico x/y2 en color rojo (‘red’)
>> hold off % deshabilitamos la opci´on para superponer gr´aficos
% GRAFICO CASO b)
>> subplot(1,2,2) % 1 fila, 2 columnas, gr´afico no 2
>> hold on
>> plot(x,y4, ‘b’) >> plot(x,y5, ‘g’) >> plot(x,y6, ‘r’) >> hold off
% Otro modo de hacerlo es: >> subplot(1,2,1) >> plot(x,y1,‘b’,x,y2,‘g’,x,y3,‘r’) >> subplot(1,2,2) >> plot(x,y4,‘b’,x,y5,‘g’,x,y6,‘r’) -5 0 5 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 -3 -2 -1 0 1 2 3 0 0.2 0.4 0.6 0.8 1 1.2 1.4 mu = -1 , sigma = 1 mu = 0 , sigma = 1 mu = 1 , sigma = 1 mu = 0 ,sigma = 0.3 mu = 0 , sigma = 0.5 mu = 0 ,sigma = 1.2
NOTA: Otra manera de representar un gr´afico de una distribuci´on normal (µ = 0 y σ = 2,5)
para x ∈ (−10, 10) ser´ıa:
Con la sentenciadisttoolde MATLAB sobre elCommand Window, podemos ver gr´aficamente la densidad de diferentes distribuciones, seleccionando en Function Type/PDF.
3. Genera en MATLAB/Octave n´umeros aleatorios de la distribuci´on normal.
En MATLAB/Octave es posible generar n´umeros aleatorios de una distribuci´on normal
(µ, σ), a trav´es de funciones propias de la librer´ıa estad´ıstica stats. As´ı, podemos crear
datos normales (n filas y m columnas) de la siguiente manera: >> x= normrnd(MU,SIGMA,m,n);
El comandorandn, permite generar n´umeros aleatorios de una distribuci´on normal est´andar
(es decir, de media µ = 0 y σ = 1). A partir de randn, es posible generar n´umeros aleatorios
∼ N (µ, σ). Del siguiente modo: sea Z ∼ N (0, 1), podemos obtener X ∼ N (µ, σ), dada la
siguiente relaci´on:
X = Z · σ + µ
>> z= randn(m,n); >> x= z*sigma + mu;
Podemos comprobar, que los n´umeros generados son N (µ, σ) representando el histograma:
>> m=1000; n=1; >> sigma=0.75; mu=1;
>> z=randn(m,n); x=z*sigma + mu; >> hist(x) -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 0 50 100 150 200 250 300
4. Funci´on de distribuci´on acumulada. En MATLAB/Octave, el comandonormcdf(x,mu,sigma)
devuelve la probabilidad p = P (X ≤ x) de una distribuci´on normal de par´ametros µ y σ.
Representa la funci´on de distribuci´on acumulada, para los valores de x ∈ [−3, 3], siendo X
>> x = [-3:0.01:3]; >> mu=0; sigma=1;
>> p = normcdf(x,mu,sigma); % p = normcdf(x) proporciona
% la f. distr. acum. de % una N(0,1) % Su inversa es x = norminv(p,mu,sigma) >> plot(x,p) >> grid on -3 -2 -1 0 1 2 3 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
3.
Caso discreto
Distribuci´on binomialLa funci´on de probabilidad p(x) de la distribuci´on binomial Bin(n, p) es:
X ∼ Bin(n, p) : p(x) =n
x
px(1 − p)n−x donde x = 0, 1, ..., n y 0 ≤ p < 1.
Siendo n el n´umero de intentos o de ensayos y el par´ametro p la probabilidad de que el suceso
´
exito ocurra.
1. Crea una funci´on en MATLAB/Octave que permita representar funciones de probabilidad de
una distribuci´on binomial.
%% creamos la funci´on fp_binomial.m
function y=fp_binomial(x,n,p) for i=1:length(x)
y(i)=(nchoosek(n,x(i)))*(p^x(i))*((1-p)^(n-x(i))) ; end
%%
NOTA: la funci´onnchoosek(n,x) permite calcular nx, sin embargo, para un tama˜no de
la funci´on Gamma Γ:
Γ(p) =
Z +∞
0
e−xxp−1dx, donde p > 0
Propiedades de la funci´on Gamma (Γ):
a) Γ(1) = 0! = 1
b) Γ(p) = (p − 1)Γ(p − 1), ∀p > 0 y entonces Γ(p) = (p − 1)!, ∀p ∈ N.
c) nx = Γ(x+1)·Γ(n−x+1)Γ(n+1)
d ) Γ(12) =√π.
2. Crea en MATLAB/Octave que permita representar funciones de probabilidad de una
dis-tribuci´on binomial para tama˜nos de n grandes.
%% creamos la funci´on fp_binomialN.m
%% utilizando la propiedad 3) de la funci´on Gamma
function y = fp_binomialN(x,n,p) for i=1:length(x) y(i)=(gamma(n+1)*(p^x(i))*((1-p)^(n-x(i))))/ (gamma(x(i)+1)*gamma(n-x(i)+1)); end %%
3. Utilizando la funci´on creada anteriormente, representa gr´aficamente la funci´on de probabilidad
de una variable aleatoria binomial, para los siguientes casos:
a) Dejando constante p y variando n ⇒ creamos 3 distribuciones binomiales: Bin(5,0.2), Bin(10,0.2), Bin(20,0.2)
b) Dejar n constante y variar p ⇒ creamos otras 3 distribuciones binomiales: Bin(100,0.1), Bin(100,0.5), Bin(100,0.8)
% Caso a):
>> x5=0:5 % creamos una secuencia de 0 a 5
>> y5=fp_binomial(x5,5,0.2) % llamamos a la funci´on fp_binomial.m
>> sum(y5) % comprobamos que la suma de las probabilidades es 1 >> x10=0:10;
>> y10=fp_binomial(x10,10,0.2); >> x20=0:20;
% Caso b):
>> x100 = 0:100;
>> y1 = fp_binomialN(x100, 100, 0.1); % llamamos a la funci´on
>> y2 = fp_binomialN(x100, 100, 0.5); % fp_binomialN.m
>> y3 = fp_binomialN(x100, 100, 0.8);
Podemos comparar ambos gr´aficos, como vimos en el caso de la distribuci´on Normal.
>> subplot(1,2,1)
>> plot(x5,y5,‘.’, x10,y10, ‘+’, x20, y20, ‘*’); >> legend(‘n=5, p=0.2’, ‘n=10, p=0.2’, ‘n=20, p=0.2’) >> subplot(1,2,2)
>> plot(x100, y1, ‘.’, x100, y2, ‘+’, x100, y3, ‘*’);
>> legend(‘n = 100, p = 0.1’, ‘n = 100, p = 0.5’, ‘n = 100, p = 0.8’); 0 5 10 15 20 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 n=5, p=0.2 n=10, p=0.2 n=20, p=0.2 0 20 40 60 80 100 0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 n = 100 , p = 0.1 n = 100 , p = 0.5 n = 100 , p = 0.8
NOTA: Tambi´en es posible utilizar el comando binopdf(x,N,P) para representar la
fun-ci´on de probabilidad de una binomial (n, p)
4. Sabiendo que la distribuci´on Bin(n, p) es la suma de n variables aleatorias Bernouilli
inde-pendientes:
Binom(n, p) = Bern(p) + ... + Bern(p)
| {z }
n veces
Crea una funci´on en MATLAB/Octave para generar n´umeros aleatorios de la distribuci´on
%% creamos la funci´on na_binomial.m
function y= na_binomial(n_dat, n, p) % ‘n_dat’ es el
% no de datos binomiales % que se van a generar
prob = rand(n,n_dat); % realizamos ‘n’ experimentos
exitos = prob < p; % si se cumple, entonces se ha producido un exito y =sum(exitos); % sumamos todos los exitos producidos
%%
En el Command Window:
% Obtenemos 10 n´umeros binomiales obtenidos de sumar el no
% de ´exitos de n intentos con una probabilidad de ´exito p
>> y = na_binomial(10,n,p)
Num´ericamente, podemos verificar las propiedades de la media y la varianza de la
distribu-ci´on binomial: E[X] = n × p Var[X] = n × p × q >> n=100; p=0.1; >> y = na_binomial(10,n,p) >> mean(y) % aprox. 10 >> var(y) % aprox. 9
3.1. Generaci´on de variables aleatorias
Como se indic´o en la pr´actica anterior, el m´etodo de la inversa nos permite generar variables
Caso Weibull: Sea X una variable aleatoria Weibull2, X ∼ Weibull(α, β), con funci´on de distribuci´on: FX(x) = 0 x > 0 1 − e−(x/β)α 0 ≤ x
donde α y β son par´ametros dados. Indica c´omo generar´ıas en MATLAB/Octave variables
aleatorias Weibull.
X Mediante el m´etodo de la inversa, tenemos que considerando u = FX(x),
1 − e(x/β)α = u e(x/β)α = 1 − u (x/β)α= − ln(1 − u) x/β = [− ln(1 − u)]α1 x = β[− ln(1 − u)]α1 Por tanto: >> u = rand(n,1); >> x = beta*(-log(1-u))^(1/alpha);
4.
Funci´
on Q
La funci´on Q se define como la complementaria a la funci´on de distribuci´on de la N (0, 1), es
decir como
Q(x) = P (X > x) siendo X ∼ N (0, 1)
Supongamos una funci´on Q tiene por cotas superiores (cs1) y (cs2) y cota inferior (ci) dadas por
Q(x) ≤ 1 2e −x2 2 para todo x ≥ 0 (cs1) Q(x) < √1 2πxe −x2 2 para todo x > 0 (cs2) Q(x) > √1 2πx 1 − 1 x2 e−x22 para todo x > 1 (ci) 2
NOTA: Esta distribuci´on se aplica en los an´alisis de fiabilidad de sistemas, para establecer, por ejemplo el tiempo de vida de un componente hasta que se produce un fallo.
a) La funci´on de MATLAB normcdf(x,MU,SIGMA) devuelve la funci´on de distribuci´on
acumu-lada de una N (µ, σ). ¿C´omo representar´ıas en MATLAB la funci´on Q?
>> Q = 1 - normcdf(x,0,1)
b) Escribe el c´odigo en MATLAB para representar gr´aficamente la funci´on Q en el intervalo
(0, 5] junto con las cotas superiorescs1ycs2y la cota inferiorci. El resultado que se ha de
obtener ser´a similar al de la figura1.
NOTA:
Representa x ∈ (0, 5] comox=[0.01:0.01:5].
Para la cota inferior ci, observa que existe una as´ıntota vertical en x = 1, por tanto,
definexi=[1.01:0.01:5] tan s´olo para esta cota.
Utiliza una escala logar´ıtmica para representar gr´aficamente las cotas.
>>x1= [1.01:0.01:5]; >>for i=1:length(x1)
ci(i) = (1/x1(i)*sqrt(2*pi))*(1- (1/x1(i)^2))*exp(-0.5*x1(i)^2); end >>x = [0.01:0.01:5]; >>for i=1:length(x) cs1(i)=0.5*exp(-0.5*x(i)^2); cs2(i)=(1/(x(i)*sqrt(2*pi))) * exp(-0.5*x(i)^2); end >>q = 1- normcdf(x,0,1); >> plot(x, log(q), ‘black’) >> hold on
>> plot(x, log(cs1), ‘r’) >> plot(x, log(cs2), ‘g’) >> plot(x1, log(ci), ‘m’) >> hold off
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 -20 -15 -10 -5 0 5 10 log(q) log(cs1) log(cs2) log(ci)
Figura 1: Representaci´on gr´afica de la funci´on Q con las cotas en escala logar´ıtmica log(cs1),
log(cs2) y log(ci). La l´ınea vertical representa la as´ıntota en x = 1.
5.
Ejercicios de inter´
es
1. Sea X la v.a. “horas que se dedica a realizar una actividad”, cuya funci´on de densidad es
f (x) =
1
4(x + 1) 0 < x < 2
0 resto
Se pide:
a) Calcular, de forma anal´ıtica y con MATLAB/Octave, la probabilidad de que el tiempo empleado sea superior a una hora y media.
b) Si se realizan 10 actividades seg´un la v.a. X, calcular, de forma anal´ıtica y con
MAT-LAB/Octave, la probabilidad de que exactamente en tres de ellas, el tiempo que se emplee en realizar cada una sea superior a una hora y media.
a) De forma anal´ıtica, se tiene que: P (X > 1,5) = Z +∞ x=1,5 f (x) dx = Z 2 x=1,5 1 4(x + 1) dx = 1 4 1 2x 22 1,5+ 1 4[x] 2 1,5 = 1 8 4 −9 4 +1 4 2 −3 2 = 7 32 + 1 8 = 11 32 = 0,3438
Para resolverlo con MATLAB/Octave, hay que utilizar el m´etodo de la inversa, con lo
que hay que calcular previamente la funci´on de distribuci´on, que es
F (x) = 0 x < 0 Rx 0 1 4(y + 1) dy = 1 8x 2+1 4x 0 ≤ x < 2 1 2 ≤ x
Y ahora hay que invertir la funci´on de distribuci´on:
1 8x 2+ 1 4x = u x2+ 2x − 8u = 0 x = −2 ± √ 4 + 32u 2
Dada la definici´on de la v.a. X la soluci´on negativa no es v´alida, con lo que el
proced-imiento para generarla es:
u ∼ U (0, 1)
x = −2 +
√
4 + 32u 2
El c´odigo MATLAB/Octave para resolver este apartado es:
>> u=rand(1000,1);
>> x=(-2+sqrt(4+32*u))/2; >> prob=sum(x>1.5)/1000
0.33800
b) De forma anal´ıtica, si se define Y como la v.a. “n´umero de actividades entre las 10
realizadas en las que el tiempo que se emplea es superior a una hora y media”, se tiene
que Y ∼ Bin n = 10, p = 1132 hay que calcular
P (Y = 3) =10 3 11 32 3 21 32 7 = 0, 2555
El c´odigo MATLAB/Octave para resolver este apartado es: >> u=rand(1000,10); >> x=(-2+sqrt(4+32*u))/2; >> conta=(x>1.5); >> suma=sum(conta,2); >> prob=sum(suma==3)/1000 0.24500
4. Ex. FEB 2004 Ing. Tel. (C1a) (link). El objetivo de este problema es analizar un canal de
comunicaciones. Cuando el canal transmite un 1, el receptor recibe una variable aleatoria que
sigue una distribuci´on Normal de media 1 y varianza 0, 5. Si el canal binario transmite un
2, el receptor recibe una variable aleatoria Normal con media 2 y varianza 0, 5. Sea P (1) la probabilidad de transmitir un 1.
a) Si P (1) = 0, 75. ¿Cu´al es la probabilidad de que un 1 haya sido transmitido cuando el
receptor ha recibido una se˜nal superior a 2?
T1 = “transmitir un 1”, P (T1) = 0,75 , R|T1 ∼ N (1, 0,5) T2 = “transmitir un 2”, P (T2) = 0,25 , R|T2 ∼ N (2, 0,5) P (T1|R > 2) = P (R > 2|T1)P (T1) P (R > 2) = = P (R > 2|T1)P (T1) P (R > 2|T1)P (T1) + P (R > 2|T2)P (T2) Sean Z1 = R|T√0,51−1 y Z2 = R|T√0,52−2, P (T1|R > 2) = P (Z1> 1,41) × 0,75 P (Z1 > 1,41) × 0,75 + P (Z2 > 0) × 0,25 = 0,0793 × 0,75 0,0793 × 0,75 + 0,5 × 0,25 = 0,3224
En MATLAB/Octave, podemos aproximar la probabilidad mediante: >> n=10000;
>> u=rand(n,1); % simulamos n experimientos aleatorios
>> p=0.75; % es la probabilidad de transmitir un 1
% transmision del mensaje por el canal >> t=1*(u<=p)+2*(u>p);
% Simulamos z1 y z2 con la funci´on normrnd(MU,SIGMA,n,1)
>> z1 = normrnd(1,sqrt(0.5),n,1); >> z2 = normrnd(2,sqrt(0.5),n,1)
% recepci´on del mensaje
>> r=(t==1).*z1+(t==2).*z2; >> r=2*(r>2)+1*(r<=2);
% creamos una tabla de doble entrada transmitidos/recibidos
% (SOLO EN MATLAB)
>> a=crosstab(t,r) >> a =
6894 599 % a(1,1) a(1,2)
1258 1249 % a(2,1) a(2,2)
% nos piden la probabilidad P(t==1|r>2), en la simulaci´on
>> a(1,2)/(a(1,2)+a(2,2)) 0.3241
Otra manera de hacerlo, sin utilizar crosstab, ser´ıa
% en la matriz A, ponemos en columnas transmitidos y recibidos
>> A = [t r]
% cu´antas veces se cumple la condici´on
>> a12 = sum(A(:,1)==1 & A(:,2)==2) 610
% cu´antas veces se cumple la condici´on
>> a22 = sum(A(:,2)==1 & A(:,2)==2) 1276
>> a12/(a12+a22)
5. Ex. SEP 2007 Ing. T´ec. Tel. (P2b).(link). La duraci´on en d´ıas de un tipo de sensores sigue un modelo Weibull con
F (t) = 1 − exp − t α 1/2! f (t) = 1/2 α1/2t −1/2exp − t α 1/2! con α > 0.
a) Se supone que se tiene una caja de 60 sensores sin usar cuya duraci´on siguen el modelo
Weibull con α = 14 d´ıas que verifica que E [T ] = 12 d´ıas y V [T ] = 54 d´ıas2. Si se
comienza con un sensor de dicha caja y se va reemplazando instant´aneamente seg´un se
vaya fundiendo con un sensor de la misma caja, ¿cu´al es la probabilidad de que cuando
haya fallado el ´ultimo sensor de la caja hayan pasado menos de 47 d´ıas?
Utilizar alguno de los siguientes valores de la funci´on
x 1,64 −1,64 1,96 −1,96 47 −47
Q (x) 0,05 0,95 0,025 0,975 ' 0 ' 1
b) Comentar l´ınea a l´ınea el siguiente c´odigo de MATLAB y decir el valor aproximado que
tomar´a prob.
>> u=rand(60,1000);
>> w=0.25*(-log(1-u)).^(1/0.5); >> s=sum(w);
>> prob=sum(s<47)/1000
a) Si se define la v.a. Ti como el tiempo hasta que falla el sensor i, se tiene que se pide
P 60 X i=1 Ti ≤ 47 !
Como las Ti verifican las condiciones del teorema central del l´ımite, se tiene que
60 X i=1 Ti∼ N 60 1 2, r 605 4 ! Si se estandariza P 60 X i=1 Ti ≤ 47 ! = P P60 i=1Ti− 6012 q 6054 < 47 − 60 1 2 q 6054 P Z < 47 − 30 8, 66 = P (Z < 1, 96) = 1 − Q (1, 96) = 1 − 0, 025 = 0, 9750
b) En primer lugar hay que saber generar un modelo Weibull. Para ello se aplica el
m´etodo de la inversa de la funci´on de distribuci´on. Por lo que
F (t) = 1 − exp − t α β! = u ln (1 − u) = − t α β t = α [−Ln (1 − u)]1/β
La primera l´ınea genera una matriz de dimensiones 60 × 1000 con n´umeros U (0, 1).
La segunda l´ınea genera una matriz de dimensiones 60 × 1000 con n´umeros Weibull con
α = 14 d´ıas, (se est´a generando los tiempos en los que van fallando los sensores). La tercera
l´ınea suma la duraci´on total de los 60 sensores. La cuarta l´ınea mira cu´antas veces de las
1000, la duraci´on total de los sensores es menor que 47. Eso lo hace con la ayuda de la
variable booleana (s < 47).
Por tanto, este c´odigo est´a contestando a la misma pregunta que el apartado a). El