Punti di attenzione per l'esame

Apici di R

Come caratteri di markdown, R usa gli apici "storti", che si ottengono con alt+96 oppure facendo copia e incolla da qui:

```{r}
```

Installazione pacchetti

A causa di un "bug" tra R e antivirus, il timeout di R per l'installazione di pacchetti nella cartella temporanea non è sufficiente.
Per questo, va eseguita la seguente istruzione:

trace(utils:::unpackPkgZip, quote(Sys.sleep(2)), at = which(grepl("Sys.sleep", body(utils:::unpackPkgZip), fixed = TRUE)))

Il testo completo del suggerimento.

I found that the problem indeed is the antivirus "real time file system protection". I do the following to fix the problem:
trace(utils:::unpackPkgZip, edit=TRUE)
I edit line 140 (line 142 in R 3.4.4):
Sys.sleep(0.5)
to:
Sys.sleep(2)
I seems like the antivirus stalls the creation of the package tmp dir. After changing it to 2 seconds the error is gone.
EDIT: to do this programmatically execute
trace(utils:::unpackPkgZip, quote(Sys.sleep(2)), at = which(grepl("Sys.sleep", body(utils:::unpackPkgZip), fixed = TRUE)))
(credits @DavidArenburg)

Librerie usate

Le librerie usate sono sei, e si possono installare e includere con le seguenti istruzioni:

install.packages(c("tigerstats", "MASS", "labstatR", "matrixcalc", "mvtnorm", "mnormt"))
library(tigerstats)
library(mnormt)
library(mvtnorm)
library(matrixcalc)
library(labstatR)
library(MASS)

Markov

In due compiti su tre ha dato come primo esercizio una catena di Markov. La so, quindi se la trovo devo puntare su quella per ottenere tutti e 10 i punti.

Controllare se c'è una catena di Markov e iniziare da lì.

Gli esercizi chiedono di:

  1. costruire una matrice di probabilità
  2. tramite l'operatore %*% si possono calcolare le matrici dei passi successivi
  3. simulare una catena (ciclo while e vettore di risultati, uso di sample per probabilità specificate esplicitamente)
  4. plot della catena
  5. simulazione di n traiettorie per determinare media, varianza... (non serve il vettore). Il valore iniziale deve essere incluso dentro al for esterno

Esercizi obbligatori

Da questa sessione sono marcati come obbligatori alcuni esercizi. INIZIA DA QUELLI!!!

Normale

  1. ATTENZIONE: nel testo può essere specificata la Scarto Quadratico Medio (SD, Standard Deviation) oppure la Varianza. Molta attenzione, perché ai comandi dnorm, pnorm, qnorm e rnorm va passato lo Scarto Quadratico Medio, mentre se il dato è la varianza ne va passata la radice quadrata:
    SD = SQM/SD oppure Sqrt(Var)
  2. Se si chiede di reiterare la normale su più di un caso (es. presi 5 elementi con distribuzione normale...), la SD va divisa per la radice quadrata del numero di elementi.
  3. Se si chiede, dati una media, un valore a campione e il suo percentile, di trovare la SD, si fa la differenza tra la media e il valore e si divide per qnorm(percentile). Se chiede la Varianza, elevare questo valore al quadrato

Variabili

Quando nel primo punto di un esercizio chiede di calcolare una variabile, probabilmente la userà nei punti successivi, quindi vale la pena di salvarla.

Attenzione che in qualche caso NON usa gli stessi parametri in tutto l'esercizio (es. cambia la SD).

Esercizi con distribuzioni diverse

Può dare esercizi in cui sono presenti due elementi con distribuzioni diverse, per esempio uno normale con probabilità 55% e uno poisson con probabilità 45%.

Chiede sempre:

  1. Un esempio di distribuzione A
  2. Un esempio di distribuzione B
  3. Un esempio di distribuzione congiunta (es. A*0.55 + B*0.45)
  4. Dato un evento con una certa probabilità (punto 3), determinare quale probabilità c'è che sia di A. In questo caso la probabilità P(A|cong) = A*0.55 / cong

Distribuzioni continue

Uniforme

Esempio:

layout(matrix(c(1,2,3,4), 2, 2))

plot(seq(0,1, by=0.01), dunif(seq(0,1, by=0.01), min=0, max=1), type = "s", ylab="dunif",
     xlab="La probabilità di ciascun esito")

