laboratorio con r

25
Laboratorio con R Corso di Inferenza Statistica Roberta Pappad` a · Marco Stefanucci Corso di laurea in Statistica e Informatica per l’azienda, la finanza e l’assicurazione Universit` a degli Studi di Trieste Dipartimento di Scienze Economiche, Aziendali, Matematiche e Statistiche “Bruno de Finetti” (DEAMS) a.a. 2021/2022

Upload: others

Post on 24-Feb-2022

3 views

Category:

Documents


0 download

TRANSCRIPT

Laboratorio con RCorso di Inferenza Statistica

Roberta Pappada · Marco Stefanucci

Corso di laurea inStatistica e Informatica per

l’azienda, la finanza e l’assicurazione

Universita degli Studi di TriesteDipartimento di Scienze Economiche, Aziendali,

Matematiche e Statistiche “Bruno de Finetti” (DEAMS)

a.a. 2021/2022

Variabili aleatorie e distribuzioni di probabilita

1. Distribuzioni di probabilita discrete

Esempio: la distribuzione binomiale. Sappiamo che una variabile aleatoria binomialedi parametri n e p descrive il numero di successi ottenuti in un esperimento binomialecon n prove e probabilita di successo p, ed ha funzione di probabilita binomiale definitada

p(x) =(

nx

)px(1− p)n−x, x = 0, 1, . . . , n.

Vogliamo calcolare la probabilita P(X = 5) dove X ∼ Bin(n, p) con n = 20, p = 0.5. Usi-amo 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 fun-zione factorial(n) restituisce il fattoriale di n):

x<-seq(from=0, to=20, by=1)

#calcoliamo P(X=x) per ogni valore di x

pbin<-choose(20,x)*.5^x*(1-.5)^(20-x)

pbin

## [1] 9.536743e-07 1.907349e-05 1.811981e-04 1.087189e-03 4.620552e-03

## [6] 1.478577e-02 3.696442e-02 7.392883e-02 1.201344e-01 1.601791e-01

## [11] 1.761971e-01 1.601791e-01 1.201344e-01 7.392883e-02 3.696442e-02

## [16] 1.478577e-02 4.620552e-03 1.087189e-03 1.811981e-04 1.907349e-05

## [21] 9.536743e-07

Possiamo usare la funzione sum() per verificare che si tratti di una funzione di prob-abilita:

sum(pbin)

## [1] 1

Lo strumento piu generale per rappresentare graficamente gli oggetti e la funzioneplot(). La forma generale e plot(x,opzioni) oppure plot(x,y,opzioni) in cui x, ysono appropriati oggetti R e le opzioni definiscono l’aspetto finale del grafico. Le opzioniprincipali sono

• type: determina il tipo di grafico, a scelta tra

”p” (points), punti (default),

”l” (lines), linee,

2

”b” (both), punti e linee,

”h” (histogram), linee verticali,

”s”, ”S” (steps), linee orizzontali e verticali

”n” (none), sopprime la rappresentazione grafica

• xlim, ylim: campo di variazione degli assi

• xlab, ylab: titoli per gli assi

• main, sub: titolo (principale e secondario) del grafico

• add: variabile logica con modalita TRUE, FALSE; se uguale a TRUE sovrappone ilrisultato al grafico eventualmente presente nella finestra.

Useremo spesso la funzione par() che consente di modificare alcuni parametri us-ati durante la generazione delle immagini o per riportare il loro valore alla situazioneprecedente. Usiamo la funzione plot() per rappresentare la funzione di probabilitabinomiale:

plot(x, pbin, type="h", main="Binomiale(20, 0.5)", xlab="x", ylab="p(x)")

0 5 10 15 20

0.00

0.05

0.10

0.15

Binomiale(20, 0.5)

x

p(x)

Per verificare come varia il grafico della densita (probabilita) binomiale per n = 20al variare del parametro p possiamo costruire una semplice funzione che calcoli i valoridella probabilita in funzione di x, n e p.

3

