Pytania:
Mam dużą macierz korelacji. Zamiast grupować poszczególne korelacje, chcę grupować zmienne na podstawie ich korelacji ze sobą, tj. Jeśli zmienna A i zmienna B mają podobne korelacje do zmiennych C do Z, to A i B powinny być częścią tego samego klastra. Dobrym przykładem tego są różne klasy aktywów - korelacje wewnątrz klasy aktywów są wyższe niż korelacje między klasami aktywów.
Rozważam również zmienne grupujące pod względem relacji siły między nimi, np. Gdy korelacja między zmiennymi A i B jest bliska 0, działają one mniej więcej niezależnie. Jeśli nagle niektóre podstawowe warunki ulegną zmianie i powstaje silna korelacja (dodatnia lub ujemna), możemy uznać te dwie zmienne za należące do tego samego klastra. Zamiast szukać pozytywnej korelacji, szuka się relacji kontra brak relacji. Myślę, że analogią może być skupisko dodatnio i ujemnie naładowanych cząstek. Jeśli ładunek spadnie do 0, cząstka odpłynie z gromady. Jednak zarówno dodatnie, jak i ujemne ładunki przyciągają cząstki do bujnych klastrów.
Przepraszam, jeśli niektóre z nich nie są zbyt jasne. Daj mi znać, wyjaśnię konkretne szczegóły.
źródło
Odpowiedzi:
Oto prosty przykład w R z wykorzystaniem
bfi
zestawu danych: bfi to zestaw danych 25 pozycji testu osobowości zorganizowanych wokół 5 czynników.Hiearchiczną analizę skupień wykorzystującą odległość euklidanu między zmiennymi w oparciu o bezwzględną korelację między zmiennymi można uzyskać w następujący sposób:
Dendrogram pokazuje, w jaki sposób elementy ogólnie grupują się z innymi elementami zgodnie z teoretycznymi grupami (np. Grupa przedmiotów N (neurotyczność) razem). Pokazuje także, jak niektóre elementy w klastrach są bardziej podobne (np. C5 i C1 mogą być bardziej podobne niż C5 z C3). Sugeruje również, że klaster N jest mniej podobny do innych klastrów.
Alternatywnie możesz wykonać standardową analizę czynnikową, taką jak:
źródło
Podczas korelacji grupowania ważne jest, aby nie obliczać odległości dwukrotnie. Gdy weźmiesz macierz korelacji, w istocie wykonujesz obliczenia odległości. Będziesz chciał przekonwertować go na prawdziwą odległość, przyjmując 1 - wartość bezwzględną.
Kiedy przejdziesz do konwersji tej macierzy na obiekt odległości, jeśli użyjesz funkcji dist, będziesz mierzył odległości między swoimi korelacjami. Zamiast tego chcesz użyć
as.dist()
funkcji, która po prostu przekształci Twoje wcześniej obliczone odległości w"dist"
obiekt.Zastosowanie tej metody do przykładu Alglim
skutkuje innym dendroggramem
źródło