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.
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.
Respostas:
Primeiro, extraia amostras aleatórias independentes das distribuições Gamma, cada uma com densidade
e depois defina
Agora, seguirá uma distribuição Dirichlet
A página da Wikipedia na distribuição Dirichlet mostra exatamente como obter amostras da distribuição Dirichlet.
Além disso, na Rbiblioteca, MCMCpackhá uma função para amostragem de variáveis aleatórias da distribuição Dirichlet.
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.
Então :
repita N vezes
-> desenha um i usando a distribuição multinomial
-> adicione 1 a
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.
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.