binomiale<-function(x,n,p) choose(n,x)*p^x*(1-p)^(n-x)

Ora la funzione binomiale e in memoria e ci permettera di calcolare qualsiasi proba-bilita per una generica binomiale di parametri n e p. Ad esempio,

binomiale(5,20,0.5)

## [1] 0.01478577

Qual e la probabilita di ottenere 2 volte 6 lanciando 15 volte un dado?

Confrontiamo le funzioni di probabilita delle distribuzioni Bin(20, 0.3) (in nero) eBin(20, 0.6) (in rosso). Per facilita di lettura, i valori sulle ascisse sono lievemente spo-stati a destra e a sinistra dell’intero. Si noti l’uso di uno dei parametri piu interessantidella funzione par() dato da new=, che permette di sovrapporre tra loro le immaginicreate da comandi grafici diversi (nota: per definire i valori di x usiamo l’operatore ”:”che produce vettori con elementi separati da intervalli unitari)

x<-c(0:20)

y0<-binomiale(x,20,0.3)

y1<-binomiale(x,20,0.6)

plot(x+0.1,y0,xlim=c(0,20),

ylim<-c(0,.2),type="h",lwd=3,

xlab="x",ylab="p(x)")

par(new=T)

plot(x-0.1,y1,xlim=c(0,20),

ylim=c(0,.2),type="h",lwd=3,

xlab=" ",ylab=" ", col="red")

0 5 10 15 20

0.00

0.05

0.10

0.15

0.20

x

p(x)

0 5 10 15 20

0.00

0.05

0.10

0.15

0.20

Si otterra lo stesso risultato mediante il codice riportato sotto che usa il comandopoints():

4

plot(x, y0, type="h", ylim=c(0,0.2), xlab="x", ylab="p(x)")

points(x-0.1, y1, type="h", col=2)

0 5 10 15 20

0.00

0.05

0.10

0.15

0.20

x

p(x)

E se volessimo calcolare il valore della funzione di ripartizione di una binomiale in kintero? Possiamo calcolare le probabilita binomiali per la sequenza di valori x che vannoda 0 a k e poi usare la funzione sum(), come nell’esempio che segue.

#parametri

n<-10

p<-0.2

#calcoliamo F(k)=P(X<=k)

k=3

x=c(0:k)

sum(binomiale(x, n, p))

## [1] 0.8791261

R e le distribuzioni. Le distribuzioni di probabilita disponibili in R si ottengono conil comando ?Distributions eseguito dalla console di R:

5

Distribution R name additional argumentsbeta beta shape1, shape2binomial binom size, probCauchy cauchy location, scalechi-squared chisq dfexponential exp rateF f df1, df2gamma gamma shape, scalegeometric geom probhypergeometric hyper m, n, klog-normal lnorm meanlog, sdlognegative binomial nbinom size, probnormal norm mean, sdPoisson pois lambdaStudent’s t t dfuniform unif min, maxWeibull weibull shape, scale

Per le piu comuni distribuzioni di probabilita discrete e continue, sono disponibili icomandi per il calcolo di funzione di densita o probabilita, funzione di ripartizione,quantili e per la generazione di numeri pseudo-casuali:

• d<nome-var-al>(x,<altri parametri>) densita (o funzione di probabilita) in x

• p<nome-var-al>(x,<altri parametri>) funzione di distribuzione cumulata in x

• q<nome-var-al>(r,<altri parametri>) quantile r-esimo

• r<nome-var-al>(N,<altri parametri>) generazione casuale di N elementi estrattidalla distribuzione indicata

L’aiuto in linea di R e utile per conoscere la sintassi delle funzioni che vi sono giaimplementate. Per accedere alle pagine di aiuto basta digitare help(nomefunzione) o?nomefunzione. Per esempio, le funzioni relative alla distirbuzione binomiale sono de-nominate con un prefisso seguito da binom:

dbinom() pbinom() qbinom() rbinom()

args(dbinom)

## function (x, size, prob, log = FALSE)

