Mam kilka rozkładów (10 rozkładów na poniższym rysunku).
W rzeczywistości są to histogramy: na osi x znajduje się 70 wartości, które są wielkościami niektórych cząstek w roztworze, a dla każdej wartości x odpowiadająca wartość y jest proporcją cząstek, których wielkość jest zbliżona do wartości x.
Chciałbym zgrupować te dystrybucje. Obecnie używam hierarchicznego grupowania na przykład z odległością euklidesową. Wybór odległości nie satysfakcjonuje mnie. Próbowałem teoretycznej odległości, takiej jak Kullback-Leibler, ale w danych jest wiele zer, co powoduje trudności. Czy masz propozycję odpowiedniej odległości i / lub innej metody grupowania?
źródło
Jeśli twoje dane to histogramy, możesz zajrzeć do odpowiednich funkcji odległości, takich jak „odległość przecięcia histogramu”.
Istnieje narzędzie o nazwie ELKI, które ma szeroką gamę algorytmów klastrowania (znacznie nowocześniejszych niż k-średnie i klastrowanie hierarchiczne), a nawet zawiera wersję odległości przecięcia histogramu, której można używać w większości algorytmów. Możesz wypróbować kilka dostępnych w nim algorytmów. Z fabuły, którą podałeś powyżej, nie jest dla mnie jasne, co chcesz zrobić. Zgrupuj poszczególne histogramy, prawda? Sądząc po 10, które pokazałeś powyżej, gromady mogą nie istnieć.
źródło
Możesz użyć jakiejś techniki wyodrębniania funkcji, aby uzyskać deskryptory dla k-średnich lub innego rodzaju grupowania.
Podstawowym podejściem byłoby dopasowanie pewnego rozkładu do histogramów i wykorzystanie jego parametrów jako deskryptorów. Na przykład wydaje się, że masz rozkłady bimodalne, które możesz opisać za pomocą 2 średnich i 2 standardowych odchyleń.
Inną możliwością jest grupowanie pierwszych dwóch lub trzech głównych składowych zliczeń histogramów.
Alternatywnie można zastosować podejście falkowe.
Ta strona wyjaśnia, jak to zrobić w przypadku skoków pozakomórkowych. Dane są różne, ale pomysł powinien odnosić się do Twojej sprawy. Znajdziesz również wiele referencji na dole.
http://www.scholarpedia.org/article/Spike_sorting
W R można obliczyć główne składowe pików za pomocą funkcji
princomp
lubprcomp
. Tutaj znajdziesz samouczek na temat PCA w R.W przypadku falek możesz spojrzeć na
wavelets
opakowanie.Za pomocą tej
kmeans
funkcji można uzyskać grupowanie w k-średnich .źródło