plot(seq(0,1, by=0.01), punif(seq(0,1, by=0.01), min=0, max=1), type = "s", ylab="punif",
     xlab="La probabilità di un esito minore o uguale")

plot(seq(0, 1, by=0.2), qunif(seq(0, 1, by=0.2), min=0, max=1), type = "s",
     ylim = c(0,1), ylab="qunif", xlab="Suddivisione per percentili")

plot(table(floor(runif(100, min=0, max = 1)*100)/100), type="h",
     ylim = c(0, 1), ylab="runif", xlab="La distribuzione di 100 lanci casuali")

Normale

Esempio: l’altezza della popolazione umana

layout(matrix(c(1,2,3,4), 2, 2))

plot(115:235, dnorm(115:235, mean = 175, sd=10), type = "s", ylab="dnorm",
     xlab="La probabilità di ciascun esito")

plot(115:235, pnorm(115:235, mean = 175, sd=10), type = "s", ylab="pnorm",
     xlab="La probabilità di un esito minore o uguale")

plot(seq(0, 1, by=0.02), qnorm(seq(0, 1, by=0.02), mean = 175, sd=10),
     type = "s", ylab="qnorm", xlab="Suddivisione per percentili")

plot(table(floor(rnorm(1000, mean = 175, sd=10))), type="h",
     ylab="rnorm", xlab="La distribuzione di 100 lanci casuali")

Gamma

Esempio:

layout(matrix(c(1,2,3,4), 2, 2))

plot(seq(1,5, by = 0.02), dgamma(seq(1,5, by = 0.02), shape = 5, rate = 2), type = "s",
     ylab="dgamma", xlab="La probabilità di ciascun esito")
lines(seq(1,5, by = 0.02), dgamma(seq(1,5, by = 0.02), shape = 6, rate = 2.2))
lines(seq(1,5, by = 0.02), dgamma(seq(1,5, by = 0.02), shape = 7, rate = 2.4))

plot(seq(1,5, by = 0.02), pgamma(seq(1,5, by = 0.02), 5, rate = 2), type = "s", ylab="pgamma",
     xlab="La probabilità di un esito minore o uguale")

plot(seq(0,1, by = 0.02), qgamma(seq(0,1, by = 0.02), 5, rate = 2), type = "s", ylab="qgamma", xlab="Suddivisione per percentili")

plot(table(floor(rgamma(seq(1,5, by = 0.02), 5, rate = 2))), type="h",
     ylab="rgamma", xlab="La distribuzione di 100 lanci casuali")

Esponenziale

Esempio:

layout(matrix(c(1,2,3,4), 2, 2))

plot(seq(1,5, by = 0.02), dexp(seq(1,5, by = 0.02), rate = 2), type = "s",
     ylab="dexp", xlab="La probabilità di ciascun esito")
lines(seq(1,5, by = 0.02), dexp(seq(1,5, by = 0.02), rate = 2.2))
lines(seq(1,5, by = 0.02), dexp(seq(1,5, by = 0.02), rate = 2.4))

plot(seq(1,5, by = 0.02), pexp(seq(1,5, by = 0.02), rate = 2), type = "s", ylab="pexp",
     xlab="La probabilità di un esito minore o uguale")

plot(seq(0,1, by = 0.02), qexp(seq(0,1, by = 0.02), rate = 2), type = "s", ylab="qexp", xlab="Suddivisione per percentili")

plot(table(floor(rexp(seq(1,5, by = 0.02), rate = 0.1))), type="h",
     ylab="rexp", xlab="La distribuzione di 100 lanci casuali")

Distribuzioni discrete e funzioni R

Uniforme

Esempio: lancio di un dado

layout(matrix(c(1,2,3,4), 2, 2))

plot(1:6, dunif(1:6, min=1, max=6), type = "s", ylab="dunif",
     xlab="La probabilità di ciascun esito")

plot(1:6, punif(1:6, min=1, max=6), type = "s", ylab="punif",
     xlab="La probabilità di un esito minore o uguale")

plot(seq(0, 1, by=0.2), qunif(seq(0, 1, by=0.2), min=1, max=6), type = "s",
     ylim = c(0,6), ylab="qunif", xlab="Suddivisione per percentili")

plot(1:6, table(floor(runif(100, min=0, max = 6))), type="h",
     ylim = c(0, 30), ylab="runif", xlab="La distribuzione di 100 lanci casuali")

Ipergeometrica