## NULL

6

args(pbinom)

## function (q, size, prob, lower.tail = TRUE, log.p = FALSE)

## NULL

Verifichiamo che la funzione dbinom fa esattamente quello che fa la funzione cheabbiamo costruito noi. Ad esempio, si ripeta il calcolo della probabilita di ottenere 2volte 6 lanciando 15 volte un dado.

dbinom(2,15,1/6)

## [1] 0.272603

Analogamente, riprendendo l’esempio del calcolo della funzione di ripartizione ink = 3 per la binomiale di parametri n = 10, p = 0.2, si verifica che si ottiene lo stessorisultato ottenuto sopra.

pbinom(3,10,0.2)

## [1] 0.8791261

Il ritardo dei mezzi di trasporto pubblico e distribuito secondo una variabile casualeX di tipo binomiale con parametri n = 6 e p = 0.55. Calcolare la probabilita diosservare 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)

p.minore.x2 - p.minore.x1 #P(x1 < X <= x2)

## [1] 0.413837

Per l’esercizio precedente disegnamo le funzioni di probabilita e ripartizione.

par1<-par(mfrow=c(1,2)) #2 immagini affiancate

bin1 <- function(x) dbinom(x,size=6,prob=0.55)

plot(0:6, bin1(0:6),type="h",xlab="x",ylab="Probabilita",main = " ")

7

bin2 <- function(x) pbinom(x,size=6,prob=0.55)

plot(-1:7, bin2(-1:7), type="s",xlab="x",ylab="Funzione di ripartizione",

main = " ")

0 1 2 3 4 5 6

0.00

0.10

0.20

0.30

x

Pro

babi

lità

0 2 4 60.

00.

20.

40.

60.

81.

0

x

Fun

zion

e di

rip

artiz

ione

par(par1) #ripristina una singola immagine

Ricorrendo a par() possiamo confrontare le funzioni di probabilita binomiali per nfissato 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)")

8

0 5 10 15 20

0.00

0.10

0.20

0.30

Bin(n=20, p=0.1)

x

P(x

)

0 5 10 15 20

0.00

0.10

0.20

0.30

Bin(n=20, p=0.3)

x

P(x

)

0 5 10 15 20

0.00

0.10

0.20

0.30

Bin(n=20, p=0.5)

x

P(x

)

0 5 10 15 20

0.00

0.10

0.20

0.30

Bin(n=20, p=0.9)

x

P(x

)

par(par2)

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. Generiamouna sequenza di prove Bernoulliane con il comando rbinom() ottenendo 80 valori chesono 1 (testa) o 0 (croce).

9

set.seed(0) #per la riproducibilita dei risultati

sim<-rbinom(n=80,size=1,prob=.5)

str(sim)

## int [1:80] 1 0 0 1 1 0 1 1 1 1 ...

sum(sim)/80

## [1] 0.4875

Si provi a ripetere quanto fatto per la Binomiale per la distribuzione di Poisson:

• Si costruisca una semplice funzione per calcolare le probabilita di una vari-abile di Poisson.• Si ottenga il grafico della funzione di probabilita per X ∼ Po(λ) per λ = 3; si

confrontino i grafici per diversi valori del parametro.• Utilizzando la funzione definita al punto precedente e la funzione predefinita

in R si calcoli P(X = 0), per X ∼ Po(λ = 2) e il valore della funzione diripartizione nel punto x = 4.

La distribuzione di Poisson

Con gli strumenti visti fino ad ora possiamo verificare che una binomiale con opportuniparametri e ben approssimata da una Poisson con media np. Poniamo, ad esempio,n = 100 e p = 0.02 e confrontiamo i risultati mediante il comando points():

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")

10

5 10 15 20

0.00

0.10

0.20

x

prob

abili

