Como saber quantitativamente se os dados 1D estão agrupados em torno de 1 ou 3 valores?


9

Eu tenho alguns dados sobre o tempo entre os batimentos cardíacos de um humano. Uma indicação de batidas ectópicas (extras) é que esses intervalos estão agrupados em torno de três valores em vez de um. Como posso obter uma medida quantitativa disso?

Estou procurando comparar vários conjuntos de dados, e esses dois histogramas de 100 bin são representativos de todos eles.

insira a descrição da imagem aqui

Eu poderia comparar as variações, mas quero que meu algoritmo seja capaz de detectar se há um ou três clusters em cada caso, sem comparar com os outros casos.

Isso é para processamento off-line, portanto, há muito poder de computação disponível, se necessário.


Respostas:


3

Aconselho fortemente contra o uso de k-means aqui. Os resultados para diferentes valores de k não são muito bem comparáveis. O método é apenas uma heurística grosseira. Se você realmente deseja usar o agrupamento, use o agrupamento EM, pois seus dados parecem conter distribuições normais. E valide seus resultados!

Em vez disso, a abordagem óbvia é tentar ajustar uma única função gaussiana e (por exemplo, usando o método Levenberg-Marquard) ajustar três funções gaussianas, talvez restritas à mesma altura (para evitar a degeneração).

Em seguida, teste qual das duas distribuições se encaixa melhor.


Obrigado, eu não conhecia Levenberg-Marquardt! Esses grupos não são gaussianos; você ainda acha que as funções gaussianas seriam o melhor PDF para ajustá-las?
Nikolaus

+1 a isso e a Greg Snow. Eu concordo totalmente com este conselho. @ Nikolaus Eu acho que isso parece "suficientemente gaussiano" para se encaixar em uma mistura de distribuições gaussianas. Você não deseja um ajuste perfeito, apenas uma maneira de verificar quantos clusters existem. Nesta óptica, restringir todos os componentes a compartilhar o mesmo desvio padrão pode ser uma boa ideia (pelos motivos explicados por Anony-Mousse).
Elvis

Eles claramente parecem gaussianos o suficiente para mim. K-means modela dados com células Voronoi. Não me parece sensato supor que o melhor ponto de divisão esteja exatamente no meio dos dois meios vizinhos.
Saiu - Anony-Mousse

6

Ajuste uma distribuição de mistura aos dados, algo como uma mistura de 3 distribuições normais e compare a probabilidade desse ajuste com um ajuste de uma única distribuição normal (usando o teste de razão de verossimilhança, ou AIC / BIC). O flexmixpacote Rpode ser útil.


4

Se você deseja usar o cluster K-means, precisará de uma maneira de comparar os casos e . Uma abordagem seria usar a estatística de gap de Tibshirani et al. e escolha o que fornece o melhor valor. Há uma implementação R disponível no SLmisc , embora essa função em particular tente , portanto, você deve tomar cuidado para garantir que apenas ou possam ser retornados como o valor ideal.K = 3 K K = 1 , 2 , 3 K = 1 K = 3K=1K=3KK=1,2,3K=1K=3


2

Use um algoritmo de agrupamento K-means para identificar os vários meios

Procure a função KNN em R-seek para encontrar a função apropriada


11
ahh, eu estava prestes a postar isso! Você também pode consultar este link para obter os códigos e whatnots
King

Eu tentei com a kmeansfunção do Matlab . Os meios resultantes variam muito de tentativa para tentativa. (Heurísticas ruins nesta implementação?) Para o conjunto de 1 cluster, recebo médias em torno de (270.293.693) às vezes, em torno de (260.285.308) às vezes. Para o conjunto de 3 clusters, algumas respostas são (196.324.468) e (290.459.478).
Nikolaus

Existe um lugar onde eu possa colar os dados?
Nikolaus

Ah, isso significa 693: existem dois valores discrepantes óbvios, um 532 e um 855, de um total de 755 valores. Todo o restante dos valores pode ser visto no histograma.
Nikolaus

Você deve olhar além dos meios que obtém do k-means e ver como eles realmente descrevem seus dados!
Quit - Anony-Mousse
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.