Вопрос: С 10-мерной цепочкой MCMC, скажем, я готов передать вам матрицу розыгрышей: 100 000 итераций (строк) по 10 параметрам (столбцам), как лучше всего определить апостериорные моды? Я особенно обеспокоен несколькими режимами.
Фон:Я считаю себя статистически подкованным статистиком, но когда коллега задал мне этот вопрос, мне стало стыдно, что я не смог придумать разумного ответа. Основная проблема заключается в том, что могут появиться несколько режимов, но только если учитываются как минимум восемь или около того из десяти измерений. Моей первой мыслью было бы использовать оценку плотности ядра, но поиск по R не выявил ничего многообещающего для задач более трех измерений. Коллега предложил специальную стратегию биннинга в десяти измерениях и поиска максимума, но меня беспокоит то, что пропускная способность может привести к серьезным проблемам с разреженностью или к отсутствию разрешения для распознавания нескольких режимов. Тем не менее, я бы с радостью принял предложения для предложений по автоматической пропускной способности, ссылки на оценщик плотности ядра 10 или что-нибудь еще, о чем вы знаете.
проблемы:
Мы считаем, что распределение может быть весьма искажено; следовательно, мы хотим идентифицировать задний способ (а), а не задний способ.
Мы обеспокоены тем, что может быть несколько задних мод.
Если возможно, мы бы предпочли предложение на основе R. Но любой алгоритм подойдет, если его не сложно реализовать. Думаю, я бы предпочел не реализовывать оценщик плотности ядра Nd с автоматическим выбором полосы пропускания с нуля.
Ответы:
Рассматривали ли вы использовать подход ближайшего соседа?
например, построение списка
k
ближайших соседей для каждой из 100 000 точек, а затем рассмотрение точки данных с наименьшим расстоянием междуkth
соседями и режимом. Другими словами: найдите точку с «наименьшим пузырьком», содержащимk
другие точки вокруг этой точки.Я не уверен, насколько это надежно, и выбор,
k
очевидно, влияет на результаты.источник
kmeans
функции в R. Я действительно не должен задавать вопросы с полуночи до 4 утра.Это только частичный ответ.
Недавно я использовал figtree для оценки многомерной плотности ядра. Это C-пакет, и я получил его довольно легко. Однако я использовал его только для оценки плотности в определенных точках, а не для расчета сводной статистики.
источник
Если вы сохраняете в журнале правдоподобия, вы можете просто выбрать тот, который имеет наибольшее значение. Кроме того, если вас интересует в основном режим, достаточно выполнить оптимизацию, чтобы найти точку с наибольшей вероятностью записи в журнал.
источник
Вы рассматривали «PRIM / Bump Hunting»? (см., например, раздел 9.3 «Элементов статистического обучения» Тибширани и др. или спросите свой любимый поисковик). Не уверен, что это реализовано в R, хотя.
[Насколько я понял, ты пытаешься найти режим плотности вероятности, из которого взяты твои 100 000 строк. Так что ваша проблема будет частично решена путем поиска подходящего
density estimation
метода].источник