Cosa accade se facciamo variare n e p?Possiamo utilizzare semplici strumenti di statistica descrittiva per valutare graficamentel’accostamento di variabili discrete a modelli teorici di riferimento. Simuliamo, ad esem-pio, dei dati da una Poisson di parametro (media) λ = 5 e confrontiamo la distribuzionedei valori simulati con le probabilita teoriche. Useremo la funzione table() che calcolauna tabella di frequenza.

# generiamo 500 valori dalla Po(5)

n<-500

dati.pois<-rpois(n,5)

tab<-table(dati.pois)

#distribuzione di frequenze relative

plot(tab/n, ylab="probabilita", xlab="x")

#funzione di probabilita teorica

m<-max(dati.pois)

x<-seq(0:m)

points(x+.1, dpois(x,5),type="h",col=2)

11

0.00

0.05

0.10

0.15

0.20

x

prob

abili

0 2 4 6 8 10 12

Vediamo ora come possiamo usare R per risolvere alcuni semplici esercizi con vari-abili aleatorie geometriche e binomiali negative. La variabile aleatoria Y con legge geo-metrica di parametro p implementata in R assume valori 0, 1, 2, . . . e modella il numerodi insuccessi prima del primo successo (tempo di attesa per il primo successo); la suafunzione di probabilita e P(k) = p(1− p)k, k = 0, 1, 2 . . . .

In R la densita e la funzione di ripartizione di una geometrica di parametro p siottengono rispettivamente con in comandi

dgeom

pgeom

Nota: Per ottenere la variabile aleatoria X che modella il ”tempo di arrivo del primosuccesso” (valori 1, 2, 3, ...) e necessario operare la trasformazione X = Y + 1. Adesempio, se p = 0.2 la probabilita che il primo successo arrivi alla 10-ma prova e data dalcomando dgeom(10-1, 0.2), cioe bisogna considerare Y = X − 1. La funzione in R perla probabilita della variabile casuale Binomiale negativa intesa come numero aleatoriodi insuccessi che precedono l’r-esimo successo

p(k) =(

k + r− 1r

)pr(1− p)k, k = 0, 1, 2 . . .

e dnbinom().

12

Si supponga di voler studiare l’effetto di un trattamento su una certa patologia, pre-sente nel 10% della popolazione. In particolare, si vogliono individuare esattamente10 individui che presentano la condizione oggetto di studio.

a. Qual e la probabilita che il numero di persone intervistate prima di trovare unindividuo affetto dalla patologia sia esattamente pari a 8?

b. Qual e la probabilita che il numero di persone da intervistare prima di trovare10 individui affetti dalla patologia sia maggiore di 50?

c. Determinare il numero atteso di persone da intervistare per individuare i 10pazienti da sottoporre al trattamento.

#a. tempo d'attesa per il primo 'successo': geometrica con p=0.1

dgeom(8, prob=0.1) #oppure dnbinom(8, size=1, prob=0.1)

## [1] 0.04304672

#b. tempo d'attesa per il decimo 'successo'

1-pnbinom(50, size=10, prob=0.1)

## [1] 0.9269345

#c. media=n/p

10/0.1

## [1] 100

1. Si calcoli la probabilita che lanciando 50 volte una moneta si ottenga testa piudi 45 volte.

2. Carlo acquista un biglietto in ciascuna di 50 diverse lotterie, e in ognuna laprobabilita di vittoria e 1/100. Si consideri la v.a. X = ’numero di successi allalotteria’. 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 un’approssimazionedella distribuzione di X con una Poisson.

Esercizi

13

3. Qual e la probabilita di ottenere la prima T (testa) dopo tre C (croci) nel lanciodi una moneta truccata, tale per cui p = P(T) = 1/8?

4. Si ottenga la funzione di probabilita della variabile aleatoria Y che rappresentail numero di carte di cuori che si osservano in una mano di 10 carte estratteda un mazzo che ne contiene 52 (hint: si consideri la funzione dhyper()). Sideterminino media e varianza.

5. Si ottenga il grafico della densita e della funzione di ripartizione della variabilecasuale X ∼ Ge(p), per p = 0.2.

14

2. Distribuzioni di probabilita continue

