Algoritmo di Metropolis-Hastings: differenze tra le versioni

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Contenuto cancellato Contenuto aggiunto
Fajrbot (discussione | contributi)
m r2.7.3) (Bot: Aggiungo fa:متروپلیس-هستینگز
Kasirbot (discussione | contributi)
Riga 34: Riga 34:
[[de:Metropolisalgorithmus]]
[[de:Metropolisalgorithmus]]
[[en:Metropolis–Hastings algorithm]]
[[en:Metropolis–Hastings algorithm]]
[[fa:لگاریتم متروپلیس‌هستینگز]]
[[fa:متروپلیس-هستینگز]]
[[fi:Metropolisin ja Hastingsin algoritmi]]
[[fi:Metropolisin ja Hastingsin algoritmi]]
[[fr:Algorithme de Metropolis-Hastings]]
[[fr:Algorithme de Metropolis-Hastings]]

Versione delle 08:32, 5 dic 2012

L'algoritmo di Metropolis-Hastings serve a generare dei numeri x1, x2, .., xn che presentano una 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 casuale continua; esso può essere facilmente esteso al caso di distribuzioni di probabilità P(x1, x2, ..., xN) di un numero qualsiasi di variabili.

L'algoritmo di Metropolis è realizzabile utilizzando un generatore di numeri casuali con distribuzione uniforme in [0, 1]. La procedura è la seguente:

  1. Preso, per convenzione, l'ultimo valore xi della variabile random nella sequenza si sceglie un valore di prova x* diverso da xi tra tutti i valori possibili della variabile random. Nel caso delle variabili random continue si può prendere x* = xi +δx dove δx è un numero distribuito uniformemente nell'intervallo [−δ, δ];
  2. Si calcola il rapporto w = ;
  3. Se w ≥ 1 si accetta il nuovo valore x* = xi+1
  4. Se invece 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* = xi+1 ;
  6. Se invece r > w il nuovo valore viene rigettato dal momento che xi+1 = xi.

Per generare una sequenza di N elementi basta ripetere queste operazioni N volte a partire da un valore iniziale x0. 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 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 x tali che p(x) assuma valori massimi in modo da avere una buona statistica nelle zone più probabili.

Voci correlate

Bibliografia

W.K Hastings, Monte Carlo sampling methods using Markov chains and their applications, Biometrikam, 1970; 57: 97-109

  Portale Matematica: accedi alle voci di Wikipedia che trattano di matematica