Академический Документы
Профессиональный Документы
Культура Документы
ESTADISTICA
2009-2010
PRACTICA 3. MODELOS DE PROBABILIDAD
OBJETIVOS: Introducci
on a modelos de probabilidad discretos y contnuos mas comunes.
Caracterizaci
on, representaci
on gr
afica. Resolucion mediante simulacion con MATLAB/Octave de
ejercicios propuestos.
1.
Introducci
on
En general, para generar variables aleatorias contnuas utilizaremos el metodo de la transformacion inversa de la funci
on de distribucion (siempre que exista inversa). Para el caso de v.a.s
discretas utilizaremos una condici
on booleana. No obstante, MATLAB/Octave, dispone de funciones propias para generar variables aleatorias de modelos de probabilidad conocidos.
La siguienta tabla resume algunas de las funciones mas importantes para la generaci
on de
n
umeros aleatorios de modelos de probabilidad para variables contnuas y discretas en MATLAB/Octave:
Funci
on
normrnd
randn
exprnd
binornd
poissrnd
Descripci
on
Sintaxis
aleatorios N (, )
aleatorios N (0, 1)
no aleatorios Exp()
no aleatorios Bin(n, p)
no aleatorios Poiss()
normrnd(MU,SIGMA,m,n)
randn(m,n)
exprnd(1/lambda,m,n)
binornd(N,P,m,n)
poissrnd(lambda,m,n)
no
no
2.
Caso contnuo
Distribuci
on normal
Recordemos que la distribuci
on Normal tiene como funcion de densidad:
X N (, ) :
1
2
1
f (x) = exp 22 (x) , donde x R,
2
>0
y R.
%% creamos la funci
on fd_normal.m
function y = fd_normal(x, mu, sigma)
for i=1:length(x)
y(i) = exp(-0.5*((x(i)-mu)/sigma)^2) / (sigma*sqrt(2*pi));
end
%%
2. Utilizando la funci
on creada en el apartado anterior, representa graficamente la funci
on de
densidad de la v.a. normal para distintos valores de los parametros de la distribucion:
a) Manteniendo y variando Considera 3 distribuciones Normales con desviaci
on
tpica constante ( = 1) y con diferentes medias ( =-1,0,1). Como afectan los par
ametros a la forma de la distribucion? y a su posicion en los ejes?
b) Mantiendo y variando Considera 3 distribuciones Normales con media constante ( = 0) y variando la desviacion tpica ( =0.3,0.5,1.2). Analizar como afecta a
la forma de la distribuci
on y como afecta a su posicion en los ejes.
% a)
>> x
>> y1
>> y2
>> y3
=
=
=
=
-5:0.01:5;
fd_normal(x,-1,1); % y1 es Normal con media -1 y desv. 1
fd_normal(x, 0,1); % y2 es Normal con media 0 y desv. 1
fd_normal(x, 1,1); % y2 es Normal con media +1 y desv. 1
% b)
>> y4 = fd_normal(x, 0, 0.3); % y4 es Normal con media
>> y5 = fd_normal(x, 0, 0.5); % y5 es Normal con media
>> y6 = fd_normal(x, 0, 1.2); % y6 es Normal con media
0 y desv. 0.3
0 y desv. 0.5
0 y desv. 1.2
Una vez generadas las 6 variables aleatorias normales, vamos a compararlas graficamente
usando la funciones subplot1 ; plot y hold on, hold off.
1
mediante la funci
on subplot podemos 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
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)
0.4
1.4
mu = -1 , sigma = 1
mu = 0 ,sigma = 0.3
mu = 0 , sigma = 1
mu = 0 , sigma = 0.5
mu = 1 , sigma = 1
0.35
mu = 0 ,sigma = 1.2
1.2
0.3
1
0.25
0.8
0.2
0.6
0.15
0.4
0.1
0.2
0.05
0
-5
0
-3
-2
-1
Con la sentencia disttool de MATLAB sobre el Command Window, podemos ver graficamente
250
>>
>>
>>
>>
m=1000; n=1;
sigma=0.75; mu=1;
z=randn(m,n); x=z*sigma + mu;
hist(x)
200
150
100
50
0
-1.5
-1
-0.5
0.5
1.5
2.5
3.5
4. Funcion de distribuci
on acumulada. En MATLAB/Octave, el comando normcdf(x,mu,sigma)
devuelve la probabilidad p = P (X x) de una distribucion normal de parametros y .
Representa la funci
on de distribucion acumulada, para los valores de x [3, 3], siendo X
una normal est
andar.
>> 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)
1
0.9
0.8
0.7
>> plot(x,p)
>> grid on
0.6
0.5
0.4
0.3
0.2
0.1
0
-3
3.
-2
-1
Caso discreto
Distribuci
on binomial
La funci
on de probabilidad p(x) de la distribucion binomial Bin(n, p) es:
n x
p (1 p)nx donde x = 0, 1, ..., n y 0 p < 1.
X Bin(n, p) : p(x) =
x
Siendo n el n
umero de intentos o de ensayos y el parametro 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
on nchoosek(n,x) permite calcular nx , sin embargo, para un tama
no de
n grande, el resultado puede no ser exacto. Por ello, para un tama
no n grande, emplearemos
la funci
on Gamma :
Z
(p) =
ex xp1 dx,
donde p > 0
Propiedades de la funci
on Gamma ():
a) (1) = 0! = 1
b) (p) = (p 1)(p 1),
(n+1)
c) nx = (x+1)(nx+1)
d ) ( 12 ) = .
3. Utilizando la funci
on creada anteriormente, representa graficamente la funcion 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;
>> y20=fp_binomial(x20,20,0.2);
% 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);
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.45
0.14
n=5, p=0.2
n = 100 , p = 0.1
n=10, p=0.2
n = 100 , p = 0.5
n=20, p=0.2
0.4
n = 100 , p = 0.8
0.12
0.35
0.1
0.3
0.08
0.25
0.2
0.06
0.15
0.04
0.1
0.02
0.05
10
15
20
20
40
60
80
100
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
binomial.
%% creamos la funci
on na_binomial.m
function y= na_binomial(n_dat, n, p)
% n_dat es el
% no de datos binomiales
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)
3.1.
% aprox. 10
% aprox. 9
Generaci
on de variables aleatorias
Como se indic
o en la pr
actica anterior, el m
etodo de la inversa nos permite generar variables
aleatorias contnuas a partir de la funcion de distribucion siempre que esta admita inversa.
Caso Weibull: Sea X una variable aleatoria Weibull2 , X Weibull(, ), con funci
on de
distribuci
on:
0
x>0
FX (x) =
(x/)
1e
0x
donde y son par
ametros dados. Indica como generaras en MATLAB/Octave variables
aleatorias Weibull.
X Mediante el metodo de la inversa, tenemos que considerando u = FX (x),
1 e(x/) = u
e(x/) = 1 u
(x/) = ln(1 u)
1
x/ = [ ln(1 u)]
1
x = [ ln(1 u)]
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 funcion de distribucion 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
1 x2
Q(x) e 2
para todo x 0
2
x2
1
Q(x) <
e 2
para todo x > 0
2x
x2
1
1
Q(x) >
1 2 e 2
para todo x > 1
x
2x
(cs1)
(cs2)
(ci)
a) La funci
on de MATLAB normcdf(x,MU,SIGMA) devuelve la funcion de distribucion acumulada de una N (, ). C
omo representaras en MATLAB la funcion Q?
>> Q = 1 - normcdf(x,0,1)
b) Escribe el c
odigo en MATLAB para representar graficamente la funcion Q en el intervalo
(0, 5] junto con las cotas superiores cs1 y cs2 y la cota inferior ci. El resultado que se ha de
obtener ser
a similar al de la figura 1.
NOTA:
Representa x (0, 5] como x=[0.01:0.01:5].
Para la cota inferior ci, observa que existe una asntota vertical en x = 1, por tanto,
define xi=[1.01:0.01:5] tan solo para esta cota.
Utiliza una escala logartmica para representar graficamente 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);
>>
>>
>>
>>
>>
>>
10
10
log(q)
log(cs1)
log(cs2)
log(ci)
-5
-10
-15
-20
0.5
1.5
2.5
3.5
4.5
Figura 1: Representaci
on gr
afica de la funcion Q con las cotas en escala logartmica log(cs1),
log(cs2) y log(ci). La lnea vertical representa la asntota en x = 1.
5.
Ejercicios de inter
es
1. Si se sabe que una v.a Y del tipo Cauchy se puede obtener como Y = tg (X) con X una
U 2 , 2 , c
omo se puede aprovechar esta informacion para generar una Cauchy?
Si se sabe dicha informaci
on no hace falta recurrir al metodo de la inversa de la funci
on
de distribuci
on. Simplemente podemos:
>> x=unifrnd(-pi/2,pi/2, 100,1); % generar uniformes en intervalo
% (-pi/2,pi/2)
>> y=tan(x);
% aplicar la tangente
2. Sea X N (0, = 3). Se construye un crculo con radio un valor |x| de la v.a. anterior.
Calcular en terminos de la funci
on Q la probabilidad de que el crculo generado tenga un
area
mayor o igual que . Evaluar dicha probabilidad con MATLAB/ Octave de forma exacta y
por simulaci
on.
11
Sea C la v.a. Area
del crculo, se trata de calcular
P (C ) = P X 2 = P X 2 1 = P (X 1) + P (X 1)
X 0
X 0
1
10
1 0
=P
+P
= 2Q
3
3
3
3
3
Para evaluarla con MATLAB/Octave de forma exacta:
>> x=2*(1-normcdf(1/3))
0.7389
Para resolverlo con MATLAB/Octave de forma simulada:
>>
>>
>>
>>
x=normrnd(0,3,1000,1);
area=pi*x.>2;
c=(area>=pi);
prob=sum(c)/1000
0.7080
3. Sea X la v.a. horas que se dedica a realizar una actividad, cuya funcion de densidad es
1
4 (x + 1) 0 < x < 2
f (x) =
0
resto
Se pide:
a) Calcular, de forma analtica 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 analtica y con MATLAB/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.
12
x=1,5
x=1,5
1
=
8
f (x) dx =
P (X > 1,5) =
9
4
4
1
+
4
3
2
2
1
1
1 1 2 2
x 1,5 + [x]21,5
(x + 1) dx =
4
42
4
=
7
1
11
+ =
= 0,3438
32 8
32
Para resolverlo con MATLAB/Octave, hay que utilizar el metodo de la inversa, con lo
que hay que calcular previamente la funcion de distribucion, que es
0
x<0
R
x 1
1 2
1
(y
+
1)
dy
=
x
+
x
0
x<2
F (x) =
8
4
0 4
1
2x
Y ahora hay que invertir la funcion de distribucion:
1 2 1
x + x=u
8
4
x2 + 2x 8u = 0
2 4 + 32u
x=
2
Dada la definici
on de la v.a. X la solucion negativa no es valida, con lo que el procedimiento para generarla es:
u U (0, 1)
2 + 4 + 32u
x=
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 analtica, 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
11
que Y Bin n = 10, p = 32 hay que calcular
3 7
21
10
11
P (Y = 3) =
= 0, 2555
3
32
32
13
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 (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 )
P (T1 |R > 2) =
Sean Z1 =
R|T1 1
0,5
y Z2 =
R|T2 2
,
0,5
P (T1 |R > 2) =
14
5. Ex. SEP 2007 Ing. Tec. Tel. (P2b). (link). La duracion en das de un tipo de sensores sigue un
modelo Weibull con
1/2 !
t
F (t) = 1 exp
1/2 !
1/2 1/2
t
exp
f (t) = 1/2 t
con > 0.
a) Se supone que se tiene una caja de 60 sensores sin usar cuya duracion siguen el modelo
Weibull con = 14 das que verifica que E [T ] = 12 das y V [T ] = 54 das2 . Si se
comienza con un sensor de dicha caja y se va reemplazando instantaneamente seg
un se
vaya fundiendo con un sensor de la misma caja, cual es la probabilidad de que cuando
haya fallado el u
ltimo sensor de la caja hayan pasado menos de 47 das?
Utilizar alguno de los siguientes valores de la funcion
x
Q (x)
1,64
0,05
1,64
0,95
1,96
0,025
1,96
0,975
47
'0
47
'1
b) Comentar lnea a lnea el siguiente codigo 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
15
a) Si se define la v.a. Ti como el tiempo hasta que falla el sensor i, se tiene que se pide
!
60
X
P
Ti 47
i=1
Como las Ti verifican las condiciones del teorema central del lmite, se tiene que
!
r
60
X
5
1
Ti N 60 , 60
2
4
i=1
Si se estandariza
P
60
X
i=1
!
Ti 47
P60
1
1
Ti 60 2
47 60 2
= P i=1q
< q
5
5
60 4
60 4
47 30
P Z<
= P (Z < 1, 96) = 1 Q (1, 96) = 1 0, 025 = 0, 9750
8, 66
b) En primer lugar hay que saber generar un modelo Weibull. Para ello se aplica el
metodo de la inversa de la funci
on de distribucion. Por lo que
!
t
F (t) = 1 exp
=u
t
ln (1 u) =
t = [Ln (1 u)]1/
La primera lnea genera una matriz de dimensiones 60 1000 con n
umeros U (0, 1).
La segunda lnea genera una matriz de dimensiones 60 1000 con n
umeros Weibull con
= 14 das, (se est
a generando los tiempos en los que van fallando los sensores). La tercera
lnea suma la duraci
on total de los 60 sensores. La cuarta lnea mira cuantas 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
resultado de prob debera ser proximo al valor teorico calculado de 0, 9750.
16
6.
Ejercicios Propuestos
1. Indica el c
odigo de MATLAB/Octave para resolver el problema: Ex. SEP 2005 Ing. Tec. Tel.
C3b (link).
2. Indica el c
odigo de MATLAB/Octave para resolver el problema: Ex. JUN 2002 Ing. Inf. (P1b)
(link).
3. Indica el c
odigo de MATLAB/Octave para resolver el problema: Ex. SEP 2007 Ing. Tec. Tel.
(C4a y C4b). (link).
17