Esempio: la distribuzione normale. Utilizzando la seguente funzione implementatain R otteniamo il grafico della densita della distribuzione Gaussiana di media uguale amedia e deviazione standard sd (valori di default 0 e 1):

dnorm(x, mean = 0, sd = 1)

Come visto in precedenza, utilizziamo il comando plot(), mentre points() consentedi aggiungere punti in un grafico gia esistente senza aprire una nuova finestra grafica;l’opzione type="l" serve a unire i punti con una linea disegnando una funzione con-tinua. In alternativa si puo utilizzare il comando curve() per ottenere il grafico delladensita, e si puo sovrapporre una nuova funzione attraverso il parametro add=T.Nell’esempio seguente confrontiamo le densita delle distribuzioni Normali con medierispettivamente uguali a 0, 1, 3 e deviazioni standard uguali a 1 e 1.5 e 2.

x <- seq(-6, 10, length = 100)

plot(x, dnorm(x), type="l", xlab="x", ylab= "densita")

curve(dnorm(x, mean=1, sd=1.5), add=TRUE, lty=2, col=2)

points(x, dnorm(x, mean=3, sd=2), type="l", col=3)

−5 0 5 10

0.0

0.1

0.2

0.3

0.4

x

dens

ità

Per una Normale standard...

15

dnorm(1) # calcola il valore della densita nel punto 1

dnorm(c(-1,0,1)) # calcola il valore della densita 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

Come detto, per ogni famiglia si puo anche calcolare la funzione di ripartizione ela sua inversa (funzione dei quantili). Cioe, possiamo usare R per risolvere sempliciproblemi per cui si usano di solito le tavole.

Sia X ∼ N(170, 100). Si calcoli

a. P(X ≤ 185) e P(165 ≤ X ≤ 190);b. lo scarto interquartile di X.

mu<-170

sigma<-10

#a1. P(X<=185)

pnorm(185, mu, sigma)

## [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

#b. terzo e primo quartile

Q3<-qnorm(0.75, mu, sigma)

Q1<-qnorm(0.25, mu, sigma)

IQR<-Q3-Q1 #scarto interquartile

IQR

## [1] 13.4898

16

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 ilgrafico della funzione di ripartizione.

Abbiamo gia accennato al fatto che per molte distribuzioni e possibile estrarre uno opiu valori (pseudo) casuali. Questo sara di grande utilita piu avanti per semplici studidi simulazione. Supponiamo di voler estrarre un certo numero di valori casuali da unarettangolare (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. Verifichiamoallora il comportamento dei valori simulati rispetto a cio che ci attendiamo.

#generiamo 500 valori da una R(0,1)

n<-500

simu<-runif(n,0,1)

#proporzione oss. sotto 0.4

sum(simu<.4)/n

## [1] 0.4

La proporzione che abbiamo trovato e molto vicina ma non e uguale a 0.4.Il prossimo passo sara quello di generare valori da una Gaussiana e provare quindi avedere se tali valori rispecchiano quello che ci attendiamo. Immaginiamo di estrarreun gran numero di valori da una Gaussiana di media 10 e varianza 25, ad esempio 800valori. Dato che si tratta di una variabile continua, possiamo rappresentare le frequenzeosservate attraverso un istogramma (hist()). Per ottenere l’istogramma delle frequenzerelative aggiungiamo l’opzione freq=FALSE. Infine sovrapponiamo con curve() la den-sita della Gaussiana da cui i dati sono estratti.

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)

17

dens

ità

−5 0 5 10 15 20 25

0.00

0.02

0.04

0.06

0.08

Una seconda strategia, molto utile se i dati disponibili non sono molto numerosi equindi ha poco senso fare un istogramma, e quella di ottenere la funzione di ripartizioneempirica e poi sovrapporne il grafico alla funzione di ripartizione della variabile aleatoriache ha generato i dati. La funzione di ripartizione empirica Fn(x) e calcolata sulla base din osservazioni x1, . . . , xn di una variabile aleatoria ed e data dal numero di osservazioniminori o uguali del valore x:

