Biorąc pod uwagę łańcuch MCD 10D, jak mogę określić jego tryb (y) w R?

10

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:

  1. Uważamy, że rozkład może być dość wypaczony; dlatego chcemy zidentyfikować tryby tylne, a nie środki tylne.

  2. Obawiamy się, że może istnieć kilka trybów bocznych.

  3. 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.

M. Tibbits
źródło
Zobacz temat dotyczący metod szacowania w trybie szybkim stats.stackexchange.com/questions/33625
Pavel Ruzankin

Odpowiedzi:

9

Czy rozważałeś zastosowanie podejścia najbliższego sąsiada?

np. budując listę knajbliższych sąsiadów dla każdego ze 100 000 punktów, a następnie rozważ punkt danych z najmniejszą odległością kthsąsiada jako tryb. Innymi słowy: znajdź punkt z „najmniejszą bańką” zawierającą kinne punkty wokół tego punktu.

Nie jestem pewien, czy jest to solidne, a wybór kwpływa oczywiście na wyniki.

Andre Holzner
źródło
Czasami chcę po prostu uderzyć się do góry nogami. Doskonała sugestia.
M. Tibbits,
1
Właśnie pomyślałem o użyciu kmeansfunkcji w R. Naprawdę nie powinienem zadawać pytań między północą a czwartą nad ranem.
M. Tibbits,
4

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.

csgillespie
źródło
3

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.

John Salvatier
źródło
To najistotniejsza odpowiedź, przynajmniej pierwsza część! W wielu symulacjach MCMC prawdopodobieństwa (log-) są obliczane dla wszystkich propozycji, a zatem mogą być przechowywane. Lub najwyższa jak dotąd wartość i jej argument można zapisać. Pod warunkiem, że algorytm MCMC zbliżył się do liczby przeprowadzonych symulacji, jest to prawidłowe podejście.
Xi'an
2

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 estimationmetody].

Andre Holzner
źródło
Tak, jest pakiet prim z winietą R: Używanie prim do polowania na guzki . Jednak nie jest dla mnie oczywiste, jak to będzie działać w tym przypadku.
chl