Implementazioni di algoritmi/Metodo Monte Carlo: differenze tra le versioni

Wikibooks, manuali e libri di testo liberi.
Contenuto cancellato Contenuto aggiunto
m →‎Integrazione: idem idem...
m robot Aggiungo: da:Monte Carlo-metoder
Riga 197: Riga 197:


[[cs:Metoda Monte Carlo]]
[[cs:Metoda Monte Carlo]]
[[da:Monte Carlo-metoder]]
[[de:Monte-Carlo-Algorithmus]]
[[de:Monte-Carlo-Algorithmus]]
[[en:Monte Carlo method]]
[[en:Monte Carlo method]]

Versione delle 19:51, 23 set 2006

Il Metodo Monte Carlo fa parte della famiglia dei metodi statistici non parametrici. È utile per superare i problemi computazionali legati ai test esatti (ad esempio i metodi basati sulla distribuzione binomiale e calcolo combinatorio, che per grandi campioni generano un numero di permutazioni eccessivo).

Il metodo è usato per trarre stime attraverso simulazioni. Si basa su un algoritmo che genera una serie di numeri tra loro incorrelati, che seguono la distribuzione di probabilità che si suppone abbia il fenomeno da indagare. L'incorrelazione tra i numeri è assicurata da un test chi quadrato.

La simulazione Monte Carlo calcola una serie di realizzazioni possibili del fenomeno in esame, con il peso proprio della probabilità di tale evenienza, cercando di esplorare in modo denso tutto lo spazio dei parametri del fenomeno. Una volta calcolato questo campione rappresentativo, la simulazione esegue delle 'misure' delle grandezze di interesse su tale campione. La simulazione Monte Carlo è ben eseguita se il valore medio di queste misure sulle realizzazioni del sistema converge al valore vero.

Da un altro punto di vista le simulazioni Monte Carlo non sono altro che una tecnica numerica per calcolare integrali.

Le sue origini risalgono alla metà degli anni 40 all'interno del Progetto Manhattan. I formalizzatori del metodo sono John von Neumann e Stanisław Marcin Ulam, il nome Monte Carlo fu assegnato in seguito da Nicholas Constantine Metropolis in riferimento al celebre casino.

L'algoritmo Monte Carlo è un metodo numerico che viene utilizzato per trovare le soluzioni di problemi matematici, che possono avere molte variabili e che non possono essere risolti facilmente, per esempio il calcolo integrale. L'efficienza di questo metodo aumenta rispetto agli altri metodi quando la dimensione del problema cresce.

Un primo esempio di utilizzo del metodo Monte Carlo è rappresentato dall'esperimento dell'ago di Buffon e forse il più famoso utilizzo di tale metodo è quello di Enrico Fermi, quando nel1930 usò un metodo casuale per calcolare le proprietà del neutrone.

Integrazione

I metodi deterministici di integrazione numerica operano considerando un numero di campioni uniformemente distribuiti. In generale, questo metodo lavora molto bene per funzioni di una variabile. Tuttavia, per funzioni di vettori, i metodi deterministici di quadratura possono essere molto inefficienti. Per integrare numericamente una funzione di un vettore bidimensionale, sono richieste griglie di punti equispaziati su una superficie bi-dimensionale. Per esempio una griglia di 10x10 richiede 100 punti. Se il vettore ha dimensione 100, la stessa spaziatura sulla griglia dovrebbe richiedere 10100 punti– questo potrebbe essere troppo dispendioso computazionalmente. Le 100 dimensioni non hanno significato ragionevole, poiché in molti problemi di fisica, una "dimensione" è equivalente al grado di libertà.

I metodi di Monte Carlo forniscono una soluzione a questo problema di crescita esponenziale del tempo. Finché la funzione in questione ha un buon comportamento, può essere valutata selezionando in modo casuale i punti in uno spazio 100-dimensionale, e prendendo alcune tipologie di medie dei valori della funzione in questi punti. Per il teorema del limite centrale, questo metodo mostrerà ordine di convergenza ; per esempio quadruplicando il numero dei punti equispaziati dimezza l'errore, nonostante il numero delle dimensioni.

Una caratteristica di questo metodo è quella di scegliere i punti in modo casuale, ma vengono scelti con maggior probabilità i punti che appartengono alle regioni che contribuiscono maggiormente al calcolo dell'integrale rispetto a quelli che appartengono a regioni di basso contributo. In altre parole, i punti dovrebbero essere scelti secondo una distribuzione simile in forma alla funzione integranda. Comprensibilmente, fare ciò è difficile tanto quanto risolvere l'integrale, ma ci sono altri metodi di approssimazione possibili: a partire da quelli che costruiscono una funzione integrabile simile a quella da integrare, fino ad arrivare ad una delle procedure adattive.

