Algoritmo di Metropolis-Hastings

(Reindirizzamento da Algoritmo metropolis)
Voce principale: Catena di Markov Monte Carlo.

L'algoritmo di Metropolis-Hastings è un metodo MCMC usato per generare dei valori che presentano una distribuzione fissata a priori. Non necessita che la distribuzione sia nota, è sufficiente che sia conosciuta una funzione proporzionale a Questo requisito così debole permette di usare l'algoritmo di Metropolis-Hastings per campionare da distribuzioni di cui l'integrale sia troppo difficile, o impossibile, da calcolare in forma analitica, come è spesso il caso nell'inferenza bayesiana.

Il metodo è stato descritto da Hastings nel 1970, come generalizzazione dell'algoritmo di Metropolis del 1953.

Algoritmo di Metropolis

modifica

Per comprendere l'algoritmo generale è utile imparare prima quello originale, detto di Metropolis.

Il metodo si basa sulla generazione di valori "proposti" che vengono accettati o rigettati in modo da convergere alla distribuzione   voluta. Necessita di una funzione   e di una proposal distribution   simmetrica, che rispetti cioè la proprietà  . Le scelte più comuni per la distribuzione di proposta sono la normale  e l'uniforme  , dove   è un parametro da specificare prima della partenza dell'algoritmo.

Ciascuna iterazione dell'algoritmo di Metropolis consiste nei seguenti passaggi:

  1. si estrae un nuovo valore   dalla distribuzione di proposta  ;
  2. si calcola il rapporto  ;
  3. se   si accetta il nuovo valore  ;
  4. se invece   il nuovo valore deve essere accettato con probabilità  . Si genera quindi un numero random   distribuito uniformemente nell'intervallo  ;
    1. se   si accetta il nuovo valore  ;
    2. altrimenti il nuovo valore viene rigettato e si pone  .

Per generare una sequenza di   elementi basta ripetere queste operazioni   volte a partire da un valore iniziale   scelto arbitrariamente.

Per avere una buona stima di   è necessario generare sequenze abbastanza lunghe. La scelta del parametro   può essere cruciale, se è troppo grande solo una piccola parte dei valori di prova proposti verrà accettato. Se invece è troppo piccolo la catena si muoverà molto lentamente e i valori risulteranno estremamente autocorrelati.

Di conseguenza, essendo   dipendente dalla forma e dalla scala di   deve essere di volta in volta calibrato correttamente; per la sua stima si può 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   tali che   assuma valori massimi in modo da avere una buona statistica nelle zone più probabili.

Caso multivariato

modifica

L'algoritmo descritto sopra funziona esattamente sia nel caso uni- che multivariato, ma esiste un secondo approccio al caso multivariato, particolarmente interessante quando si va a studiare la generalizzazione di Metropolis-Hastings. Anziché generare ad ogni iterazione un nuovo vettore   e accettarlo o respingerlo in toto, è possibile considerare a parte ogni elemento di   e generare a parte un nuovo valore per ciascuno di questi elementi tramite una distribuzione simmetrica   per poi accettare o respingere questo valore singolarmente, al fine di definire  

Algoritmo di Metropolis-Hastings

modifica

L'algoritmo di Metropolis richiede, per garantirne la convergenza limite, che la distribuzione di proposta sia simmetrica. Questa condizione limita di fatto il processo che genera i valori proposti al dominio dei random walk. Hastings (1970) propose una generalizzazione dell'algoritmo di Metropolis che permette la scelta di qualsiasi tipo di proposta.

L'algoritmo di Metropolis-Hastings procede nello stesso modo del suo predecessore, ma non richiede la simmetria della proposal distribution. Questo rilassamento delle ipotesi richiede una modifica nella definizione del rapporto  , che si ridefinisce come  . Il resto dell'algoritmo rimane invariato.

Tempi caratteristici

modifica

Affinché l'algoritmo perda memoria del dato iniziale e converga verso la distribuzione che si vuole campionare, è necessario eseguire un numero iniziale di iterazioni: tale numero si definisce tempo di termalizzazione. Similmente, nel calcolo degli errori è necessario considerare un tempo di correlazione, che consideri l'autocorrelazione tra due campionamenti successivi.

Bibliografia

modifica

Voci correlate

modifica