Estou procurando uma maneira simples de fazer uma amostra de uma distribuição multivariada de von Mises-Fisher em Python. Eu procurei no módulo de estatísticas no scipy e no módulo numpy, mas só encontrei a distribuição univariada de von Mises. Existe algum código disponível? Ainda não encontrei.
Aparentemente, Wood (1994) projetou um algoritmo para amostragem da distribuição vMF de acordo com este link , mas não consigo encontrar o documento.
- edit Por precisão, estou interessado no algoritmo que é difícil de encontrar na literatura (a maioria dos trabalhos se concentra em ). O artigo seminal (Wood, 1994) não pode ser encontrado de graça, que eu saiba.
distributions
sampling
python
microfone
fonte
fonte
scipy.stats.vonmises
pode ser de matriz, para que você possa especificar a distribuição como umarray
. Veja este exemploK = vonmises.pdf([x,x], kappa=[[1],[10]])
. Um vMF 2-D deve ter apenas um real como parâmetro. Você concorda?Respostas:
Finalmente, entendi. Aqui está a minha resposta.
Finalmente, coloquei minhas mãos nas Estatísticas Direcionais (Mardia e Jupp, 1999) e no algoritmo de amostragem de Ulrich-Wood. Coloco aqui o que entendi, ou seja, meu código (em Python).
O esquema de amostragem por rejeição:
E, para amostrar efetivamente com esse código, aqui está um exemplo:
fonte
(Peço desculpas pela formatação aqui, criei uma conta apenas para responder a essa pergunta, pois também estava tentando descobrir isso recentemente).
e substitua
no exemplo do microfone com uma chamada para
fonte