Applicazioni con generatori di numeri casuali - Istruzioni per l uso - Simulazione numerica di un esperimento - Generatori di numeri casuali: cenni sulla teoria - Generazione di numeri casuali: rumore di tipo uniforme - Generazione di numeri casuali: rumore gaussiano - Comandi avanzati generatori di numeri casuali Istruzioni per l uso Nelle attività di laboratorio svolte con Matlab si intende affrontare in modo applicativo concetti relativi a Teoria della probabilità Stima dei parametri 2 Biotecnologici Parte 1 1
Istruzioni per l uso Matlab dispone di una serie di pacchetti aggiuntivi, specifici per differenti applicazioni, che ne aumentano le potenzialità, rispetto alla versione base. Purtroppo, i pacchetti non sono gratuiti. Di seguito, si sfrutteranno due pacchetti (Toolboxes): Il Toolbox Statistics Il Toolbox Optimization Saranno anche usati programmi predefiniti costruiti ad hoc per i problemi specifici Le fonti dei programmi sono Stixbox (pacchetto di file Matlab dedicato all analisi statistica) http://www.maths.lth.se/matstat/stixbox Programmi disponibili dal sito di Matlab Altro 3 Istruzioni per l uso Per evitare confusione tra i comandi disponibili nella versione base (utilizzabili quindi con qualunque versione di Matlab) e quelli previsti solo nei toolbox di statistica e ottimizzazione, si userà una legenda in fondo al lucido. Quando si farà riferimento ai comandi tradizionali della versione base di Matlab, sarà riportata sul lucido la scrittura, come nella presente diapositiva. 4 Biotecnologici Parte 1 2
Istruzioni per l uso Quando si sfrutteranno comandi avanzati, relativi ai pacchetti aggiuntivi, sul lucido sarà indicata l etichetta Toolbox statistics e/o Toolbox optimization, come nella diapositiva corrente. Toolbox statistics 5 Istruzioni per l uso Quando si sfrutteranno programmi forniti dal docente, sul lucido sarà indicata l etichetta Programmi WEB, come nella diapositiva corrente. Programmi Web 6 Biotecnologici Parte 1 3
Istruzioni per l uso Nei lucidi di teoria, non relativi a comandi specifici di Matlab sarà usata l etichetta Teoria. Questo tipo di visualizzazione sarà sfruttato anche nelle lezioni successive. Teoria 7 Simulazione numerica di un esperimento Si è visto come una misura connessa ad un esperimento sia inevitabilmente affetta da un errore legato a molteplici fattori che non possono essere controllati dallo sperimentatore. Di conseguenza, il risultato di un esperimento non fornisce mai lo stesso risultato, ovvero il valore vero di una grandezza misurata. Ogni esperienza è affetta da una deviazione dal valore vero che cambia ogni volta che l esperimento è ripetuto. Teoria 8 Biotecnologici Parte 1 4
Simulazione numerica di un esperimento Schema di un esperimento: Valore vero della quantità che si sta misurando. + Risultato della singola misura, affetto dall errore sperimentale Errore nella misura che implica una deviazione dal valore esatto. Tale errore cambia di volta in volta nelle misure, per cui due esperienze diverse assumono valori differenti. Teoria 9 Simulazione numerica di un esperimento Come simulare con il computer l errore sperimentale. L errore sperimentale può essere simulato con Matlab usando un generatore di numeri casuali. Il seguente comando genera un numero casuale compreso tra 0 e 1 >> rand ans = >> 0.8147 10 Biotecnologici Parte 1 5
Generatori di numeri casuali Cenni sulla teoria Un computer non è in grado di generare dei numeri casuali Esistono dei programmi che sono in grado di generare delle successioni di numeri che sono apparentemente non correlati tra loro. I numeri così generati sono detti pseudo-casuali Teoria 11 Generatori di numeri casuali Cenni sulla teoria Esempio di generatore di numeri pseudo-casuali x i 1 c xi r mod m Dove la funzione mod (modulo) restituisce il resto di una divisione. 9.2 mod 1.2 4 Una volta ottenuto il valore x i+1 questo viene utilizzato per calcolare x i+2 e così via. Il valore x 0 è chiamato seme Teoria 12 Biotecnologici Parte 1 6
Generatori di numeri casuali Cenni sulla teoria Esempi di valori comunemente usati (generatore di numeri casuali lineare): c = 16.807 r = 0 m = 2 31-1 Matlab riparte sempre dallo stesso seme iniziale quando il programma è riavviato. Teoria 13 Generatori di numeri casuali Cenni sulla teoria Dal grafico si può vedere come la successione dei numeri sia apparentemente casuale 1 0.9 0.8 0.7 0.6 risultato 0.5 0.4 0.3 0.2 0.1 Teoria 0 0 2 4 6 8 10 12 14 16 18 20 esecuzioni generatore di numeri casuali 14 Biotecnologici Parte 1 7
Generatori di numeri casuali - Piccolo accorgimento Per evitare che si ripetano gli stessi numeri casuali sui diversi computer si è creato un semplice m-file che ha lo scopo di generare dei numeri casuali partendo da un seme che (si spera) sia distinto per tutti gli studenti Il file si chiama startran.m Istruzioni: 1. Lavorare nella cartella in cui è stato copiato il file in questione 2. Digitare nella finestra di comando principale: >> startran Seguire le istruzioni riportate durante l esecuzione 15 Generatori di numeri casuali Applicazioni I generatori di numeri casuali hanno molteplici applicazioni, ad esempio: Nel criptare codici, ovvero associare ad una successione di numeri e/o simboli una altra successione apparentemente scorrelata (codici GSM, conto corrente, password di accesso etc. etc.). Nelle simulazioni numeriche su scale microscopiche, in cui il numero casuale simula: La casualità della struttura a livello molecolare l agitazione termica delle molecole altro (metodi di Montecarlo). Nella simulazione dell errore sperimentale: Per analizzare la performance di stimatori statistici Nello studio dell affidabilità di sistemi di controllo automatico di processi Altro 16 Teoria Biotecnologici Parte 1 8
Generazione di numeri casuali Con Matlab è possibile generare vettori di numeri casuali: >> y = rand(10,1); >> Con questa scrittura si è scritto un vettore y di 10 righe per una colonna, di numeri casuali compresi tra 0 e 1. È possibile rappresentare il vettore di numeri casuali >> plot(y); >> 17 Statistica descrittiva È possibile calcolare il valore medio del vettore y con il comando mean: >> mean(y) ans = 0.5334 Espressione analitica della media y N y i 18 Biotecnologici Parte 1 9
Statistica descrittiva Si può valutare la dispersione dei dati con il comando var (varianza): >> var(y) ans = 0.0720 Espressione analitica della varianza: n 2 yi y 2 i 1 s n 1 È possibile anche calcolare la radice quadrata della varianza (ovvero la deviazione standard) con il comando std 19 Statistica descrittiva Il seguente comando: >> hist(y,5) >> Restituisce un diagramma delle frequenze assolute, ovvero un istogramma in cui gli elementi di y sono suddivisi in 5 intervalli equispaziati e associa a ciascuno di essi il numero di elementi di y che cadono in ciascun intervallo Esercizio: creare un vettore di numeri causali di dimensione 100 1 e ripetere i passi precedenti. A tal proposito si possono considerare 10 intervalli equispaziati. 20 Biotecnologici Parte 1 10
descrittiva Il seguente comando: Statistica >> histo(y,5) >> Restituisce un istogramma in cui gli elementi di y sono suddivisi in 5 intervalli equispaziati e associa a ciascuno di essi il numero di elementi di y che cadono in ciascun intervallo Esercizio: creare un vettore di numeri causali di dimensione 100 1 e ripetere i passi precedenti. A tal proposito si possono considerare 10 intervalli equispaziati. Programmi WEB (Stixbox) 21 Rumore di tipo uniforme Sintassi del comando histo histo(x, M, odd, scale) Variabile X che definisce il set di dati di cui si vuole rappresentare l istogramma Numero di intervalli in cui si vuole rappresentare il campione di dati Variabile per il posizionamen to degli intervalli (per comodita si pone = 0) L ultimo argomento dovrebbe essere posto uguale a 1 per avere area unitaria sotto l istogramma Programmi WEB (Stixbox) 22 Biotecnologici Parte 1 11
Rumore di tipo uniforme Da notare che all aumentare delle dimensioni del vettore numeri casuali una struttura nell istogramma risulta sempre più chiara. >> y = rand(10000,1); >> histo(y,15) >> Si può intuire che il numero casuale è di tipo uniforme: la probabilità che esso assuma valori nell intervallo [0, 1] è la stessa in tutto l intervallo e non ci sono dei valori che sono più ricorrenti di altri. Programmi WEB (Stixbox) 23 Rumore di tipo uniforme Con la seguente scrittura si ottiene un diagramma di tale tipo: 1.4 >> y = rand(10000,1); >> histo(y,15,0,1) >> 1.2 1 0.8 L area sottesa dall istogramma e pari a 1 0.6 0.4 0.2 0-0.2 0 0.2 0.4 0.6 0.8 1 1.2 Esercizio: ripetere i comandi con differenti intervalli di campionamento. Dal punto di vista qualitativo che si osserva? Programmi WEB (Stixbox) 24 Biotecnologici Parte 1 12
1.5 Rumore di tipo uniforme È possibile introdurre una funzione densità di probabilità (pdf) del rumore di tipo uniforme: 1.0 0.5 f z 1 0 z 0,1 altrove 0.0 0 a 1 Y b L area segnata in celeste rappresenta la probabilità che si osservi un numero casuale il cui valore sia compreso tra a e b. Inoltre la pdf è una funzione normalizzata: Teoria 1 0 f z dz 1 25 Rumore di tipo uniforme Si può osservare che, all aumentare del numero di prove, anche la media assume dei valori sempre più precisi >> y = rand(10,1); >> mean(y) 0.2656 >> y = rand(100,1); >> mean(y) 0.4805 >> y = rand(1000,1); >> mean(y) 0.5017 Media Stimata 0.51 0.5 0.49 0.48 0.47 0.46 0.45 0.44 0.43 0.42 0 200 400 600 800 Dimensione campione numeri casuali Biotecnologici Parte 1 13
Rumore di tipo uniforme Lo stesso vale per la varianza: >> y = rand(10,1); >> var(y) 0.0720 >> y = rand(100,1); >> var(y) 0.0737 >> y = rand(1000,1); >> var(y) 0.0889 Stima Varianza 0.095 0.09 0.085 0.08 0.075 0 100 200 300 400 500 600 700 800 900 1000 Dimensione Campione Numeri Casuali Rumore di tipo uniforme Si può osservare che, all aumentare del numero di prove, anche la media e la varianza assumono dei valori sempre più precisi >> mean(y) ans = 0.5006 >> var(y) ans = 0.083 0.5 1/12 28 Biotecnologici Parte 1 14
Rumore di tipo uniforme Il rumore di tipo uniforme non risulta essere adeguato per la simulazione del rumore sperimentale. È plausibile, in un esperimento, che siano più ricorrenti piccole deviazioni dal valore vero, mentre errori significativi siano via via meno frequenti allontanandosi dal trend centrale. 29 Rumore di tipo uniforme Esercizio: Si consideri il caso della somma di due rumori di tipo uniforme: Z=Y 1 +Y 2 A tal proposito si generino due vettori di numeri casuali (di dimensioni notevoli, in modo da descrivere le proprietà asintotiche) e si faccia la media di ciascuna coppia degli elementi dei vettori y 1 e y 2 30 Biotecnologici Parte 1 15
Somma di rumori di tipo uniforme Quale è l intervallo in cui z può assumere valori? Ci aspettiamo una distribuzione dei valori ottenuti di z ancora uniforme? Si analizzi il vettore Z risultante. In particolare si valuti: La media La varianza L istogramma delle frequenze (si considerino 20 intervalli equispaziati) 31 Somma di rumori di tipo uniforme 1.4 Risultati: La variabile z assume valori compresi tra 0 e 2 La distribuzione assume una forma triangolare. 1.2 1 0.8 0.6 0.4 0.2 >> mean(z) ans = 1.0046 m m m Z Y1 Y 2 >> var(z) ans = - Programmi WEB (Stixbox) 0-0.5 0 0.5 1 1.5 2 2.5 0.1659 2 Z s s 2 Y 1 s 32 2 Y 2 Biotecnologici Parte 1 16
Somma di rumori di tipo uniforme Esercizio: Ripetiamo la stessa procedura nel caso della somma di più numeri casuali Si consideri il caso della somma di otto rumori di tipo uniforme: Z=Y 1 +Y 2 +Y 3 +Y 4 +Y 5 +Y 6 +Y 7 +Y 8 Si generano otto vettori di numeri casuali (di dimensioni notevoli, in modo da descrivere le proprietà asintotiche) e si faccia la somma dei vettori. Ancora, quale è la media del nuovo campione di dati? Quale è la varianza? 33 Somma di rumori di tipo uniforme L istogramma che si dovrebbe osservare è il seguente: 0.5 0.45 0.4 0.35 0.3 0.25 0.2 0.15 0.1 Tale distribuzione, al tendere del numero di esperienze ad infinito, tende ad una curva a campana, che prende il nome di Gaussiana 0.05 0 0 1 2 3 4 5 6 7 8 - Programmi WEB (Stixbox) 34 Biotecnologici Parte 1 17
Somma di rumori di tipo uniforme Si è appena visto un caso particolare del Teorema del Limite Centrale se le sorgenti di errore sono infinite ed indipendenti (e non vi sono errori di natura sistematica), la funzione di probabilità di una variabile aleatoria è una distribuzione normale (o altrimenti detta funzione di Gauss) Dato che nelle misure sperimentali le sorgenti di errore sono infinite, è ragionevole supporre che le deviazioni dalla tendenza centrale seguono una probabilità di tipo gaussiano Teoria 35 Teorema del limite centrale Un altro demo interessante per illustrare il teorema del limite centrale è: >> illustration_clt( type ) dove type è il tipo di distribuzione su cui viene applicato il teorema: exp : somma di VA di tipo esponenziale unif : somma di VA di tipo uniforme Programmi WEB 36 Biotecnologici Parte 1 18
Funzione densità di tipo Gaussiano Espressione analitica per la funzione densità di probabilità Gaussiana. f Y 1 1 exp 2 s 2 Y y m 2 s Y 2 Y Il grafico di tale funzione è una curva a campana simmetrica rispetto a y=m Y Il parametro s 2 coincide con la varianza che si otterrebbe per un numero infinito di prove sperimentali. Teoria 37 Rumore di tipo Gaussiano Nel caso di un rumore di tipo gaussiano, si sta ipotizzando che piccole deviazioni dal valore vero siano più ricorrenti (ovvero più probabili) di grosse deviazioni (che sono meno probabili). In questo caso la funzione densità di probabilità assume la seguente forma 1.5 1.25 1 0.75 Varianza s 2 = 0.25 Varianza s 2 = 1 0.5 0.25 Teoria -2-1 1 2 3 4 38 Biotecnologici Parte 1 19
Rumore di tipo Gaussiano Con Matlab è possibile una rappresentazione della funzione densità di probabilità di tipo gaussiano y = dnorm(x, Mean, StandardDeviation) Output dell operazione: Restituisce il valore che assume la funzione densità di probabilità in corrispondenza della x Valore della x per cui intendo valutare la funzione (può anche essere un vettore) Parametro Media (m) della funzione Parametro Deviazione Standard ( s) della funzione Programmi WEB (Stixbox) Rumore di tipo Gaussiano Si consideri di nuovo l ultimo campione di numeri casuali generato L obiettivo è confrontarlo con una distribuzione di tipo gaussiano A tal riguardo si rappresenti l istogramma delle densità di frequenza per il campione di dati (se non lo si è già fatto) >> histo(z,20,0,1) L aggiunta dell opzione 1 alla fine degli argomenti Posso valutare media e deviazione standard del campione >> med = mean(z) >> sigma = std(z) numero infinito di dati Programmi WEB (Stixbox) della funzione histo, permette di avere un istogramma di area unitaria N.B. Da notare che abbiamo gli strumenti per calcolare il valore teorico di media e varianza asintotiche per un Biotecnologici Parte 1 20
Rumore di tipo Gaussiano Eseguendo i seguenti comandi è possibile confrontare la curva Gaussiana corrispondente al set di dati >> x = [1:0.01:7]; (creazione vettore ascisse in cui valutare la Gaussiana) >> y = dnorm(x,med,sigma); (creazione valori della Gaussiana corrispondenti alla x) >> hold on (permette la sovrapposizione dei grafici nella stessa figura, per disattivarlo: hold off) >> plot(x,y,'r') Programmi WEB (Stixbox) Rumore di tipo Gaussiano Il seguente comando: >> randn(1,1) ans = -0.4326 Genera un numero casuale di tipo gaussiano, di media 0 e varianza 1 (ovvero una gaussiana di tipo standard). Domanda: era verosimile se il generatore mi avesse restituito il valore (-4.5)? 42 Biotecnologici Parte 1 21
Comandi avanzati per i generatori È possibile sfruttare generatori di numeri casuali più raffinati, ad esempio: >> randunifc(a,b,n) Restituisce un vettore di n numeri casuali di tipo uniforme compreso tra a e b. Se n è omesso, il comando restituisce un solo numero casuale. Programmi WEB 43 Comandi avanzati per i generatori Con il Toolbox Statistics : >> unifrnd(-1,1) ans = -0.5377 Restituisce un numero casuale di tipo uniforme compreso tra -1 e 1. In genere, unifrnd(a,b,m,n) restituisce una matrice di dimensioni m n di numeri casuali compresi tra a e b. Toolbox statistics 44 Biotecnologici Parte 1 22
Comandi avanzati per i generatori Il seguente comando: >> rnorm(n, m, s) Genera un vettore colonna di n numeri casuali di tipo gaussiano associato ad una funzione densità di probabilità di media m e deviazione standard s. Programmi WEB (Stixbox) 45 Comandi avanzati per i generatori Il seguente comando: >> normrnd(-1,3) ans = 1.9739 Genera un numero casuale di tipo gaussiano associato ad una funzione densità di probabilità di media -1 e deviazione standard (la radice quadrata della varianza) 3. In genere, normrnd(a,b,m,n) restituisce una matrice di dimensioni (m n) di numeri casuali di tipo gaussiano di media a e deviazione standard b. Toolbox statistics 46 Biotecnologici Parte 1 23
Comandi avanzati per i generatori Esercizio: Generare un set di 10000 numeri casuali provenienti da una Gaussiana di media 1 e deviazione standard 1 Rappresentare i risultati con un istogramma Un interessante rappresentazione grafica puo essere ottenuta con il seguente comando. >> plotdens(x); >> hold on >> histo(x,50,0,1) >> Programmi WEB (Stixbox) 47 Comandi avanzati per i generatori Esercizio Si generino dei vettori di numeri casuali di tipo gaussiano di media 2 e deviazione standard 1.5 Le dimensioni dei vettori siano 10, 100, 1000, 10000. Si stimino per ciascuno dei vettori: I valori medi del campione I valori della varianza All aumentare delle dimensioni del campione le stime tendono ad un valore asintotico? Quale è il valore cui stanno tendendo? 48 Biotecnologici Parte 1 24
Esercizio Si generi un vettore x (di dimensioni elevate) di numeri casuali provenienti da una variabile aleatoria di tipo normale di media m=0 e varianza s 2 =1 Si considerino le seguenti trasformazioni dei numeri casuali X: y 1 =1+2*x y 2 = x 2 y 3 = exp(x) Quali valori possono assumere i nuovi vettori generato? Rappresentare in un opportuno istogramma i nuovi vettori. Commentare i risultati - Programmi WEB (Stixbox) 49 Comandi avanzati per i generatori È utile ricordare che è possibile generare un numero casuale relativo ad una qualunque gaussiana utilizzando semplicemente il comando randn della versione base di Matlab sfruttando le proprietà delle trasformazioni lineari per le variabili aleatorie. Se y è un numero casuale generato da una gaussiana di media 0 e varianza 1, il valore z = m + s*y È un numero casuale proveniente da una distribuzione di tipo gaussiano di media m e deviazione standard s. 50 Biotecnologici Parte 1 25
Comandi avanzati per i generatori Altri generatori di numeri casuali: >> rchisq(m,v) Restituisce un vettore colonna di m numeri casuali da una distribuzione di tipo c 2 a v gradi di libertà. >> rt(m,v) Restituisce un vettore colonna di m numeri casuali da una distribuzione T-student a v gradi di liberta >> rf(m, v1,v2) Restituisce un vettore colonna di m numeri casuali generati da una distribuzione di Fisher a v 1 e v 2 gradi di libertà Programmi WEB (Stixbox) 51 Comandi avanzati per i generatori Altri generatori di numeri casuali: >> chi2rnd(v,m,n) Restituisce una matrice m n di numeri casuali da una distribuzione di tipo c 2 a v gradi di libertà. >> trnd(v,m,n) Restituisce una matrice m n di numeri casuali da una distribuzione T-student a v gradi di liberta >> frnd(v1,v2, m,n) Restituisce una matrice m n di numeri casuali generati da una distribuzione di Fisher a v 1 e v 2 gradi di libertà Toolbox statistics 52 Biotecnologici Parte 1 26
Comandi avanzati per i generatori Per una panoramica completa dei generatori di numeri casuali con delle interessanti rappresentazioni grafiche si può usare il comando: >> randtool Altro generatore di numeri casuali per un ampia classe di distribuzioni statistiche: >> randraw Toolbox statistics - Programmi WEB 53 Come sfruttarli In alcune delle sezioni successive, i generatori di numeri casuali saranno ampiamente sfruttati per simulare l errore sperimentale. È possibile in questo modo effettuare delle analisi statistiche su modelli già noti a priori, sporcando il segnale con rumore anche esso noto In questo modo, è possibile verificare l efficienza dei metodi statistici usati 54 Biotecnologici Parte 1 27