Un simile approccio implica l'uso di low-discrepancy sequences piuttosto del metodo Quasi-Monte Carlo. I metodi Quasi-Monte Carlo spesso possono essere più efficienti come metodi di integrazione numerica poiché la successione di valori generata riempie meglio l'area e le successive valutazioni possono far convergere più velocemente la simulazione alla soluzione.

Esempio

Si voglia stimare il rendimento mensile di un titolo azionario. Il titolo esiste da cinque anni, quindi si hanno a disposizione solo 60 rendimenti mensili. Supponiamo che i rendimenti si distribuiscano seguendo una variabile casuale normale.

Calcoliamo:

Con un modello di regressione lineare cercheremo di stimare la media a un mese. Successivamente, si andranno a generare attraverso l'algoritmo Monte Carlo una serie di medie "sperimentali" che saranno ricavate da una distribuzione normale (perché si è ipotizzato che i rendimenti seguano questa distribuzione) con media pari alla media stimata e scarto quadratico medio pari allo scarto quadratico medio campionario a un mese.

Una strategia per procedere e stimare la vera media del fenomeno, a questo punto, può essere quella di ricavare la media generale di tutte le medie sperimentali ottenute. I dati ottenuti forniscono stime tanto migliori quanto maggiore è il numero delle prove fatte.

Il metodo è molto usato in varie discipline. Tra le possibili applicazioni: fisica statistica e ingegneria, dove si presta molto bene a risolvere problemi legati, ad esempio, alla fluidodinamica; in economia e finanza per prezzare i derivati; in informatica, per simulare l'illuminazione naturale; ecc…

È molto potente se usato in combinazione con altri metodi non parametrici come il resampling.

Discussione analitica

Per un modello stocastico sia θ la quantità da determinarsi. Si esegua una simulazione, generando la variabile casuale X1 in modo che θ sia il valore atteso di X1. Consideriamo una seconda simulazione, generando una variabile casuale X2 tale che il suo valore atteso sia sempre θ. Proseguiamo con k simulazioni, generando fino a k variabili casuali Xk con E[Xk] = θ. Come stimatore di θ possiamo prendere la media aritmetica delle k variabili casuali generate, cioè

in quanto è ovviamente E[X] = θ. Qual è il valore più appropriato di k? Supponiamo di avere n variabili aleatorie indipendenti, X1, ..,Xn aventi la stessa distribuzione. Sia σ2 la varianza della variabile Xi e θ il valore atteso E[Xi] = θ Var(Xi) = σ2 La media campionaria X viene definita da

Il suo valore atteso è:

Quindi X è uno stimatore "unbiased" (cioè con valore atteso uguale a quello del parametro) di θ. La sua varianza è:

Pertanto X è una variabile aleatoria con media θ e varianza σ2/n; ne segue che X è uno stimatore efficiente quando σ/√n è piccolo. Fissata una tolleranza per σ2/n ed avendo stimato σ2 si può in tal modo stimare n.

Si può imporre che il valore atteso ottenuto con lo stimatore stia dentro un ben definito intervallo di confidenza. Si può a tale scopo utilizzare una conseguenza del teorema del limite centrale. Sia X1, X2, …, Xn …, una successione di variabili casuali indipendenti e distribuite identicamente aventi la media finita μ e la varianza finita σ2. Allora

dove Φ(x) è la funzione di distribuzione di una variabile casuale normale standard,


Quando n>>1 il teorema del limite centrale ci dice che la variabile

è approssimativamente distribuita come una variabile aleatoria normale unitaria, indicata con N(0,1), cioè con media zero e varianza 1. Sia ora zα, dove 0< α <1, quel numero tale che, per una variabile normale unitaria, si abbia P(Z > zα ) = α Allora, dal teorema del limite centrale si ha che , asintoticamente per n grande

Che afferma che la probabilità che la media θ sia compresa nell'intervallo

è (1 - α). Perciò, assegnato 1-α e conoscendo σ, si può stimare il minimo valore di n necessario.

Nasce quindi il problema di come stimare la varianza σ2 = E[(X - θ)2]

Definizione. La varianza del campione S2 e’ definita da

Vale il seguente risultato.

Proposizione. E[S2]= σ2 Infatti si ha:

ne segue

Per una variabile aleatoria si ha:

E quindi

Inoltre

Ne segue