Fn(x) = ∑ni=1 I{xi ≤ x}

n

Per n sufficientemente grande Fn(x) e prossima alla funzione di ripartizione F(x)della popolazione di provenienza del campione.

In R esiste la funzione ecdf() per calcolare una funzione di ripartizione empirica. Diseguito riportato il codice per ottenere il grafico della f.d.r. per un campione di ampiezza150 da una N(0, 1). La f.d.r. teorica e disegnata in rosso.

set.seed(9)

edf_norm<-ecdf(rnorm(150))

tt<-seq(from=-3, to=3, by=0.01)

plot(edf_norm, do.p=FALSE, main="ECDF and CDF")

lines(tt, pnorm(tt), col=2, lty=2, lwd=2)

18

−3 −2 −1 0 1 2 3

0.0

0.2

0.4

0.6

0.8

1.0

ECDF and CDF

x

Fn(

x)

Si provi a utilizzare l’Help per ottenere informazioni sulle funzioni implementateper la distribuzione gamma:

• quali sono i parametri in input? come viene parametrizzata?• quali distribuzioni si ottengono come casi particolari?

La distribuzione Gamma

Usiamo la funzione qgamma() per calcolare la mediana della distribuzione gamma diparametri a = 2 (shape) e s = 1/3 (scale).

qgamma(0.5, shape=2, scale=1/3)

## [1] 0.559449

qgamma(0.5, shape=2, rate=3)

## [1] 0.559449

# Attenzione allordine dei valori in input!

qgamma(0.5, 2, 1/3)

## [1] 5.035041

19

Proviamo ora a confrontare i grafici delle densita di probabilita della distribuzionegamma

f (x) =1

Γ(a)sa xa−1e−x/s, 0 ≤ x < ∞,

per diverse scelte dei parametri a > 0, s > 0. Si noti che, come visto, in R il secondoparametro in input e rate ed e definito come 1/s. Dunque, ponendo n = a e λ = 1/s siottiene la parametrizzazione

λn

Γ(n)xn−1e−λx 0 ≤ x < ∞, (1)

Poniamo, ad esempio, a = 0.75, 1.5, 3.5 (shape) e scegliamo il parametro di scala s inmodo 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)

0 1 2 3 4

0.0

0.5

1.0

1.5

2.0

x

dens

ità

Sappiamo che per n = 1, l’equazione (1) fornisce la densita della distribuzione espo-nenziale di parametro λ. Questo si puo vedere facilmente dal seguente codice:

20

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)

0.0 0.5 1.0 1.5 2.0

01

23

45

Distribuzione esponenziale

x

dens

ità

Inoltre anche le due seguenti linee di codice forniscono lo stesso risultato. Perche?

pgamma(2, shape=3/2, rate=1/2)

## [1] 0.4275933

pchisq(2, df=3)

## [1] 0.4275933

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)

Esercizi

21

2. Confrontare i grafici della densita normale di media µ = 0 e diversi valori diσ, ad esempio σ = 0.8, 1.3, 1.9. Per gli stessi parametri costruire il grafico dellafunzione di ripartizione.

3. Si ottenga il grafico della densita di una variabile aleatoria Beta per diversescelte di parametri α e β.

4. Utilizzando R calcolare:

a. la probabilita che una variabile con distribuzione Gaussiana di media 3e deviazione standar 2.1 assuma dei valori nell’intervallo (2.1, 4.5); cheassuma valori minori di 3.5 e valori maggiori di 2.3;

b. la probabilita che una variabile aleatoria con distribuzione log-normaledi parametri 1 e 0.2 assuma dei valori compresi tra 10 e 11; e che assumavalori maggiori di 9;

c. P(5 < X < 8) dove X e una variabile aleatoria esponenziale di media 5.

