Nehmen wir an, wir haben eine Dirichlet-Verteilung mit dem dimensionalen . Wie kann ich aus dieser Verteilung eine Stichprobe (einen dimensionalen Vektor) ziehen? Ich brauche eine (möglicherweise) einfache Erklärung.
sampling
dirichlet-distribution
user1315305
quelle
quelle
Eine einfache (wenn auch nicht exakte) Methode besteht darin, dass das Zeichnen einer Dirichlet-Verteilung dem Urnenexperiment der Polya entspricht. (Wenn Sie aus einer Reihe farbiger Bälle ziehen und jedes Mal, wenn Sie einen Ball zeichnen, legen Sie ihn mit einem zweiten Ball derselben Farbe in die Urne zurück.)
Dann :
N-mal wiederholen
Ende wiederholen
Wenn ich mich nicht irre, ist diese Methode asymptotisch genau. Aber da N endlich ist, werden Sie NIEMALS einige Verteilungen mit sehr kleinen vorherigen Wahrscheinlichkeiten zeichnen (während Sie sie mit einer sehr kleinen Häufigkeit zeichnen sollten). Ich denke, es könnte in den meisten Fällen mit N = K.10 befriedigend sein.
quelle
np.random.dirichlet
implementiert ist, weil es in abgetasteten Wahrscheinlichkeitsvektoren genaue Nullen erzeugt, obwohl solche Vektoren zu keiner Dirichlet-Unterstützung gehören. Das hat mich hierher gebracht.