La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Laboratorio Processi Stocastici

Presentazioni simili


Presentazione sul tema: "Laboratorio Processi Stocastici"— Transcript della presentazione:

1 Laboratorio Processi Stocastici
Annalisa Pascarella

2 Algoritmo istogramma INF = -4; SUP = 4; DELTA = 0.4;
NUM_INT = (SUP-INF)/DELTA; % numero di intervalli contatore = zeros(1,NUM_INT) % inizializziamo il contatore; for i = 1:size(data,2) % per ogni dato for j = 1: NUM_INT % per ogni intervallo if data(i)>INF+(j-1)*DELTA && data(i)<INF+j*DELTA contatore(j) = contatore(j)+1; end VALORI = INF+DELTA/2 : DELTA : SUP-DELTA/2 figure bar(VALORI, contatore)

3 Algoritmo istogramma (efficiente)
L’algoritmo appena scritto fa un ciclo di troppo... INF SUP 1 2 k Osserviamo che il singolo valore data(i) INF < data(i) < SUP 0 < data(i)-INF < SUP-INF=DELTA*NUM_INT 0 < (data(i)-INF)/DELTA < NUM_INT

4 Algoritmo istogramma (efficiente)
INF = -4; SUP = 4; DELTA = 0.4; NUM_INT = (SUP-INF)/DELTA; % numero di intervalli contatore = zeros(1,NUM_INT) % inizializziamo il contatore; for i = 1:size(data,2) % per ogni dato j = ceil((data(i)-INF)/DELTA); contatore(j) = contatore(j) + 1; end VALORI = INF+DELTA/2 : DELTA : SUP-DELTA/2 figure bar(VALORI, contatore)

5 Istogrammi e MATLAB Esiste un comando che fa l’istogramma delle frequenze dei valori di un vettore data = load(‘dato_per_istogramma.dat’) hist(data) hist(data,50) istogramma in 50 intervalli [counts bins] = hist(data,50) i conteggi in counts, i punti medi degli intervalli in bins

6 Numeri casuali

7 Un po’ di storia I numeri casuali sono utilizzati per costruire simulazioni di natura probabilistica di fenomeni fisici: reattori nucleari, traffico stradale, aerodinamica problemi decisionali e finanziari: econometria, previsione Dow-Jones informatica: rendering varia natura: videogiochi Il legame che esiste tra il gioco e le simulazioni probabilistiche è sottolineato dal fatto che a tali simulazioni è dato il nome di metodi Monte Carlo I generatori di numeri casuali sono impiegati in molti campi, ma quelli che a noi interessano in particolar modo sono, nell’ambito della simulazione, le tecniche di Montecarlo e il campionamento statistico. Esistono molti processi fisici che possono essere considerati generatori di numeri casuali e una lunga storia di costruzione di macchine per generare “numeri a caso” per la simulazione di sistemi stocastici. Le prime macchine di un certo rilievo furono costruite per studiare la risposta delle centrali telefoniche alla variazione della domanda; altre furono costruite in seguito per studi riguardanti la congestione del traffico. Ma la “macchina” più caratteristica è certamente la roulette del casinò di Montecarlo (dal quale deriva il nome dei suddetti metodi). Infatti, le macchine di tipo meccanico si basano, proprio come la roulette, sul principio di un disco diviso in settori uguali e numerati, che veniva fatto ruotare da un motore e arrestato dopo un tempo arbitrario, accettando come numero casuale il numero del settore in corrispondenza di un indice. Le macchine di tipo elettronico, invece, sfruttano un generatore di impulsi pilotato da una sorgente di rumore (agitazione termoionica, sorgente radioattiva, ecc…) in modo da avere impulsi di periodo casuale; gli impulsi vengono contati ciclicamente da 0 a 9 e il contatore viene letto ad intervalli fissati. Usando n sorgenti di rumore in parallelo, e altrettanti contatori, è possibile ottenere numeri random a n cifre decimali. Un metodo più classico è quello dell’urna contenente palline numerate le quali, prima di ogni estrazione, vengono mescolate; ogni pallina estratta viene reinserita nell’urna per l’estrazione successiva. Esistono poi delle tavole contenenti milioni di numeri casuali, ma come può essere facile immaginare, la loro gestione è certamente onerosa in termini di tempo e di spazio, anche se realizzata mediante l’uso di computer. Perciò si sono sviluppati dei metodi per la generazione di sequenze casuali basate sull’uso di formule matematiche.