Supponiamo ora di avere n variabili aleatorie indipendenti X1, X2, …, Xn aventi la stessa funzione di distribuzione F e di volere stimare il parametro θ(F) (per evidenziare che tale quantità deve essere calcolata rispetto alla funzione di distribuzione F). Sia g(X1, X2, …, Xn) lo stimatore proposto per θ(F); se questo non corrisponde al valore medio, il metodo precedentemente esposto per stimare la varianza dello stimatore non si può applicare. Vediamo come si può stimare l'errore quadratico medio che si commette quando si usa questo stimatore:

Dove il pedice F significa che il valore d'aspettazione viene calcolato rispetto alla funzione di distribuzione F che per il momento è incognita.

Un metodo per stimare tale quantità è quello del bootstrap, utilizzando la funzione di distribuzione empirica Fe(x) definita da:

La legge forte dei grandi numeri afferma che per n molto grande, con probabilità 1, Fe(x) tende a F(x). Allora un valore approssimato di EQM(F) è dato da (approssimazione di bootstrap):

Va rilevato, da un punto di vista operativo, che il dimensionamento della simulazione si supera facilmente grazie alla crescente disponibilità di potenza di calcolo. In altre parole, procedendo all'uso del metodo su calcolatore, sarà sufficiente generare una serie di prove di ampiezza sicuramente ridondante per assicurarsi la significatività della stima.

Esempio: determinare il valore π

Sia M un punto di coordinate (x,y) con 0<x<1 e 0<y<1.

Scegliamo aleatoriamente i valori di x e y.

Sia allora il punto M appartiene al disco di centro (0,0) di raggio 1.

La probabilità che il punto M appartenga al disco è π/4.

Facendo il rapporto del numero dei punti che cadono nel disco con il numero dei tiri effettuati si ottiene un'approssimazione del numero π/4 se il numero dei tiri è grande.

Esempio: determinare la superficie di un lago

Questo è un esempio classico della divulgazione del metodo Monte-Carlo. Sia data una zona rettangolare o quadrata di cui la lunghezza dei lati è conosciuta. Al centro di quest'area si trova un lago la cui superficie è sconosciuta. Grazie alle misure dei lati della zona, si conosce l'area del rettangolo. Per determinare l'area del lago, si chiede ad una truppa armata di tirare X colpi di cannone in modo aleatorio su questa zona. Contiamo in seguito il numero N di palle che sono restate sulla terra, possiamo quindi determinare il numero di palle che sono cadute dentro il lago: X-N. È sufficiente quindi stabilire un rapporto tra i valori:

Per esempio, se il terreno ha superficie di 1000 m2, e supponiamo che l'armata tira 500 palle e che 100 proiettili sono caduti dentro il lago allora la superficie del lago è di: 100*1000/500 = 200 m2.

Estimation de la surface du lac grâce à des tirs d'artillerie aléatoires
Estimation de la surface du lac grâce à des tirs d'artillerie aléatoires

Naturalmente, la qualità della stima migliora aumentando il numero dei tiri ed assicurandosi che l'artiglieria non miri sempre lo stesso posto ma copra bene la zona. Questa ultima ipotesi coincide con l'ipotesi di avere un buon generatore di numeri aleatori, questa condizione è indispensabile per avere dei buoni risultati con il metodo Monte Carlo. Un generatore distorto è come un cannone che tira sempre nello stesso punto: le informazioni che genera sono ridotte.

Bibliografia

  • W.K Hastings, Monte Carlo sampling methods using Markov chains and their applications, Biometrikam, 1970; 57: 97-109
  • Bernd A. Berg, Markov Chain Monte Carlo Simulations and Their Statistical Analysis (With Web-Based Fortran Code), World Scientific 2004, ISBN 981-238-935-0.
  • P. Kevin MacKeown, Stochastic Simulation in Physics, 1997, ISBN 981-3083-26-3
  • Harvey Gould & Jan Tobochnik, An Introduction to Computer Simulation Methods, Part 2, Applications to Physical Systems, 1988, ISBN 0-201-16504-X
  • C.P. Robert and G. Casella. "Monte Carlo Statistical Methods" (second edition). New York: Springer-Verlag, 2004, ISBN 0-387-21239-6
  • Makers of commercial packages which implement Monte Carlo algorithms in include Palisade Corporation (@Risk), Decisioneering (Crystal Ball) and Vanguard Software (DecisionPro)
  • Mosegaard, Klaus., and Tarantola, Albert, 1995. Monte Carlo sampling of solutions to inverse problems. J. Geophys. Res., 100, B7, 12431-12447.
  • Tarantola, Albert, Inverse Problem Theory (free PDF version), Society for Industrial and Applied Mathematics, 2005. ISBN 0898715725

Collegamenti Internet

Software Statistici