5. Calcolare il valore della densita log-normale in 0.5 quando il parametro discala e 1 e quello di forma 4‘e 2. Sovrapporre sullo stesso grafico le funzionidi densita di probabilita della distribuzione log-normale di parametri µ = 1,σ = 1 e µ = 1.5, σ = 0.5.

6. Confrontare in uno stesso grafico le funzione di ripartizione della distribuzioneesponenziale di parametro λ = 1, 5, 10. Per ciascuna di queste distribuzionicalcolare i quantili 0.75, 0.8, 0.95.

a. Qual e la probabilita che le vendite superino 1000?b. Qual e la probabilita che le vendite stiano fra 1100 e 1300?c. Qual e il valore delle vendite x∗ che ha probabilita 0.10 di essere super-

ato?

22

3. Distribuzione normale bivariata

In R e possibile rappresentare graficamente funzioni di due variabili. Ad esempio, le fun-zione persp() nel pacchetto graphics consente di visualizzare cosa accade nello spazioin tre dimensioni. Si consideri la funzione di densita Gaussiana bivariata:

f (x, y) =1

2πσXσY√

1− ρ2e− 1

2(1−ρ2)

[(x−µX

σX

)2+(

y−µYσY

)2−2ρ

(x−µX)(y−µY)σXσY

],

dove −∞ < x, y < ∞, σX, σY > 0 e ρ ∈ [−1, 1] e il coefficiente di correlazione lineare.

Il comando persp() ha una sintassi e simile alla funzione plot() gia vista in prece-denza. Gli argomenti sono le coppie di punti (x, y), che formano un fitto reticolo suun intervallo opportuno, e la funzione f (x, y), che viene valutata sui punti del reticolotramite la funzione outer() (si veda ?outer).

Fissati i parametri µX = µY = 0, σX = σY = 1, definiamo la funzione NBiv, che calcolala densita congiunta in funzione del coefficiente di correlazione ρ.

NBiv <- function(x, y, rho){a <- (2*pi*sqrt(1-rho^2))^(-1)

a*exp(-.5*(1-rho^2)^(-1)*(x^2+y^2-2*rho*x*y))

}

Utilizziamo prima outer(), che prende come argomenti le sequenze dei valori sull’assedelle x e sull’asse delle y e applica la funzione definita come terzo argomento al prodottovettoriale dei primi due. Mediante persp() possiamo visualizzare il risultato in 3D (ladirezione di visualizzazione puo essere impostata assegnando specifici valori a theta ephi).

23

xy

f(x,y)

• Si utilizzi la funzione definita sopra per ottenere il grafico della densita nor-male bivariata f (x, y) di parametri µX = µY = 0, σX = σY = 1 per X, Yindipendenti.

• Si ottengano i grafici della densita normale bivariata per diversi valori deiparametri µX, µY, σX, σY, ρ.

Un piano parallelo al piano (x, y) interseca orizzontalmente la superficie campanu-lare di una normale bivariata, formando un ellissoide tale per cui, in ogni punto (x, y)appartenente all’ellisse, la funzione di densita e costante f (x, y) = k. Vediamo comedisegnare in R le curve di livello per diversi valori di ρ.

par(mfrow=c(1,3))

#curve di livello

rho<- -0.5

z<-outer(xx,yy, NBiv, rho=rho)

contour(xx,yy,z,main="rho=-0.5")

rho<- 0

z<-outer(xx,yy,NBiv, rho=rho)

24

contour(xx,yy,z, main="rho=0")

rho<- 0.9

z<-outer(xx,yy,NBiv, rho=rho)

contour(xx,yy,z,main="rho=0.9")

rho=−0.5

0.02

0.04

0.06

0.08

0.1

0.12

−3 −2 −1 0 1 2 3

−3

−2

−1

01

23

rho=0

0.02

0.04

0.06

0.08

0.1

0.1

2 −3 −2 −1 0 1 2 3

−3

−2

−1

01

23

rho=0.9

0.05

0.1

0.15

0.2

0.2

5

−3 −2 −1 0 1 2 3

−3

−2

−1

01

23

25