Attingendo dalla distribuzione di Dirichlet


25

Diciamo che abbiamo una distribuzione di Dirichlet con parametro vettoriale tridimensionale . Come posso disegnare un campione (un vettore tridimensionale ) da questa distribuzione? Ho bisogno di una (forse) semplice spiegazione.Kα=[α1,α2,...,αK]K

Risposte:


25

Per prima cosa, disegna campioni casuali indipendenti dalle distribuzioni gamma ciascuno con densitàKy1,...,yK

Gamma(αio,1)=yioαio-1e-yioΓ(αio),

e poi impostare

Xio=yioΣj=1Kyj.

Ora, seguirà una distribuzione di DirichletX1,...,XK

La pagina Wikipedia sulla distribuzione di Dirichlet spiega esattamente come campionare dalla distribuzione di Dirichlet.

Inoltre, nella Rlibreria MCMCpackè presente una funzione per il campionamento di variabili casuali dalla distribuzione di Dirichlet.


2
L'implementazione della funzione per la generazione casuale da Dirichlet può essere finanziata anche in cran.r-project.org/web/packages/extraDistr
Tim

2

Un metodo semplice (sebbene non esatto) consiste nell'utilizzare il fatto che disegnare una distribuzione di Dirichlet equivale all'esperimento dell'urna della Polya. (Disegnando da una serie di palline colorate e ogni volta che disegni una pallina, la rimetti nell'urna con una seconda pallina dello stesso colore)

Considera i tuoi parametri Dirichlet come una distribuzione non normalizzata su i.αio

Poi :

ripetere N volte

-> disegna un i usando la distribuzione multinomialeαio

-> aggiungi 1 aαio

fine ripetizione

Normalizza per ottenere la tua distribuzioneα

Se non sbaglio, quel metodo è asintoticamente esatto. Ma poiché N è finito, NON disegnerai MAI alcune distribuzioni con probabilità precedenti molto piccole (mentre dovresti disegnarle con una frequenza molto piccola). Immagino che potrebbe essere soddisfacente nella maggior parte dei casi con N = K.10.


Sospetto che questo sia il modo in cui np.random.dirichletviene implementato, perché genera zeri esatti nei vettori di probabilità campionati, sebbene tali vettori non appartengano a nessun supporto di Dirichlet. Questo è ciò che mi ha portato qui.
Eli Korvigo,
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.