Digamos que tenhamos uma distribuição de Dirichlet com o parâmetro do vetor dimensional . Como posso desenhar uma amostra (um vetor dimensional ) dessa distribuição? Eu preciso de uma (possivelmente) explicação simples.
sampling
dirichlet-distribution
user1315305
fonte
fonte
Um método simples (embora não exato) consiste em usar o fato de que desenhar uma distribuição de Dirichlet é equivalente ao experimento de urna da Polya. (Desenho de um conjunto de bolas coloridas e cada vez que você desenha uma bola, coloca-a de volta na urna com uma segunda bola da mesma cor)
Considere os parâmetros do Dirichlet como uma distribuição não normalizada sobre i.αi
Então :
repita N vezes
-> desenha um i usando a distribuição multinomialαi
-> adicione 1 aαi
repetição final
Normalize para obter sua distribuiçãoα
Se não estou errado, esse método é assintoticamente exato. Mas como N é finito, você NUNCA desenhará algumas distribuições com probabilidades anteriores muito pequenas (enquanto você deve desenhá-las com uma frequência muito pequena). Eu acho que pode ser satisfatório na maioria dos casos com N = K.10.
fonte
np.random.dirichlet
é implementado, porque gera zeros exatos nos vetores de probabilidade amostrados, embora esses vetores não pertençam a nenhum suporte ao Dirichlet. Foi isso que me trouxe aqui.