Comprensione di MCMC e dell'algoritmo Metropolis-Hastings


13

Negli ultimi giorni ho cercato di capire come funziona Markov Chain Monte Carlo (MCMC). In particolare, ho cercato di comprendere e implementare l'algoritmo Metropolis-Hastings. Finora penso di avere una comprensione generale dell'algoritmo ma ci sono un paio di cose che non sono ancora chiare per me. Voglio usare MCMC per adattare alcuni modelli ai dati. Per questo descriverò la mia comprensione dell'algoritmo di Metropolis-Hastings per adattare una retta ad alcuni dati osservati :Df(x)=axD

1) Fai un'ipotesi iniziale per . Imposta questo come nostro attuale ( ). Anche aggiungere alla fine della catena di Markov ( ).a a a 0 a Caaaa0aC

2) Ripetere i passaggi di seguito un numero di volte.

3) Valutare probabilità corrente ( ) dato e . a 0 DL0a0D

4) Proponi un nuovo ( ) campionando da una distribuzione normale con e . Per ora, il è costante.a 1 μ = a 0 σ = s t e p s i z e s t e p s i z eaa1μ=a0σ=stepsizestepsize

5) valutare nuove possibilità ( ) dato e . a 1 DL1a1D

6) Se è più grande di , accetta come nuovo , aggiungilo alla fine di e vai al passaggio 2.L 0 a 1 a 0 CL1L0a1a0C

7) Se è minore di genera un numero ( ) nell'intervallo [0,1] da una distribuzione uniformeL 0 UL1L0U

8) Se è minore della differenza tra le due probabilità ( - ), accetta come nuovo , aggiungilo alla fine di e vai al passaggio 2.L 1 L 0UL1L0a 0 Ca1a0C

9) Se è maggiore della differenza tra le due probabilità ( - ), aggiungi alla fine di , continua a usare lo stesso , vai al passaggio 2.L 1 L 0 aUL1L0 C a 0a0Ca0

10) Fine della ripetizione.

11) Rimuovere alcuni elementi dall'inizio di (fase di burn-in).C

12) Ora prendete la media dei valori in . Questa media è la stimata .aCa

Ora ho alcune domande relative ai passaggi precedenti:

  • Come posso costruire la funzione di verosimiglianza per ma anche per qualsiasi funzione arbitraria?f(x)=ax
  • È una corretta implementazione dell'algoritmo Metropolis-Hastings?
  • In che modo la selezione del metodo di generazione di numeri casuali al passaggio 7 può modificare i risultati?
  • Come cambierà questo algoritmo se ho più parametri del modello? Ad esempio, se avessi il modello .f(x)=ax+b

Note / Crediti: la struttura principale dell'algoritmo sopra descritto si basa sul codice di un MPIA Python Workshop.

Risposte:


11

Sembra che ci siano alcune idee sbagliate su ciò che l'algoritmo Metropolis-Hastings (MH) è nella tua descrizione dell'algoritmo.

Prima di tutto, bisogna capire che MH è un algoritmo di campionamento. Come affermato in Wikipedia

In statistica e in fisica statistica, l'algoritmo Metropolis-Hastings è un metodo Monteov (MCMC) della catena di Markov per ottenere una sequenza di campioni casuali da una distribuzione di probabilità per la quale il campionamento diretto è difficile.

Per implementare l'algoritmo MH è necessaria una densità di proposta o una distribuzione saltata , dalla quale è facile campionare. Se si desidera campionare da una distribuzione , l'algoritmo MH può essere implementato come segue:f ( )Q(|)f()

  1. Scegli uno stato casuale iniziale .x0
  2. Genera un candidato da .xQ(|x0)
  3. Calcola il rapporto .α=f(x)/f(x0)
  4. Accetta come realizzazione di con probabilità . f αxfα
  5. Prendi come nuovo stato iniziale e continua il campionamento fino ad ottenere la dimensione del campione desiderata.x

Una volta ottenuto il campione è ancora necessario masterizzarlo e diluirlo : dato che il campionatore funziona in modo asintotico, è necessario rimuovere i primi campioni (burn-in) e dato che i campioni sono dipendenti è necessario sottocampionare ogni iterazioni (diradamento).kNk

Un esempio in R può essere trovato nel seguente link:

http://www.mas.ncl.ac.uk/~ndjw1/teaching/sim/metrop/metrop.html

Questo metodo è ampiamente utilizzato nelle statistiche bayesiane per il campionamento dalla distribuzione posteriore dei parametri del modello.

L'esempio che stai usando non mi è chiaro dato che non è una densità a meno che non limiti su un set limitato. La mia impressione è che tu sia interessato ad adattare una linea retta a una serie di punti per i quali ti consiglierei di verificare l'uso dell'algoritmo Metropolis-Hastings nel contesto della regressione lineare. Il seguente link presenta alcune idee su come utilizzare MH in questo contesto (Esempio 6.8):xf(x)=axx

Robert & Casella (2010), Presentazione dei metodi Monte Carlo con R , Ch. 6, "Algoritmi di Metropolis – Hastings"

Ci sono anche molte domande, con puntatori a riferimenti interessanti, in questo sito che discutono sul significato della funzione di probabilità.

Un altro indicatore di possibile interesse è il pacchetto R mcmc, che implementa l'algoritmo MH con proposte gaussiane nel comando metrop().


Ciao amico mio. Sì, sto esaminando MH nel contesto della regressione lineare. L'URL che mi hai dato spiega tutto veramente bello. Grazie. Se avrò qualche altra domanda in merito a MH, pubblicherò di nuovo una domanda. Grazie ancora.
AstrOne,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.