Differenze tra le versioni di "Algoritmo di Metropolis-Hastings"

m
nessun oggetto della modifica
m
L''''algoritmo di Metropolis-Hastings''' serve a generare dei numeri x<sub>1</sub>, x<sub>2</sub>, .., x<sub>n</sub> che presentano una [[distribuzione di probabilità|distribuzione]] ''p(x)'' fissata a priori.
 
Il metodo si basa sulla generazione di numeri di 'test' che vengono accettati o rigettati in modo da ottenere la distribuzione voluta. Il metodo sarà presentato nel caso di una sola [[variabile randomcasuale continua]]; esso può essere facilmente esteso al caso di distribuzioni di probabilità ''P(x<sub>1</sub>, x<sub>2</sub>, ..., x<sub>N</sub>)'' di un numero qualsiasi di variabili.
Il metodo può essere facilmente esteso al caso di distribuzioni di probabilità P(x<sub>1</sub>, x<sub>2</sub>, ..., x<sub>N</sub>) di un numero qualsiasi di variabili.
 
L'algoritmo di [[Nicholas Constantine Metropolis|Metropolis]] è realizzabile utilizzando un generatore di numeri casuali con [[variabile casuale uniforme continua|distribuzione uniforme]] in ''[0, 1]''. La procedura è la seguente:
 
1)# Preso, per convenzione, l'ultimo valore x<sub>i</sub> della variabile random nella sequenza si sceglie un valore di prova x<sup>*</sup> diverso da x<sub>i</sub> tra tutti i valori possibili della variabile random. Nel caso delle variabili random continue si può prendere x<sup>*</sup> = x<sub>i</sub> +δx dove δx è un numero distribuito uniformemente nell'intervallo ''[−δ, δ]'';
2)# Si calcola il rapporto w = <math> \frac{p(x^{*})}{p(x_i)} </math>;
3)# Se ''w ≥ 1'', la probabilità che nella sequenza al valore x<sub>i</sub> segua il valore x<sup>*</sup> è pari ad uno per cui si accetta il nuovo valore x<sup>*</sup> = x<sub>i+1</sub>
4)# Se ''w < 1'' il nuovo valore deve essere accettato con probabilità w. Si genera quindi un numero random r distribuito uniformemente nell'intervallo [0, 1);
5)# Se ''r ≤ w'' si accetta il nuovo valore x<sup>*</sup> = x<sub>i+1</sub> ;
6)# Se invece ''r > w'' il nuovo valore viene rigettato dal momento che x<sub>i+1</sub> = x<sub>i</sub>.
 
Per generare una sequenza di ''N'' elementi basta ripetere queste operazioni ''N'' volte a partire da un valore iniziale x<sub>0</sub>. Per avere una buona stima della ''p(x)'' è necessario generare sequenze molto lunghe. La scelta del valore di ''δ'' può essere cruciale, se è troppo grande solo una piccola parte dei valori di prova proposti verrà accettato. Se invece il valore di ''δ'' è troppo piccolo quasi tutti i valori di prova proposti saranno accettati.
2) Si calcola il rapporto w = <math> \frac{p(x^{*})}{p(x_i)} </math>;
 
Di conseguenza, essendo ''δ'' dipendente dalla forma di ''p(x)'', deve essere di volta in volta scelto,; per la sua stima si piòpuò procedere per approssimazione successiva in modo che, fissato un delta, il numero di valori accettati sia un terzo del totale.
3) Se w ≥ 1, la probabilità che nella sequenza al valore x<sub>i</sub> segua il valore x<sup>*</sup> è pari ad uno per cui si accetta il nuovo valore x<sup>*</sup> = x<sub>i+1</sub>
Anche la scelta del valore iniziale è molto importante, in genere conviene partire da valori di ''x'' tali che ''p(x)'' assuma valori massimi in modo da avere una buona statistica nelle zone più probabili.
 
4) Se w < 1 il nuovo valore deve essere accettato con probabilità w. Si genera quindi un numero random r distribuito uniformemente nell'intervallo [0, 1);
 
 
5) Se r ≤ w si accetta il nuovo valore x<sup>*</sup> = x<sub>i+1</sub> ;
 
 
6) Se invece r > w il nuovo valore viene rigettato dal momento che x<sub>i+1</sub> = x<sub>i</sub>.
 
Per generare una sequenza di N elementi basta ripetere queste operazioni N volte a partire da un valore iniziale x<sub>0</sub>.
Per avere una buona stima della p(x) è necessario generare sequenze molto lunghe.
La scelta del valore di δ può essere cruciale, se è troppo grande solo una piccola parte dei valori di prova proposti verrà accettato. Se invece il valore di δ è troppo piccolo quasi tutti i valori di prova proposti saranno accettati.
 
Di conseguenza essendo δ dipendente dalla forma di p(x) deve essere di volta in volta scelto, per la sua stima si piò procedere per approssimazione successiva in modo che, fissato un delta, il numero di valori accettati sia un terzo del totale.
Anche la scelta del valore iniziale è molto importante, in genere conviene partire da valori di x tali che p(x) assuma valori massimi in modo da avere una buona statistica nelle zone più probabili.
 
== Voci correlate ==
 
*[[Nicholas Constantine Metropolis]]
 
 
== Bibliografia ==
W.K Hastings, ''Monte Carlo sampling methods using Markov chains and their applications'',
Biometrikam, [[1970]]; 57: 97-109
 
 
[[Categoria:Algoritmi numerici]]
20 467

contributi