Entendo que, depois de traçarmos os valores como um gráfico, podemos identificar uma distribuição bimodal observando os picos duplos, mas como encontrá-la programaticamente? (Estou procurando um algoritmo.)
Entendo que, depois de traçarmos os valores como um gráfico, podemos identificar uma distribuição bimodal observando os picos duplos, mas como encontrá-la programaticamente? (Estou procurando um algoritmo.)
Respostas:
Identificar um modo para uma distribuição contínua requer suavizar ou agrupar os dados.
A distribuição é geralmente muito processual: os resultados geralmente dependem de onde você coloca os pontos de corte da bandeja.
A suavização do kernel (especificamente, na forma de estimativa da densidade do kernel ) é uma boa opção. Embora muitas formas de kernel sejam possíveis, normalmente o resultado não depende muito da forma. Depende da largura de banda do kernel. Portanto, as pessoas usam um kernel adaptável suave ou conduzem uma sequência de kernel smooths para variar larguras de banda fixas, a fim de verificar a estabilidade dos modos identificados. Embora o uso de um adaptador mais adequado ou "ideal" seja atraente, lembre-se de que a maioria (todos?) Deles foi projetada para alcançar um equilíbrio entre precisão e precisão média: eles não foram projetados para otimizar a estimativa da localização dos modos.
No que diz respeito à implementação, os parceiros do kernel mudam localmente e escalam uma função predeterminada para ajustar os dados. Desde que essa função básica seja diferenciável - os gaussianos são uma boa escolha, porque você pode diferenciá-los quantas vezes quiser -, tudo o que você precisa fazer é substituí-lo por sua derivada para obter a derivada do suave. Depois, basta aplicar um procedimento padrão de busca zero para detectar e testar os pontos críticos. ( O método de Brent funciona bem.) É claro que você pode fazer o mesmo truque com a segunda derivada para testar rapidamente se algum ponto crítico é um máximo local - ou seja, um modo.
Há um artigo bem conhecido de Silverman que trata dessa questão. Ele emprega estimativa de densidade de kernel. Vejo
BW Silverman, Usando estimativas de densidade de kernel para investigar multimodalidade , J. Royal Stat. Soc. B , vol. 43, n. 1, 1981, pp. 97-99.
Observe que existem alguns erros nas tabelas do documento. Este é apenas um ponto de partida, mas muito bom. Ele fornece um algoritmo bem definido para uso, caso seja o que você mais procura. Você pode procurar no Google Scholar artigos que o citam para abordagens mais "modernas".
Cheguei atrasado à festa, mas se você está apenas interessado em saber se é multimodal ou não, o que significa que você não está interessado no número de modos, você deve olhar para os mais fracos .
No R
pacote é chamado diptest
.
A definição no wiki é um pouco confusa para mim. A probabilidade de um conjunto de dados contínuo ter apenas um modo é zero. Uma maneira simples de programar um distrubiton bimodal é com duas distribuições normais separadas, centradas de maneira diferente. Isso cria dois picos ou o que o wiki chama de modos. Você pode realmente usar quase duas distribuições, mas uma das oportunidades estatísticas mais difíceis é descobrir como o conjunto de dados foi formado depois de combinar as duas distribuições aleatórias de dados.