Pytanie: Za pomocą 10-wymiarowego łańcucha MCMC powiedzmy, że jestem przygotowany na przekazanie macierzy losowań: 100 000 iteracji (wierszy) na 10 parametrów (kolumn). Jak najlepiej zidentyfikować tryby tylne? Szczególnie interesuje mnie wiele trybów.
Tło:Uważam się za doświadczonego obliczeniowo statystykę, ale kiedy kolega zadał mi to pytanie, wstydziłem się, że nie mogłem znaleźć rozsądnej odpowiedzi. Głównym problemem jest to, że może pojawić się wiele trybów, ale tylko wtedy, gdy weźmie się pod uwagę co najmniej osiem z dziesięciu wymiarów. Moją pierwszą myślą było użycie oszacowania gęstości jądra, ale przeszukanie R nie wykazało niczego obiecującego dla problemów większych niż trzy wymiary. Kolega zaproponował doraźną strategię binowania w dziesięciu wymiarach i szukał maksimum, ale martwię się, że przepustowość może albo prowadzić do znacznych problemów z rzadkością, albo do braku rozdzielczości w celu rozróżnienia wielu trybów. To powiedziawszy, chętnie przyjmę sugestie dotyczące automatycznych sugestii przepustowości, łącza do estymatora gęstości jądra 10 lub cokolwiek innego, o czym wiesz.
Obawy:
Uważamy, że rozkład może być dość wypaczony; dlatego chcemy zidentyfikować tryby tylne, a nie środki tylne.
Obawiamy się, że może istnieć kilka trybów bocznych.
Jeśli to możliwe, wolelibyśmy sugestię opartą na R. Ale każdy algorytm działa tak długo, jak nie jest niewiarygodnie trudny do wdrożenia. Chyba wolałbym nie implementować estymatora gęstości jądra Nd z automatycznym wyborem przepustowości od zera.
Odpowiedzi:
Czy rozważałeś zastosowanie podejścia najbliższego sąsiada?
np. budując listę
k
najbliższych sąsiadów dla każdego ze 100 000 punktów, a następnie rozważ punkt danych z najmniejszą odległościąkth
sąsiada jako tryb. Innymi słowy: znajdź punkt z „najmniejszą bańką” zawierającąk
inne punkty wokół tego punktu.Nie jestem pewien, czy jest to solidne, a wybór
k
wpływa oczywiście na wyniki.źródło
kmeans
funkcji w R. Naprawdę nie powinienem zadawać pytań między północą a czwartą nad ranem.To tylko częściowa odpowiedź.
Ostatnio użyłem figtree do wielowymiarowych szacunków gęstości jądra. Jest to pakiet C i mam go dość łatwo działać. Użyłem go jednak tylko do oszacowania gęstości w poszczególnych punktach, a nie do obliczania statystyk podsumowujących.
źródło
Jeśli zachowasz prawdopodobieństwa dziennika, możesz po prostu wybrać ten o najwyższej wartości. Ponadto, jeśli interesuje Cię przede wszystkim tryb, wystarczy zrobienie optymalizacji w celu znalezienia punktu o najwyższym prawdopodobieństwie dziennika.
źródło
Czy zastanawiałeś się nad „polowaniem na prima / bump”? (patrz np. sekcja 9.3. „Elementów statystycznego uczenia się” Tibshirani i in. lub zapytaj swoją ulubioną wyszukiwarkę). Nie jestem jednak pewien, czy jest to zaimplementowane w R.
[O ile rozumiem, czy próbujesz znaleźć tryb gęstości prawdopodobieństwa, z którego rysowane są twoje 100'000 wierszy. Twój problem zostałby częściowo rozwiązany przez znalezienie odpowiedniej
density estimation
metody].źródło