8 Un po’ di storia L’idea di utilizzare in modo sistematico simulazioni di tipo probabilistico per risolvere un problema di natura fisica viene generalmente attribuita al matematico polacco Ulam Ulam fu uno dei personaggi chiave nel progetto americano per la costruzione della bomba atomica durante la II guerra mondiale il progetto richiedeva la risoluzione di un enorme numero di problemi incredibilmente complessi l’idea di utilizzare simulazioni casuali per risolvere tali problemi gli venne giocando a carte

9 Cos’è un numero casuale?
Lancio di un dado: l’imprevedibilità del numero ottenuto come punteggio conferisce allo stesso una forma di casualità Diversi metodi per generare numeri casuali hardware calcolatore: il calcolatore è un oggetto puramente deterministico e quindi prevedibile, per cui nessun calcolatore è in grado di generare numeri puramente casuali, ma solo numeri pseudo-casuali ossia numeri generati da algoritmi numerici deterministici in grado di superare una serie di test statistici che conferiscono a tali numeri un’apparente casualità Numeri pseudo-casuali: Sequenze di numeri che, anche se generati con un algoritmo (deterministico) sembrano una successione di valori indipendenti di una variabile casuale uniforme su (0,1). Avere un buon simulatore di numeri casuali uniformemente distribuiti su (0,1) `e indispensabile per avere buoni risultati nelle simulazioni di qualunque tipo. Occorre che questi algoritmi superino dei test di casualita. Noi supporremo di avere un buon generatore di numeri casuali che possano essere considerati come valori di una successione di variabili casuali indipendenti e distribuite uniformemente su (0, 1).

10 Criteri I fattori che determinano l’accettabilità di un metodo sono essenzialmente i seguenti: i numeri della sequenza generata devono essere uniformemente distribuiti (cioè devono avere la stessa probabilità di presentarsi); i numeri devono risultare statisticamente indipendenti; la sequenza deve poter essere riprodotta; la sequenza deve poter avere un periodo di lunghezza arbitraria; il metodo deve poter essere eseguito rapidamente dall’elaboratore e deve consumare poco spazio di memoria. Si sono sviluppati dei metodi per la generazione di sequenze casuali basate sull’uso di formule matematiche. Il progresso tecnologico, che ha consentito di aumentare in modo considerevole la memoria di un elaboratore, ha ovviamente reso inutile il requisito 5. Nel caso di generazione mediante formule matematiche, i numeri vengono calcolati in modo completamente deterministico e, essendo sempre necessario impostare un numero iniziale (seme), avviene che a parità di seme il metodo fornisca la stessa sequenza soddisfacendo quindi il requisito 3 (ciò è molto importante, poiché talvolta nella simulazione si rende necessario poter ripetere un esperimento nella sua totalità e a parità di condizioni). Tuttavia, la generazione mediante formule matematiche invalida il requisito 2 data la natura deterministica del modello (formula matematica) e del mezzo impiegato per applicarlo (computer). Quello però che si può fare è generare sequenze di valori le cui caratteristiche siano il più possibile assimilabili a quelle della variabile uniforme (prima fra tutte la caratteristica dell’indipendenza tra le determinazioni della variabile), verificandole mediante l’applicazione di opportuni test, tra i quali ricordiamo il test chi-quadro. Tali sequenze allora si chiameranno pseudo-casuali e, anche laddove ci riferiremo a tali sequenze con l’aggettivo “casuali” intenderemo sempre dire “pseudo-casuali”.

11 Metodo middle-square Genera numeri pseudo-casuali distribuiti in modo uniforme In tale distribuzione uniforme ogni possibile numero in un determinato intervallo è ugualmente probabile ad es. se lanciamo un dato un certo numero di volte ognuna delle facce da 1 a 6 si presenterà circa 1/6 delle volte originando così una successione uniforme di numeri casuali compresi tra 1 e 6 Nei primi anni dell’era dei computer (1946) John von Neumann suggerì il famoso metodo middle-square per generare numeri pseudo-casuali distribuiti in modo uniforme. Oggi il metodo middle-square ha un’importanza solamente storica ma nella sua semplicità evidenzia un aspetto molto importante nella generazione di numero pseudo-casuali al computer, ossia la necessità di avere a disposizione molti numeri casuali ed in modo rapido La generazione dei numeri casuali è troppo importante per essere lasciata al caso… (J.Von Neumann)

12 Metodo middle-square Supponiamo di voler generare un numero casuale di 4 cifre Il metodo richiede come tutti i generatori di numeri casuali un valore iniziale, detto seme, dal quale vengono generati i successivi valori Ad es. a partire da 1234 avente 4(c) cifre eleviamo al quadrato e otteniamo le 8 (2c) cifre consideriamo solo le 4 (c) cifre di mezzo 5227 ripetiamo il procedimento ottenendo e 3215 e così via Ogni nuovo numero è determinato univocamente dal predecessore. Ogni successione di numeri generata da questo algoritmo si ripeterà prima o poi. Il numero di numeri della sequenza prima che intervenga una ripetizione è detta periodo della sequenza La successione generata non potrà essere casuale ma avrà solo il carattere di apparente casualità La lunghezza del periodo può essere considerata una misura della bontà del generatore di numeri pseudo-casuali Il metodo può degenerare in sequenze con periodi molto brevi. Ad es. a partire dal valore 0 la sequenza ha sempre periodo 1, oppure partendo con 43 e numeri a 2 cifre otteniamo la sequenza 43, 84, 05, 02, 00, 00, …

13 Esempio Simulazione del lancio di un dado
definiamo il risultato ottenuto come d =1+[5ms/10^4] dove ms è il numero generato tramite il metodo middle-square simulando 10 lanci consecutivi a partire dal seme 8022 otteniamo risultati che sembrano abbastanza realistici basta aumentare il numero di lanci per ottenere risultati non soddisfacenti (la successione ha periodo 38) Utilizziamo il metodo middle-square per effettuare un semplice esperimento di simulazione

14 Generatore lineare congruenziale
Il metodo LCG ha bisogno di un seme per generare la sequenza di numeri pseudo-casuiali secondo la seguente regola deterministica xn+1 = (axn+c)mod m , n>=0 con a,c ed m opportuni numeri interi costanti xn+1 assume valori compresi tra 0, …, m-1 Ad es. per a=13, c=0 (generatore puramente moltiplicativo) ed m=31 partendo da x0 = 1 si ottiene per n=30 tale successione ha periodo 30 (= m-1). tutti i numeri da 1 a 30 compaiono per poi ripetersi Nel 1948 venne proposto un generatore di numeri casuali distribuiti uniformemente detto generatore lineare congruenziale (LCG) ancora oggi molto utilizzato. Tale generatore venne presentato per la prima volta da Lemer esperto di teoria dei numeri. L’uso del seme 0 origina la successione costante uguale a 0 per c=0 indipendentemente da a e m => il max periodo di un generatore puramente moltiplicativo è m-1. Nel caso di c diverso da 0 il max periodo sarà m in quanto comparirà anche lo 0. Tale periodo max nn è raggiunto per tutte le scelte di a,m,c. Ad es. per a=7, c=7 e m=10 partendo dal seme 7 si ha per n=8 un periodo di 4. Le costanti a e m devono essere scelte in modo tale da soddisfare i seguenti requisiti: • Per ogni valore iniziale x0 la successione dei numeri generati deve “sembrare” una successione di realizzazioni di una variabile casuale uniforme su (0,1). • Per ogni valore iniziale x0 il numero di valori che possono essere generati prima di avere ripetizioni deve essere molto grande. • I valori possano essere calcolati in modo efficiente da un calcolatore. La lunghezza massima raggiungibile dalla sequenza generata vale m

15 Bontà di un generatore LCG
Il problema della scelta dei migliori valori di a, c ed m è il punto cruciale del metodo un aspetto importante è la lunghezza del periodo che dovrà essere molto grande, per cui m dovrà essere grande un altro aspetto consiste nel garantire che per un dato m i valori di a, c siano tali che la successione abbia periodo massimo Generatore “periodico”: periodo massimo M, raggiungibile solo se c e M sono primi tra loro a-1 è divisibile per tutti i fattori primi di M a-1 è multiplo di 4 se M è multiplo di 4 Il metodo LCG con questa scelta era alla base dell’algoritmo utilizzato da MATLAB per la generazione di numeri casuali distribuiti uniformemente fino alla versione 4.0

16 Bontà di un generatore LCG
Una delle scelte più popolari è m=231-1, a=75, c=0 questo garantisce un periodo di 231-2= ossia oltre 2 miliardi di numeri pseudo-casuali il fatto che sia un numero primo è fondamentale al fine di ottenere il massimo periodo Per rendere più aleatorio il processo, il seme viene fissato in modo hardware, relevandone il valore da un contatore interno al computer usato normalmente per altri scopi, oppure ne viene richiesto il valore all’inizio del processo di generazione. xn+1 = (axn+c)mod m , n>=0

17 Un algoritmo per generare numeri random
c=0 L(1) = 1; for i = 2:100 L(i) = mod(a*L(i-1)+c , M) u(i) = L(i)/M end resto = mod(dividendo,divisore) Gli u(i) sono distribuiti in maniera uniforme tra 0 e 1. Provare per credere Da un punto di vista pratico i generatori di numeri casuali restituiscono invece di x_n+1 il suo valore diviso per m al fine di evitare numeri troppo grandi (in tal modo si ottengono numeri distribuiti uniformemente nell’intervallo (0,1))

18 Verifica funzionamento
1. Fare istogramma dei numeri random generati 2. Modificare la lunghezza del vettore di numeri casuali (ad es. 100, 1,000 e 10,000) e osservare la “omogeneità” della distribuzione Generiamo una sequenza di n valori pseudo-casuali compresi tra 0 e 1 e verifichiamone l’uniforme distribuzione tramite l’istogramma di frequenza ottenuto suddividendo l’intervallo in M sottointervalli di uguale ampiezza e calcolando quanti valori cadono in un dato intervallo. Il valore teorico dovrebbe essere esattamente pari a N/M

19 Verificare la casualità
Una richiesta importante al fine di valutare la bontà di un generatore uniforme di numeri pseudo-casuali è l’assenza di correlazione tra i numeri generati dell’algoritmo. Non deve emergere nessuna relazione tra xn e xn+1 per n>0. Questa proprietà può essere verificata graficamente realizzando il grafico di (xn, xn+j) per j>0 nel grafico non dovranno comparire linee, forme o altre strutture regolari Provare a disegnare il grafico per j=1 con 1000 punti ottenuti con il generatore LCG con scelta ottimale con i valori m=31, a=13, e c=0

20 Generatori e MATLAB I generatori di numeri casuali più recenti non sono basati sul metodo LCG, ma sono una combinazione di operazioni di spostamento di registri e manipolazione sui bit che non richiedono nessuna operazione di moltiplicazione o divisione. Questo nuovo approccio risulta estremamente veloce e garantisce periodi incredibilmente lunghi Nelle ultime versioni di MATLAB il periodo è 21492 un milione di numeri casuali al secondo richiederebbe anni prima di ripetersi! data la coincidenza dell’esponente con la data della scoperta dell’America questo generatore è comunemente chiamato il “generatore di Cristoforo Colombo”

21 rand La funzione rand genera una successione di numeri casuali distribuiti uniformemente nell’intervallo (0,1) La sintassi di tale funzione è rand(n,m) che genera una matrice n x m di numeri casuali distribuiti uniformemente Per vedere gli algoritmi utilizzati da MATLAB help rand Una volta avviato MATLAB, il primo numero casuale generato è sempre lo stesso: come anche la successione di numeri casuali! Questo perché il generatore di numeri pseudo-casuali dipende da uno ‘stato’, visualizzabile col comando rand(‘’state), che è inizializzato sempre allo stesso valore quando viene lanciato MATLAB. In qualunque momento si può far ripartire il generatore dallo stato iniziale mediante il comando rand(’state’,0): questo è estremamente utile per verificare la correttezza di un programma

22 Esercizio Sia X una v.a. uniforme nell’intervallo [0,1]. La si campioni n volte, con n=102, 103, 104, 105. Per ciascun valore di n si calcolino media e varianza campionarie (mediante i comandi mean e var) si visualizzi l’istogramma dei valori campionati si visualizzi la funzione di ripartizione empirica dei dati mediante il comando cdfplot e la si confronti graficamente con la funzione di ripartizione cumulativa di X.

23 Calcolo di p Supponiamo di lanciare N freccette ad un bersaglio formato da un quadrato di lato L contenente una circonferenza Assumiamo che le freccette siano lanciate casualmente all’interno del quadrato e che quindi colpiscano il quadrato in ogni posizione con uguale probabilità Dopo molti lanci la frazione di freccette che ha colpito la circonferenza sarà uguale al rapporto tra l’area della circonferenza e quella del quadrato può essere usato per stimare p N è il numero totale di freccette Nc è il numero di freccette cadute all’interno della circonferenza

24 Esercizio Calcolare p col metodo Monte Carlo
considerare un quadrato di lato 2 (come in figura) il cui centro coincide con l’origine di un sistema di riferimento Oxy e una circonferenza inscritta in esso generare 2 vettori, x e y, di numeri casuali di lunghezza N calcolare il numero dei punti (NC) (x,y) così generati che cadono all’interno del cerchio stimare p usando la formula ripetere per diversi valori di N La stima di migliora all’aumentare di N ma la convergenza è tutt’altro che veloce e uniforme. La presenza di fluttuazioni dovute all’approccio probabilistico è infatti una caratteristica dei metodi Monte Carlo.

25 Aree e volumi Il metodo Monte Carlo può essere usato anche per calcolare l’area della circonferenza La generalizzazione al calcolo di volumi nello spazio è immediata. Indicato con L il lato del cubo contenente la figura di cui si vuole misurare il volume V avremo dove Nc è il numero di punti generati in modo uniforme nel cubo e interni alla figura di cui si vuole misurare il volume

26 Metodo Monte Carlo Vengono denominate le tecniche che utilizzano variabili casuali per risolvere vari problemi, anche non di natura aleatoria. Vediamo l’approccio generale: supponiamo che un problema si riconduca al calcolo di un integrale Sia U la variabile casuale uniforme, allora Siano U1, …, Uk variabili casuali i.i.d. come U allora g(U1), …, g(Uk) sono variabili casuali i.i.d. aventi come media q per la legge forte dei grandi numeri

27 Calcolo di integrali Sia X la v.c. avente densità p e Y la v.a. Y=f(X). Il valore Supponendo di essere capaci di campionare X l’integrale I può essere approssimato mediante il metodo Monte Carlo utilizzando lo stimatore di media campionaria per la v.a. Y=f(X) Calcolare l’integrale si prenda come X una v.a. normale standard e si usino n=10000 campioni per la legge forte dei grandi numeri

28 Calcolo di integrali Calcolare l’integrale
si prenda come X una v.a. normale standard e si usino n=10000 campioni Il metodo fornisce la stima con un errore del 4% circa (avendo usato ben 104 campioni!) per la legge forte dei grandi numeri

29 Generare numeri casuali con distribuzione arbitraria
Metodo di inversione Sia X una variabile aleatoria continua a valori in R e F : (0,1)  R , la corrispondente funzione di ripartizione cumulativa: La variabile aleatoria U = F(X) ha una densità di probabilità uniforme nell’intervallo [0,1] Quindi per campionare una variabile aleatoria X con distribuzione F basta campionare una variabile uniforme in [0,1] e poi considerare X=F-1(U) F è monotona crescente

30 Metodo d’inversione Il teorema ci fornisce una regola per generare numeri con distribuzione arbitraria: se conosciamo F, prendiamo i numeri {ui} distribuiti secondo la legge uniforme e {F-1(ui)} sono distribuiti secondo F. densità funzione di ripartizione

31 Esempio: distribuzione esponenziale
Generare numeri distribuiti secondo la legge esponenziale: se i numeri {ui} sono distribuiti secondo la legge uniforme, {F-1(ui)} hanno F come funzione di ripartizione. La variabile X ~exp(l) ha funzione di ripartizione La variabile X può essere ottenuta come trasformazione di una variabile uniforme E’ sufficiente osservare che la variabile V = 1 − U ha la stessa distribuzione di U per arrivare alla formula di inversione proposta.

32 In MALTAB... Ora provate... data = rand(1,1000) hist(data)
data = exprand(1,1,1000) poissrnd Poisson randn Gaussiana


Scaricare ppt "Laboratorio Processi Stocastici"

Presentazioni simili


Annunci Google