Esempio di classe con 30 persone, di cui 17 OK e 13 KO. Se ne interrogo cinque, quante probabilità ho di averne 0, 1, 2, 3, 4 o tutte e 5 OK?

layout(matrix(c(1,2,3,4), 2, 2))

plot(0:5, dhyper(0:5, m = 17, n = 13, k = 5), type = "s", ylab="dhyper",
     xlab="La probabilità di ciascun esito")

plot(0:5, phyper(0:5, m = 17, n = 13, k = 5), type = "s", ylab="phyper",
     xlab="La probabilità di un esito minore o uguale")

plot(seq(0, 1, by=1/5), qhyper(seq(0, 1, by=1/5), m = 17, n = 13, k = 5), type = "s", ylim = c(0,6), ylab="qhyper", xlab="Suddivisione per percentili")

plot(table(floor(rhyper(100, m = 17, n = 13, k = 5))), type="h",  ylab="rhyper", xlab="La distribuzione di 100 lanci casuali")

Binomiale

Esempio di classe con 30 persone, di cui 17 OK e 13 KO. Se ne chiamo uno alla volta in cinque materie diverse, quante probabilità ho di averne 0, 1, 2, 3, 4 o tutte e 5 OK?

layout(matrix(c(1,2,3,4), 2, 2))

plot(0:10, dbinom(0:10, size = 5, prob = 17/30), type = "s", ylab="dbinom",
     xlab="La probabilità di ciascun esito")

plot(0:10, pbinom(0:10, size = 5, prob = 17/30), type = "s", ylab="pbinom",
     xlab="La probabilità di un esito minore o uguale")

plot(seq(0, 1, by=1/10), qbinom(seq(0, 1, by=1/10), size = 5, prob = 17/30), type = "s", ylim = c(0,6), ylab="qbinom", xlab="Suddivisione per percentili")

plot(table(floor(rbinom(100, size = 5, prob = 17/30))), type="h",  ylab="rbinom", xlab="La distribuzione di 100 lanci casuali")

Poisson

Esempio di città con 300.000 persone, di cui malate 1/100.000. Quante probabilità ho di avere nella città 0, 1, 2, 3, 4… persone malate?

layout(matrix(c(1,2,3,4), 2, 2))

plot(dpois(1:10, lambda = 300000/100000), type = "s", ylab="dpois",
     xlab="La probabilità di ciascun esito")

plot(0:10, ppois(0:10, lambda = 300000/100000), type = "s", ylab="ppois",
     xlab="La probabilità di un esito minore o uguale")

plot(seq(0, 1, by=1/10), qpois(seq(0, 1, by=1/10), lambda = 300000/100000), type = "s", ylim = c(0,10), ylab="qpois", xlab="Suddivisione per percentili")

plot(table(floor(rpois(100, lambda = 300000/100000))), type="h",  ylab="rpois", xlab="La distribuzione di 100 lanci casuali")

Geometrica

Esempio: In Italia il 7,5% delle persone ha gruppo sanguigno B+. Se esamino 5 persone qual è la probabilità che una di loro abbia B+?

layout(matrix(c(1,2,3,4), 2, 2))

plot(dgeom(1:10, prob = 0.075), type = "s", ylab="dgeom",
     xlab="La probabilità di ciascun esito")

plot(0:100, pgeom(0:100, prob = 0.075), type = "s", ylab="pgeom",
     xlab="La probabilità di un esito minore o uguale")

plot(seq(0, 1, by=1/100), qgeom(seq(0, 1, by=1/100), prob = 0.075), type = "s", ylim = c(0,100), ylab="qgeom", xlab="Suddivisione per percentili")

plot(table(floor(rgeom(100, prob = 0.075))), type="h",  ylab="rgeom", xlab="La distribuzione di 100 lanci casuali")


Formule notevoli

Poisson (discreta)

PX=k=λkk!e

Valore atteso: λ

Varianza: λ

Uniforme

Nell'intervallo (a,b) la funzione ha probabilità

fx=1b-a

Valore atteso: (a+b)/2

Varianza:

b-a212

Normale

fx=12πσe-12x-μσ2

Questa formula incasinata deriva dalla funzione di Gauss

e-x2

il cui integrale da -∞ a +∞ è π. Per questo al denominatore, per fare in modo che la derivata della normale sia uno e non kπ, c'è 1/√π.

Inoltre la funzione è più o meno "gonfia" a seconda di σ, e più o meno "spostata" dallo zero a seconda di μ.

