Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Corso di laurea in
Statistica e Informatica per
lazienda, la finanza e lassicurazione
a.a. 2017/2018
Variabili aleatorie e distribuzioni di probabilita
Le distribuzioni di probabilita disponibili in R si ottengono con il comando ?Distributions
eseguito dalla console di R:
2
Vogliamo calcolare la probabilita P( X = 5) dove X Bin(n, p) con n = 20, p =
0.5. Usiamo la funzione seq() che produce vettori con componenti equispaziate, e
choose(n,r) che restituisce il coefficiente binomiale di n su r (puo essere utile ricordare
che la funzione factorial(n) restituisce il fattoriale di n):
Possiamo usare la funzione sum() per verificare che si tratti di una funzione di pro-
babilita.
sum(pbin)
## [1] 1
3
add: variabile logica con modalita TRUE, FALSE; se uguale a TRUE sovrappone il
risultato al grafico eventualmente presente nella finestra.
Useremo spesso la funzione par() che consente di modificare alcuni parametri usa-
ti durante la generazione delle immagini o per riportare il loro valore alla situazione
precedente. Usiamo la funzione plot() per rappresentare la funzione di probabilita
binomiale:
Binomiale(20, 0.5)
0.15
0.10
p(x)
0.05
0.00
0 5 10 15 20
Per verificare come varia il grafico della densita (probabilita) binomiale per n = 20
al variare del parametro p possiamo costruire una semplice funzione che calcoli i valori
della probabilita in funzione di x, n e p.
binomiale=function(x,n,p){choose(n,x)*p^x*(1-p)^(n-x)}
binomiale(5,20,0.5)
## [1] 0.01478577
4
Qual e la probabilita di ottenere 2 volte 6 lanciando 15 volte un dado?
0.20
x=c(0:20)
y0=binomiale(x,20,0.3)
y1=binomiale(x,20,0.6)
0.15
plot(x+0.1,y0,xlim=c(0,20),
ylim=c(0,.2),type="h",lwd=3,
0.10
p(x)
xlab="x",ylab="p(x)")
par(new=T)
0.05
plot(x-0.1,y1,xlim=c(0,20),
ylim=c(0,.2),type="h",lwd=3,
xlab=" ",ylab=" ", col="red")
0.00
0 5 10 15 20
Si otterra lo stesso risultato mediante il codice riportato sotto che usa il comando
points():
#parametri
n=10
p=0.2
#calcoliamo F(k)=P(X<=k)
5
k=3
x=c(0:k)
sum(binomiale(x, n, p))
## [1] 0.8791261
args(dbinom)
args(pbinom)
dbinom(2,15,1/6)
## [1] 0.272603
pbinom(3,10,0.2)
## [1] 0.8791261
6
Il ritardo dei mezzi di trasporto pubblico e distribuito secondo una variabile casuale
X di tipo binomiale con parametri n = 6 e p = 0.55. Calcolare la probabilita di
osservare un numero di successi (ritardo accettabile) compreso tra 3 (escluso) e 5.
x1<-3
x2<-5
n<-6
p<-0.55
p.minore.x2<-pbinom(x2,n,p) # P(X <= x2)
p.minore.x1<-pbinom(x1,n,p) # P(X <= x1)
prob.intervallo <- p.minore.x2 - p.minore.x1 #P(x1 < X <= x2)
prob.intervallo
## [1] 0.413837
1.0
Funzione di ripartizione
0.8
0.20
Probabilit
0.6
0.4
0.10
0.2
0.0
0.00
0 1 2 3 4 5 6 0 2 4 6
x x
7
Ricorrendo a par() possiamo confrontare le funzioni di probabilita binomiali per n
fissato e diversi valori di p.
par2<-par(mfrow=c(2,2), mar=c(4,3,3,3))
x=(0:20)
n<-20
plot(x,dbinom(x, n, 0.1),type="h",xlab="x",ylab="P(x)",ylim = c(0,.35),
main ="Bin(n=20, p=0.1)")
plot(x,dbinom(x, n, 0.3),type="h",xlab="x",ylab="P(x)",ylim = c(0,.35),
main ="Bin(n=20, p=0.3)")
plot(x,dbinom(x, n, 0.5),type="h",xlab="x",ylab="P(x)",ylim = c(0,.35),
main ="Bin(n=20, p=0.5)")
plot(x,dbinom(x, n, 0.9),type="h",xlab="x",ylab="P(x)",ylim = c(0,.35),
main ="Bin(n=20, p=0.9)")
par(par2)
0.30
P(x)
P(x)
0.15
0.15
0.00
0.00
0 5 10 15 20 0 5 10 15 20
x x
0.30
P(x)
P(x)
0.15
0.15
0.00
0.00
0 5 10 15 20 0 5 10 15 20
x x
E interessante provare a usare il comando che genera numeri aleatori. Ad esempio,
potremmo generare al computer una sequenza casuale del tipo testa o croce. Generiamo
8
una sequenza di prove Bernoulliane con il comando rbinom() ottenendo 80 valori che
sono 1 (testa) o 0 (croce).
## [1] 1 0 0 1 1 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0
## [36] 1 1 1 0 1 0 1 1 1 1 1 1 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0
## [71] 1 0 1 0 0 0 1 1 0 1
## [1] 0.4875
La distribuzione di Poisson
Si provi a ripetere quanto fatto per la Binomiale per la distribuzione di Poisson:
Con gli strumenti visti fino ad ora possiamo verificare che una binomiale con opportuni
parametri e ben approssimata da una Poisson con media np. Poniamo, ad esempio,
n = 100 e p = 0.02 e confrontiamo graficamente i risultati mediante il comando points()
che aggiunge punti in un grafico nella posizione indicata dalle coordinate passate per
argomento:
n<-100
p<-0.02
x=seq(0:20)
plot(x, dpois(x,n*p), type="h", ylab="probabilita")
points(x+.1, dbinom(x,n,p), type="h", col="red")
9
0.20
probabilit
0.10
0.00
5 10 15 20
## dati.pois
## 1 2 3 4 5 6 7 8 9 10 11 12
## 9 53 68 96 79 73 58 35 14 6 5 4
10
plot(tab/n, ylab="probabilita", xlab="x")
0.15
probabilit
0.10
0.05
0.00
0 1 2 3 4 5 6 7 8 9 10 11 12
Vediamo ora come possiamo usare R per risolvere alcuni semplici esercizi con va-
riabili aleatorie geometriche e binomiali negative. La variabile aleatoria X con legge
geometrica di parametro p implementata in R assume valori 0, 1, 2, . . . e modella il nu-
mero di insuccessi prima del primo successo (tempo di attesa per il primo successo); la
sua funzione di probabilita e P( X = k) = p(1 p)k , k = 0, 1, 2 . . . .
In R la densita e la funzione di ripartizione di una geometrica di parametro p si
ottengono rispettivamente con in comandi
dgeom
pgeom
Nota: Per ottenere la variabile aleatoria Y che modella il tempo di arrivo del primo
successo (valori 1, 2, 3, ...) e necessario operare la trasformazione Y = X + 1. Ad esem-
pio, se p = 0.2 la probabilita che il primo successo arrivi alla 10-ma prova e data dal
comando dgeom(10-1, 0.2), cioe bisogna considerare X = Y 1.
11
Una generalizzazione della distribuzione geometrica e data dalla variabile casuale
Binomiale negativa intesa come numero aleatorio di insuccessi che precedono ln-esimo
successo:
y+n1 n
P (Y = y ) = p (1 p)y , y = 0, 1, 2 . . .
k
che in R si ottiene con il comando dnbinom().
#a. Il tempo d'attesa per il primo successo e una geometrica con p=0.1
dgeom(8, prob=0.1)
## [1] 0.04304672
#oppure
dnbinom(8, size=1, prob=0.1)
## [1] 0.04304672
## [1] 0.9269345
#c. Il numero di interviste (prove) per ottenere n=10 successi e una v.a.
# binomiale negativa di media n/p
val_atteso<-10/0.1
val_atteso
## [1] 100
12
Esercizi
1. Si calcoli la probabilita che lanciando 50 volte una moneta si ottenga testa piu
di 45 volte.
2. Carlo acquista un biglietto in ciascuna di 50 diverse lotterie, e in ognuna la
probabilita di vittoria e 1/100. Si consideri la v.a. X = numero di successi alla
lotteria. Calcolare la probabilita che Carlo risulti vincitore:
a) almeno una volta;
b) esattamente una volta;
c) almeno due volte.
Confrontare poi i risultati ottenuti supponendo di fare unapprossimazione
della distribuzione di X con una Poisson.
3. Qual e la probabilita di ottenere la prima T (testa) dopo tre C (croci) nel lancio
di una moneta truccata, tale per cui p = P( T ) = 1/8?
4. Si ottenga la funzione di probabilita della variabile aleatoria Y che rappresenta
il numero di carte di cuori che si osservano in una mano di 10 carte estratte
da un mazzo che ne contiene 52 (hint: si consideri la funzione dhyper()). Si
determinino media e varianza.
5. Si ottenga il grafico della densita e della funzione di ripartizione della variabile
casuale X Ge( p), per p = 0.2.
6. Utilizzare R per risolvere il seguente esercizio. Si supponga che il numero
medio di chiamate ad un centralino sia pari a 20 per ora. Qual e la probabilita
che in 5 minuti non arrivino chiamate oppure che in 10 minuti si abbiano al
piu 10 chiamate?
7. Si provi a calcolare la mediana di una binomiale X Bin(n, p) e si definisca
una funzione che realizzi questo calcolo. Si noti che, essendo X discreta,
potrebbe non esistere alcun valore x0.5 tale per cui P( X x0.5 ) = 0.5. Cosa si
potrebbe proporre in questo caso?
13
2. Distribuzioni di probabilita continue
0.2
0.1
0.0
5 0 5 10
14
dnorm(1) # calcola il valore della densita nel punto 1
dnorm(c(-1,0,1)) # calcola il valore della densitta nei punti -1, 0 e 1
pnorm(1) # calcola il valore della funzione di ripartizione in 1
qnorm(0.10) # calcola lo 0.10-quantile, cioe il decimo percentile
Come detto, per ogni famiglia si puo anche calcolare la funzione di ripartizione e
la sua inversa (funzione dei quantili). Cioe, possiamo usare R per risolvere semplici
problemi per cui si usano di solito le tavole.
## [1] 0.9331928
#oppure P(X<=185)=Phi((185-mu)/sigma)
z<-(185-mu)/sigma
pnorm(z)
## [1] 0.9331928
#a2.
z1<-(165-mu)/sigma
z2<-(190-mu)/sigma
#P(165<= X<= 190)=P(X<=190)-P(X<=165)
pnorm(z2)-pnorm(z1)
## [1] 0.6687123
## [1] 13.4898
15
Confrontare i grafici della densita Normale per diversi valori di , ad esempio
= 1, 0, 3 e deviazione standard = 1.3. Per gli stessi parametri costruire il
grafico della funzione di ripartizione.
Abbiamo gia accennato al fatto che per molte distribuzioni e possibile estrarre uno o
piu valori (pseudo) casuali. Questo sara di grande utilita piu avanti per semplici studi
di simulazione. Supponiamo di voler estrarre un certo numero di valori casuali da una
rettangolare (o uniforme continua) su (0, 1). Quale percentuale di questi dovremmo at-
tenderci che si trovi al di sotto del valore 0.4? La risposta e il 40% dei valori. Verifichiamo
allora il comportamento dei valori simulati rispetto a cio che ci attendiamo.
## [1] 0.396
set.seed(5)
x<-rnorm(800, 10, 5)
hist(x, freq=FALSE, breaks=30, xlab=" ",ylab="densita", main="")
curve(dnorm(x, 10, 5), add=T, col=4, lwd=3)
16
0.08
0.06
densit
0.04
0.02
0.00
5 0 5 10 15 20 25
Una seconda strategia, molto utile se i dati disponibili non sono molto numerosi e
quindi ha poco senso fare un istogramma, e quella di ottenere la funzione di ripartizione
empirica e poi sovrapporne il grafico alla funzione di ripartizione della variabile aleatoria
che ha generato i dati. La funzione di ripartizione empirica Fn ( x ) e calcolata sulla base di
n osservazioni x1 , . . . , xn di una variabile aleatoria ed e data dal numero di osservazioni
minori o uguali del valore x:
in=1 I { xi x }
Fn ( x ) =
n
set.seed(991155)
edf_norm<-ecdf(rnorm(150))
tt<-seq(from=-3, to=3, by=0.01)
plot(edf_norm, verticals=TRUE, do.p=FALSE, main="ECDF and CDF")
lines(tt, pnorm(tt), col=2, lty=2, lwd=2)
17
ECDF and CDF
1.0
0.8
0.6
Fn(x)
0.4
0.2
0.0
3 2 1 0 1 2 3
La distribuzione Gamma
Si provi a utilizzare lHelp per ottenere informazioni sulle funzioni implementate
per la distribuzione gamma:
quali sono i parametri in input? come viene parametrizzata?
quali distribuzioni si ottengono come casi particolari?
## [1] 0.559449
## [1] 0.559449
## [1] 5.035041
18
Proviamo ora a confrontare i grafici delle densita di probabilita della distribuzione
gamma
1
f (x) = x a1 e x/s , 0 x < ,
( a)s a
per diverse scelte dei parametri a > 0, s > 0. Si noti che, come visto, in R il secondo
parametro in input e rate ed e definito come 1/s. Dunque, ponendo n = a e = 1/s si
ottiene la parametrizzazione
n n1 x
x e , x > 0. (1)
(n)
Poniamo, ad esempio, a = 0.75, 1.5, 3.5 (shape) e scegliamo il parametro di scala s in
modo tale che la media (a s) risulti pari a 1.
x<-seq(0, 4, 0.01)
a<-0.75
plot(x, dgamma(x, shape=a, scale=1/a), type="l", xlab="x", ylab="densita")
a<-1.5
points(x, dgamma(x, shape=a, scale=1/a), type="l", col=2, lty=2, lwd=2)
a<-3.5
points(x, dgamma(x, shape=a, rate=a), type="l", col=3, lwd=2)
2.0
1.5
densit
1.0
0.5
0.0
0 1 2 3 4
19
Sappiamo che per n = 1, lequazione (1) fornisce la densita della distribuzione
esponenziale di parametro .
##ESPONENZIALE
curve(dexp(x, rate = 5), ylab = "densita",
from = 0, to = 2, main = "Distribuzione esponenziale")
curve(dgamma(x, shape=1, rate=5), type="l", add=TRUE, col=3, lty=2, lwd=3)
Distribuzione esponenziale
5
4
densit
3
2
1
0
Inoltre anche le due seguenti linee di codice forniscono lo stesso risultato. Perche?
## [1] 0.4275933
pchisq(2, df=3)
## [1] 0.4275933
20
Esercizi
1. Sia Z la variabile aleatoria normale standard. Calcolare
a. P( Z < 1)
b. P( Z > 1)
c. P( Z < 1)
d. P(0.3 < Z 0.5)
21