Tommaso C. & Marco G.
14 - 17 Dicembre 2016
Vi mostreremo una serie di comandi relativi alle distribuzioni che avete studiato:
Ci sono 4 funzioni di base per ogni distribuzione:
r
)d
)p
)q
)N.B. Alle ultime tre funzioni si possono come di consueto passare vettori di input, invece di singoli punti
Discrete:
Continue:
Idee?
Si tronca il risultato
runif(n, min = a, max = b)
restituisce \(n\) numeri “reali” generati uniformemente a caso tra \(a\) e \(b\).dunif(x, min = a, max = b)
restituisce il numero \(p=1/(b-a)\) se x
è compreso tra a
e b
, restituisce zero altrimentipunif(x, min = a, max = b)
restituisce il valore della cumulativa teorica della distribuzione uniforme tra a
e b
per valutata in x
, ovvero \(\mathbb{P}(U_{a,b} <x)\)qunif(p, min = a, max = b)
restituisce il quantile \(q_{U_{a,b}}(p)\) di una probabilità p
di un’uniforme tra a
e b
N.B. x
e p
possono essere dei vettori
L’esempio d’uso più semplice per questa distribuzione è quello del lancio di un dado a \(n\) facce, nel nostro caso ne useremo 6.
# lancio 4 volte un dado
runif (4, min = 1, max = 7)
## [1] 3.219514 3.756264 3.313055 4.662408
# ottengo dei valori reali quindi tronco il risultato
trunc (runif (4, min = 1, max = 7))
## [1] 6 4 4 5
L’esempio d’uso più semplice per questa distribuzione è quello del lancio di un dado a \(n\) facce, nel nostro caso ne useremo 6.
# se lancio un dado quanto vale la probabilità di ottenere 0?
dunif (0, min = 1, max = 7)
## [1] 0
# se lancio un dado quanto vale la probabilità di ottenere 6?
dunif (6, min = 1, max = 7)
## [1] 0.1666667
Per tutti i valori \(x\in [1,7]\), dunif (x, min = 1, max = 7)
restituisce \(1/6\) (come nel caso continuo).
L’esempio d’uso più semplice per questa distribuzione è quello del lancio di un dado a \(n\) facce, nel nostro caso ne useremo 6.
# se lancio un dado quanto vale la probabilità di ottenere un valore <5 ?
punif (5, min = 1, max = 7)
## [1] 0.6666667
# se lancio un dado quanto vale la probabilità di ottenere un valore >=5?
1 - punif (5, min = 1, max = 7)
## [1] 0.3333333
# se lancio un dado quanto vale la probabilità di ottenere un valore tra 3 e 5 compresi
# devo prendere la probabilità dell'evento "risultato < 6" e
# togliere la probabilità dell'evento "risultato < 3"
punif(6, min = 1, max = 7) - punif(3, min = 1, max = 7)
## [1] 0.5
L’esempio d’uso più semplice per questa distribuzione è quello del lancio di un dado a \(n\) facce, nel nostro caso ne useremo 6.
# quale valore corrisponde al primo quartile?
qunif (0.25, min = 1, max = 7)
## [1] 2.5
# quale valore corrisponde al terzo quartile?
qunif (0.75, min = 1, max = 7)
## [1] 5.5
Riportiamo qui di seguito alcuni grafici ottenuti in maniera sperimentale (generando i dati con la distribuzione) e quelli relativi alla variabile aleatoria.
# simuliamo 10000 lanci di un dado
v <- trunc(runif(10000, min = 1, max=7))
# preparo la matrice per due grafici
par(mfrow=c(1,2))
#istogramma delle frequenze relative del lancio del dado
barplot(prop.table(table(v)), main = "Esempio sperimentale")
barplot(dunif (1:6, min = 1, max = 7), main = "Funzione di massa")
# simuliamo 10000 lanci di un dado
v <- trunc(runif( 10000, min = 1, max=7))
# preparo la matrice per due grafici
par(mfrow=c(1,2))
#istogramma delle frequenze relative del lancio del dado
plot(ecdf(v), ylim = c(0,1), ylab = "frequenza relativa", main = "Cumulativa empirica")
plot(punif (1:7, min = 1, max = 7), type="s", ylim = c(0,1), ylab ="valore", main = "Funzione di ripartizione")
N.B. I valori di punif()
sono scalati di uno
La variabile aleatoria di Bernulli è un caso particolare della variabile aleatoria Binomiale
rbinom(n, size, prob)
genera \(n\) numeri, size corrisponde al numero di ripetizoni, prob
alla probabilità di successo.dbinom(x, size, prob)
genera un vettore con i valori della densità di probabilitàpbinom(q, size, prob)
genera un vettore con valori della funzione di ripartizioneqbinom(p, size, prob)
genera il vettore dei valori dei quantiliN.B. La varaiable aleatoria di Bernulli si ottiene impostando a size = 1
rhyper(nn, m, n, k)
genera un vettore di \(nn\) numeri usando una distribuzione Ipergeometrica con parametri \(m\), \(n\) e \(k\)dhyper(x, m, n, k)
Permette il calcolo della probabilità di estrarre \(x\) elementi “di tipo n” in un insieme di \(n+m\) elementi usando \(k\) estrazioni senza reinserimento.phyper(q, m, n, k)
genera il vettore coi valori della funzione di ripartizioneqhyper(p, m, n, k)
genera il vettore dei valori dei quantiliLa distribuzione geometrica modella un esperimento casuale in cui si ottiene un successo dopo esattamente \(k\) insuccessi in una successione di esperimenti indipendenti aventi la medesima probabilità di successo
rgeom(n, prob)
genera un vettore di \(x\) numeri usando questa distribuzionedgeom(x, prob)
genera il vettore coi valori della densità di probabilitàpgeom(q, prob)
genera il vettore coi valori della funzione di ripartizioneqgeom(p, prob)
genera il vettore dei valori dei quantilirpois(n, lambda)
genera un vettore di \(n\) numeri usando un distribuzione di Poisson con parametro \(\lambda\)dpois(x, lambda)
genera il vettore coi valori della densità di probabilitàppois(q, lambda)
genera il vettore coi valori della funzione di ripartizioneqpois(p, lambda)
genera il vettore dei valori dei quantiliAnche chiamata distribuzione normale, assume valori reali tra \(-\infty\) e \(\infty\). I suoi parametri sono la media e deviazione standard. I valori standard per questi due parametri sono 0 e 1
rnorm(n, mean = 0, sd = 1)
genera un vettore di \(n\) numeri estratti usando una distribuzione normale con media 0 e deviazione standard 1dnorm(x, mean = 0, sd = 1)
genera il vettore coi valori della densità di probabilitàpnorm(q, mean = 0, sd = 1)
genera il vettore coi valori della funzione di ripartizioneqnorm(p, mean = 0, sd = 1)
genera il vettore dei valori dei quantiliGeneriamo un campione di 10000 elementi usando una distribuzione normale con media 0 e deviazione standard 1 e ne calcoliamo media e deviazione standard.
v <- rnorm(10000, 0, 1)
mean(v)
## [1] -0.02341751
sd(v)
## [1] 0.9993357
# calcolo i quantili dei dati generati
quantile(v, c(0.25, 0.5, 0.75))
## 25% 50% 75%
## -0.6922444 -0.0275620 0.6674578
# valori dei quantili della gaussiana
qnorm(c(0.25, 0.5, 0.75), 0, 1)
## [1] -0.6744898 0.0000000 0.6744898
Generiamo un campione di 10000 elementi usando una distribuzione normale con media 4 e deviazione standard 3. Confrontiamo frequenze relative e densità teorica
# creo un vettore x {-4,-3.999,-3.998,...,3.998,3.999,4}
x <- seq(-4,4,by = 0.001)
par(mfrow= c(1,2))
# genero 8000 valori casualmente usando la distribuzione normale
datiCasuali <- rnorm(8000, 0, 1)
hist (datiCasuali, main = "dati generati" ,xlim=c(-4,4))
plot(x,dnorm(x,0,1), type ="l", main = "funzione di massa")
Il parametro rate
è il paramatro \(\lambda\) della definizione sul libro
rexp(n, rate = 1)
genera un vettore di \(n\) numeri usando questa distribuzionedexp(x, rate = 1)
genera il vettore coi valori della densità di probabilitàpexp(q, rate = 1)
genera il vettore coi valori della funzione di ripartizioneqexp(p, rate = 1)
genera il vettore dei valori dei quantiliqqnorm
e qqline
è che la seconda traccia la retta passante per \(Q_1\) e \(Q_3\)qqplot
confronta i quantili di due vettori che vengono passati.Esempio di qqnorm
con funzione normale
par (mfrow = c(1,2))
v = rnorm(10000)
hist (v)
qqnorm(v)
qqline(v)
Con la normale ottengo grosso modo una retta
Esempio di funzione skewed a destra
hist(v)
qqnorm(v)
qqline(v)
In rosso è visibile la coda più lunga della nostra distribuzione
Esempio di funzione skewed a sinistra
hist(v)
qqnorm(v)
qqline(v)
In rosso è visibile la coda più lunga della nostra distribuzione
Vediamo adesso cosa succede nel caso di una distribuzione bimodale
hist(v)
qqnorm(v)
qqline(v)
Infine qqplot non genera distribuzioni normali a partire dai dati, semplicemente plotta i valori dei percentili dei vettori \(v_1, v_2\), può essere utile se si vuole confrontare una serie di dati con una distribuzione nota (che non sia necessariamente normale)
Prendiamo due serie di dati generate da due funzioni uniformi.
par(mfrow=c(1,3))
hist(v1)
hist(v2)
qqplot(v1,v2)
Un altro modo per usare qqplot è fornendo un vettore di quantili generato da qNomedistribuzione
. Prendiamo una serie di dati e proviamo a vedere se appartiene ad una distribuzione fissata. Proveremo a controntare i dati dei quantili teorici della distribuzione geometrica.
par(mfrow= c(1,2))
plot(prop.table(table(v)),type="l")
qqplot(qgeom(seq(0,1,0.1),0.1), v, xlab="quantili geometrica", ylim= c(0,21))
Un’urna contiene 10 palline di cui 4 Bianche e 6 Nere. Si eseguono 5 estrazioni con reimmissione.
Si eseguono 10 estrazioni senza reimmissione da un’urna.
Tracciare il grafico della funzione massa di probabilità della variabile casuale X nel caso dell’urna 1 se si eseguono 25 estrazioni
Consideriamo l’urna 1 e n=10 estrazioni. Si aumenti il numero totale M di palline nell’urna mantenendo uguale a 0.2 la frazione di palline bianche. Per ciascun valore di M confrontare graficamente la distribuzione di probabilità del numero di palline bianche estratte nel caso di estrazioni con e senza reimmissione. Provare con 20, 40 e 200 palline bianche.