Valore atteso: μ (la curva è simmetrica)

Varianza: σ2

Binomiale

La distribuzione binomiale mostra la distribuzione di n estrazioni da un campione di tipo bianco/nero (solo due scelte chiaramente distinte) con reinserimento.

I parametri sono:

  1. x/q/pp/nn: uno o più valori richiesti
  2. n: il numero di estrazioni
  3. p: la probabilità dell'evento

Nell'esempio di 17 studenti maschi, considerati "successo" nell'esempio, e 13 studentesse (totale: 30 studenti), per sapere la probabilità di ottenere esattamente 2 maschi su 3 estrazioni con reinserimento, si utilizza:

> dbinom(2, 3, 17/30)
[1] 0.4174444

 

plot

La funzione plot prende come parametri:

  1. un vettore di valori da posizionare nell'asse x
  2. un vettore di valori da posizionare nel grafico, che dovrebbe essere di dimensione uguale al primo
  3. un tipo:
    • p => points
    • l => lines
    • h => histogram
    • s => steps
    • altri meno interessanti
  4. main = intestazione del grafico
  5. sub = piè di pagina del grafico
  6. xlab / ylab = etichette degli assi
  7. asp = proporzione y/x

Lezione 2, Esercizio 2

Un dado non truccato viene lanciato 6 volte.
b) Si calcoli la cardinalità dell'evento "si ottengono tre diversi valori, ciascuno due volte".

Su sei lanci è possibile ottenere valori a coppie uguali in

63

modi diversi (U = uguale, D = diverso)

U U D D D D
U D U D D D
U D D U D D
U D D D U D
U D D D D U
D U U D D D
D U D U D D
D U D D U D
D U D D D U
D D U U D D
D D U D U D
D D U D D U
D D D U U D
D D D U D U
D D D D U U

In quanti modi è possibile ottenere una coppia di numeri scelti tra sei lanciando un dado due volte?
62

In quanti modi è possibile ottenere una coppia di numeri scelti tra quattro lanciando un dado due volte?
42

In quanti modi è possibile ottenere una coppia di numeri scelti tra due lanciando un dado due volte?
22

La probabilità condizionata

La probabilità condizionata è la probabilità che avvenga un evento dopo che ne è avvenuto un altro non certo.

Per esempio, qual è la probabilità che un pacco contenga il premio pià grande dopo che si è aperto un altro pacco.

L'intuizione in questo caso gioca brutti scherzi: la probabilità infatti non è la stessa che ci sarebbe iniziando direttamente con la premessa già verificata!

Per esempio, quante probabilità ci sono di fare almeno un sei lanciando un dado due volte? E lanciandoli assieme? Se faccio sei al primo lancio, non lancerò il dado una seconda volta, quindi la probabilità lanciandoli assieme è 12/36 (=2/6), mentre lanciandoli di seguito è 1/6 + 5/36 = 11/36. La differenza è che lanciandoli assieme contemplo un caso in più, il 6-6, che non avrei se lanciassi i dadi di seguito.

La probabilità condizionata si indica con P(A|B), che significa "probabilità che si verifichi A dato per certo B".

La formula è

PA|B=PAPBPB

Riflessioni sulla distribuzione normale

fx=12πσe-12x-μσ2

Per oggi sono riuscito a scriverla. Riuscirò mai a capirla?

Distribuzione normale

Il senso sottostante a questa formula è che la distribuzione normale dipende dal valore medio e dalla varianza.

σ2 rappresenta la varianza. Più σ è grande e più c'è varianza, e quindi è più probabile trovare valori fuori dalla norma: la curva è quindi più piatta. Se invece σ è piccolo, la maggior parte dei valori sarà molto vicino alla media, e quindi la curva sarà più "appuntita". ±σ infatti sono i valori in cui stanno i due flessi della curva.

μ rappresenta il valore medio.

Il punto di partenza per comprendere questa funzione è e-x2 e il punto di partenza per questa è -x2: una parabola con il vertice in alto, che vale sempre meno di zero (tranne in 0,0). Elevare un valore per -x2 significa avere verso -∞ e +∞ valori sempre più piccoli in modo esponenziale, e avere 1 quando x=0. Abbiamo una curva a campana.

12πσ

è "solo" un fattore che riporta l'integrale improprio da -∞ e +∞ sempre a 1, sulla base della varianza: in pratica se la curva è più "piatta" per avere un integrale = 1 bisogna che sia più "alta".