Campionatore di Gibbs

Indice dei contenuti

    Il campionatore di Gibbs è un algoritmo MCMC che aggiorna un parametro alla volta campionando dalla sua distribuzione condizionata piena.

    Per un vettore \theta=(\theta_1,\ldots,\theta_d), si campiona ciclicamente da:

    \pi(\theta_j\mid\theta_{-j},x).

    Se le condizionate sono campionabili esattamente, ogni proposta è accettata. Il metodo è semplice nei modelli con struttura coniugata, ma può mescolare lentamente quando i parametri sono fortemente correlati o la posteriore ha geometria difficile.

    Obiettivo

    In inferenza bayesiana si vuole spesso campionare da una distribuzione a posteriori

    \pi(\theta\mid x),

    dove \theta=(\theta_1,\dots,\theta_d) può avere molte componenti. Campionare direttamente dalla distribuzione congiunta può essere difficile, mentre le distribuzioni condizionate

    \pi(\theta_j\mid\theta_{-j},x)

    possono avere forma nota o essere facili da simulare. Gibbs sfrutta questa struttura: costruisce una catena di Markov la cui distribuzione stazionaria è la posteriore desiderata.

    Schema ciclico

    Dato uno stato corrente

    \theta^{(t)} = \left( \theta_1^{(t)},\dots,\theta_d^{(t)} \right),

    un ciclo di Gibbs aggiorna una componente alla volta:

    \theta_1^{(t+1)} \sim \pi(\theta_1\mid\theta_2^{(t)},\dots,\theta_d^{(t)},x),
    \theta_2^{(t+1)} \sim \pi(\theta_2\mid\theta_1^{(t+1)},\theta_3^{(t)},\dots,\theta_d^{(t)},x),

    e così via fino a \theta_d. Le componenti già aggiornate nel ciclo vengono usate immediatamente nelle condizionate successive.

    Esistono anche versioni random scan, in cui l’ordine degli aggiornamenti è casuale, e versioni a blocchi, in cui gruppi di parametri vengono campionati insieme.

    Perché l’accettazione è sempre uno

    A differenza di Metropolis-Hastings, Gibbs non propone un candidato da una distribuzione ausiliaria arbitraria. Campiona direttamente dalla condizionata piena. Quando questo campionamento è esatto, il passo rispetta automaticamente la distribuzione target e non richiede una probabilità di accettazione-rifiuto.

    Questo rende il metodo molto pulito nei modelli con coniugazione bayesiana, dove le condizionate hanno famiglie note.

    Esempio concettuale

    In un modello gerarchico normale, si possono avere osservazioni raggruppate, parametri di gruppo e iperparametri comuni. Gibbs può alternare:

    1. campionamento dei parametri di gruppo dati gli iperparametri;
    2. campionamento degli iperparametri dati i parametri di gruppo;
    3. campionamento della varianza o di altre grandezze latenti.

    Questa struttura è naturale nei modelli gerarchici, perché ogni livello diventa condizionalmente semplice dato il resto.

    Mixing e autocorrelazione

    La semplicità di Gibbs non garantisce efficienza. Se due parametri sono fortemente correlati nella posteriore, aggiornarli uno alla volta può produrre piccoli movimenti lungo una valle stretta. La catena ha allora alta autocorrelazione e bassa effective sample size.

    In questi casi conviene campionare blocchi di parametri correlati, riparametrizzare il modello o usare metodi che sfruttano la geometria della posteriore, come Hamiltonian Monte Carlo.

    Diagnostica

    Come per ogni metodo MCMC, bisogna controllare convergenza, mescolamento, autocorrelazione, sensibilità ai valori iniziali e stabilità delle stime posteriori. Le prime iterazioni vengono spesso scartate come burn-in, ma scartare campioni non risolve una catena che mescola male.

    È utile confrontare statistiche posteriori, intervalli di credibilità e distribuzione predittiva tra catene indipendenti.

    Errori comuni

    Un errore frequente è credere che condizionate semplici implichino sempre campioni indipendenti. I campioni MCMC sono correlati; trattarli come osservazioni indipendenti porta a sottostimare l’incertezza Monte Carlo.

    Un altro errore è aggiornare parametri fortemente accoppiati separatamente solo perché le condizionate sono disponibili. La scelta degli aggiornamenti è parte del progetto dell’algoritmo: un Gibbs corretto può comunque essere troppo lento per essere utile.

    Ultimo aggiornamento: