Distribuzioni di probabilità Un po' di teoria Distribuzione di Poisson Considera un centralino telefonico. Tale centralino riceve in media 3600 telefonate al giorno. Vogliamo calcolare la probabilità P di ottenere 50 telefonate in un'ora, ovvero vogliamo calcolare 3600 telefonate =150 calcolerò P(x) con P(x=50). Definita la frequenza λ= 24h In modo analogo posso risolvere il seguente problema. Lancio una moneta (in media!!!) 2 volte in un'ora. Quale sarà la probabilità che in un'ora esca 3 volte croce? In questo caso la probabilità singola che esca croce è di p=0,5 il numero di lanci è 2, quindi λ=n⋅p=1 . Quindi P(3)=0,0613. È un evento non così frequente ma non impossibile! Cosa diversa è fare 2 lanci e calcolare la probabilità che esca tre volte croce (evento impossibile!!!). Quest'ultimo problema è descritto da una distribuzione binomiale e non da una Poissoniana! Se però n è grande e p è piccolo allora si può vedere che la distribuzione binomiale è ben approssimata da una distribuzione di Poisson, molto più comoda da calcolare! PROBLEMI Al computer Distribuzione Binomiale Consideriamo un esempio. Lanciamo un dado a 6 facce 5 volte. Vogliamo studiare la distribuzione di probabilità della variabile aleatoria x corrispondente all'evento “Il 3 esce x volte.”. La probabilità del singolo lancio è p=1/6, il numero di lanci è n=5. Simuliamo il problema per un numero K consistente di volte (K=10000). Ogni 5 lanci contiamo quante volte è uscito il 3 e aggiorniamo i dati di un istogramma (vettore) che conta quante volte è uscito il 3 in una giocata (ovvero in 5 lanci). Sarà un vettore da 6 posti dato che in v[0] memorizzeremo quante volte non è uscito mai 3, in v[1] quante volte è uscito una sola volta, … .in v[5] quante volte è uscito sempre. Alla fine di tutte le nostre K giocate possiamo stampare l'istogramma. Attenzione che questo non sarà la distribuzione di probabilità totale, dato che non è normalizzato!! Infatti la somma di tutte le P dovrà fare 1. Dovremo quindi dividere ogni elemento di V per K. A questo punto il vettore V rappresenterà nel limite K →∞ la distribuzione di Bernulli. Per il singolo lancio posso generare un evento con probabilità 1/6 in questi 2 modi: • genero un numero intero x fra 1 e 6, e considero l'evento verificato solo se x=3 x=rand()%6+1; if(x==3){...} • genero un numero reale fra 0 e 1 distribuito uniformemente. Se è minore di 1/6 considero l'evento verificato. Questo metodo posso chiaramente utilizzarlo anche per riprodurre eventi con probabilità irrazionali. x=(float)rand()/RAND_MAX; if(x<(1./6.)){...} Distribuzione di Poisson Per simulare una distribuzione di Poisson consideriamo l'esempio del centralino telefonico riportato precedentemente. Tale centralino riceve in media 3600 telefonate al giorno. Vogliamo calcolare la distribuzione di probabilità P(x) di ottenere x telefonate in un'ora. Posso altresì dire che sto considerando n=3600 eventi indipendenti che avvengono ognuno con una probabilità p=1/24 , ovvero λ=n p=150 . Procederò quindi in questo modo. Andrò a generare n=3600 telefonate. Di ogni telefonata sceglierò in modo casuale in quale ora si verifica: posso farlo in 2 modi ora=rand()%24; //scelgo un'ora intera oppure ora=(int)((float)rand()/RAND_MAX * 24 ); //scelgo un tempo nel continuo 0-1 , quindi in 0-24 e poi lo tronco Per ognuna delle n telefonate andrò ad incrementare di una unità l'elemento “ora” del vettore tel[ora]. Questo vettore rappresenterà quante telefonate ho ricevuto la prima, la seconda, la terza … la 24aora. A questo punto vado a conteggiare in quante delle 24 ore ho non ho avuto telefonate ed ottengo p[0], in quante delle 24 ore ho ottenuto 1 telefonata ottenendo p[1], .. in quante ne ho ottenute 3600 trovando p[3600]. In questo modo ottengo una distribuzione di Poisson p un po' povera. Dovrò ripetere tante volte quanto sopra, incrementando il vettore p con le nuove simulazioni per ottenere una distribuzione di Poisson che si avvicini sempre meglio alla distribuzione di Poisson teorica. Chiaramente il vettore p dovrà essere normalizzato in modo tale che la somma di tutti i p sia 1. Si noti come il fatto di limitare il vettore v a sole 24 ore e n a sole 3600 telefonate approssimi in realtà la nostra simulazione ad un qualcosa che più assomiglia ad una distribuzione binomiale, anche se in modo più che ragionevole! Per simulare una stessa distribuzione di Poisson, ma in modo più accurato, basterebbe semplicemente aumentare n e diminuire p mantenendo inalterata la frequenza λ . Per esercizio prova a fare il grafico di una distribuzione Binomiale con evento con probabilità singola p considerando n prove consecutive; quindi simula l'evento con una distribuzione di Poisson con λ=n⋅p Noterai che le due distribuzioni sono sostanzialmente le stesse quando n è grande e piccolo. Per n piccolo e p grande noterai però (come nell'esempio delle due monete sopra riportato) una grossa differenza!