Pergunta: Com uma cadeia MCMC de 10 dimensões, digamos que estou preparado para entregar uma matriz dos sorteios: 100.000 iterações (linhas) por 10 parâmetros (colunas), qual a melhor forma de identificar os modos posteriores? Estou especialmente preocupado com vários modos.
Fundo:Eu me considero um estatístico computacionalmente experiente, mas quando um colega me fez essa pergunta, fiquei com vergonha de não conseguir encontrar uma resposta razoável. A principal preocupação é que vários modos possam aparecer, mas apenas se pelo menos oito das dez dimensões forem consideradas. Meu primeiro pensamento seria usar uma estimativa de densidade do kernel, mas uma pesquisa no R não revelou nada promissor para problemas maiores que três dimensões. O colega propôs uma estratégia ad-hoc de binning em dez dimensões e buscando um máximo, mas minha preocupação é que a largura de banda possa levar a problemas de escassez significativos ou à falta de resolução para discernir vários modos. Dito isso, eu aceitaria com prazer sugestões de sugestões automatizadas de largura de banda, links para um estimador de densidade de 10 kernel ou qualquer outra coisa que você conheça.
Preocupações:
Acreditamos que a distribuição pode estar bastante distorcida; portanto, desejamos identificar os modos posteriores e não os meios posteriores.
Estamos preocupados que possam existir vários modos posteriores.
Se possível, preferimos uma sugestão baseada em R. Mas qualquer algoritmo funcionará desde que não seja incrivelmente difícil de implementar. Acho que prefiro não implementar um estimador de densidade de kernel Nd com seleção automática de largura de banda a partir do zero.
Respostas:
Você já pensou em usar uma abordagem de vizinho mais próximo?
por exemplo, construindo uma lista dos
k
vizinhos mais próximos para cada um dos 100.000 pontos e, em seguida, considere o ponto de dados com a menor distância dokth
modo vizinho. Em outras palavras: encontre o ponto com a 'menor bolha' contendok
outros pontos ao redor deste ponto.Não sei ao certo quão robusto isso é e a escolha para
k
obviamente está influenciando os resultados.fonte
kmeans
função em R. Eu realmente não deveria fazer perguntas entre meia-noite e 04:00.Esta é apenas uma resposta parcial.
Recentemente, usei o figtree para estimativas multidimensionais da densidade do kernel. É um pacote C e eu consegui que ele funcionasse facilmente. No entanto, eu apenas o usei para estimar a densidade em pontos específicos, não para calcular estatísticas resumidas.
fonte
Se você mantiver as probabilidades do log, poderá selecionar apenas aquele com o valor mais alto. Além disso, se o seu interesse for principalmente o modo, basta fazer uma otimização para encontrar o ponto com a maior probabilidade de log.
fonte
Você já considerou 'PRIM / bump hunting'? (veja, por exemplo, a Seção 9.3. de 'Os elementos da aprendizagem estatística' de Tibshirani et al. ou pergunte ao seu mecanismo de pesquisa favorito). Não tenho certeza se isso é implementado no R.
[Pelo que entendi, você está tentando encontrar o modo da densidade de probabilidade a partir da qual suas 100.000 linhas são desenhadas. Portanto, seu problema seria parcialmente resolvido encontrando um
density estimation
método apropriado ].fonte