Distribuições de cluster


10

Eu tenho várias distribuições (10 distribuições na figura abaixo). distribuições

De fato, estes são histogramas: existem 70 valores no eixo x, que são os tamanhos de algumas partículas em uma solução e para cada valor de x o valor correspondente de y é a proporção de partículas cujo tamanho é em torno do valor de x.

Eu gostaria de agrupar essas distribuições. Atualmente, uso um cluster hierárquico com a distância euclidiana, por exemplo. Não estou satisfeito com a escolha da distância. Eu tentei a distância teórica da informação, como Kullback-Leibler, mas há muitos zeros nos dados e isso causa dificuldades. Você tem uma proposta de uma distância apropriada e / ou outro método de agrupamento?

Respostas:


16

Entendo que todas as distribuições podem assumir os mesmos 70 valores distintos. Então será fácil comparar curvas cumulativas das distribuições (comparar curvas cumulativas é a maneira geral de comparar distribuições). Essa será uma comparação abrangente para as diferenças de forma, localização e distribuição.

Então, prepare os dados no formato (A, B, ... etc, são as distribuições)

Value CumProp_A CumProp_B ...
1       .01       .05
2       .12       .14
...     ...       ...
70      1.00      1.00

e calcular uma matriz de distância entre as distribuições. Envie para o cluster hierárquico (eu recomendaria o método completo de vinculação). Que distância Bem, se você acha que duas curvas cumulativas são muito diferentes se estiverem distantes apenas em um valor ( b ), use a distância Chebyshev. Se você acha que duas curvas cumulativas são muito diferentes apenas se uma estiver acima da outra ao longo de uma ampla faixa de valores ( c ), use a distância autocorrelativa. Caso alguma diferença local entre as curvas seja importante ( a ), use a distância de Manhattan.

insira a descrição da imagem aqui

A distância autocorrelativa PS é apenas um coeficiente não normalizado de autocorrelação das diferenças entre as curvas cumulativas X e Y:

i=2N(XY)i(XY)i1


Excelente - muito obrigado! Vou fazer isso amanhã
Stéphane Laurent

A distância autocorrelativa é possivelmente negativa. É realmente a boa definição?
Stéphane Laurent

Esqueci de fazer outra pergunta: por que você recomendaria a ligação completa?
Stéphane Laurent

Você pode definir como zero termos negativos do produto, se houver. Não insisto em uma ligação completa; antes, alertaria contra métodos "geométricos", como Ward ou centróide, porque as distâncias não são euclidianas. Eu também pensei que um método "dilatada" como ligação completa será a seu gosto
ttnphns

4

Se seus dados forem histogramas, convém procurar funções de distância apropriadas, como a "distância de interseção do histograma".

Existe uma ferramenta chamada ELKI que possui uma ampla variedade de algoritmos de agrupamento (muito mais modernos que o k-means e o agrupamento hierárquico) e ainda possui uma versão da distância de interseção do histograma, que você pode usar na maioria dos algoritmos. Você pode experimentar alguns dos algoritmos disponíveis nele. Pela trama que você deu acima, não está claro para mim o que você quer fazer. Agrupe os histogramas individuais, certo? A julgar pelos 10 que você mostrou acima, pode não haver agrupamentos.


Obrigado. Mas estou procurando uma ferramenta disponível em R ou SAS. Então dez distribuições acima são apenas um exemplo, tenho várias séries de distribuições para agrupar.
Stéphane Laurent

2

Você pode usar alguma técnica de extração de recurso para derivar descritores para um k-means ou outro tipo de cluster.

Uma abordagem básica seria ajustar uma certa distribuição aos seus histogramas e usar seus parâmetros como descritores. Por exemplo, você parece ter distribuições bimodais, que você pode descrever com 2 médias e 2 desvios padrão.

Outra possibilidade é agrupar os dois ou três primeiros componentes principais das contagens dos histogramas.

Alternativamente, abordagens de wavelets podem ser usadas.

Esta página explica como fazer isso ao lidar com picos extracelulares. Os dados são diferentes, mas a ideia deve ser aplicável ao seu caso. Você também encontrará muitas referências na parte inferior.

http://www.scholarpedia.org/article/Spike_sorting

Em R, você pode calcular os principais componentes de seus picos usando a função princompou prcomp. Aqui você encontrará um tutorial sobre PCA em R.

Para wavelets, você pode olhar para o waveletspacote.

O agrupamento k-means pode ser alcançado usando a kmeansfunção


Obrigado, analisarei sua proposta sempre que possível.
Stéphane Laurent
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.