Учитывая цепочку 10D MCMC, как я могу определить ее апостериорные моды в R?

10

Вопрос: С 10-мерной цепочкой MCMC, скажем, я готов передать вам матрицу розыгрышей: 100 000 итераций (строк) по 10 параметрам (столбцам), как лучше всего определить апостериорные моды? Я особенно обеспокоен несколькими режимами.

Фон:Я считаю себя статистически подкованным статистиком, но когда коллега задал мне этот вопрос, мне стало стыдно, что я не смог придумать разумного ответа. Основная проблема заключается в том, что могут появиться несколько режимов, но только если учитываются как минимум восемь или около того из десяти измерений. Моей первой мыслью было бы использовать оценку плотности ядра, но поиск по R не выявил ничего многообещающего для задач более трех измерений. Коллега предложил специальную стратегию биннинга в десяти измерениях и поиска максимума, но меня беспокоит то, что пропускная способность может привести к серьезным проблемам с разреженностью или к отсутствию разрешения для распознавания нескольких режимов. Тем не менее, я бы с радостью принял предложения для предложений по автоматической пропускной способности, ссылки на оценщик плотности ядра 10 или что-нибудь еще, о чем вы знаете.

проблемы:

  1. Мы считаем, что распределение может быть весьма искажено; следовательно, мы хотим идентифицировать задний способ (а), а не задний способ.

  2. Мы обеспокоены тем, что может быть несколько задних мод.

  3. Если возможно, мы бы предпочли предложение на основе R. Но любой алгоритм подойдет, если его не сложно реализовать. Думаю, я бы предпочел не реализовывать оценщик плотности ядра Nd с автоматическим выбором полосы пропускания с нуля.

М. Тиббитс
источник
Пожалуйста, ознакомьтесь с темой о методах оценки в быстром режиме. Stats.stackexchange.com/questions/33625
Павел

Ответы:

9

Рассматривали ли вы использовать подход ближайшего соседа?

например, построение списка kближайших соседей для каждой из 100 000 точек, а затем рассмотрение точки данных с наименьшим расстоянием между kthсоседями и режимом. Другими словами: найдите точку с «наименьшим пузырьком», содержащим kдругие точки вокруг этой точки.

Я не уверен, насколько это надежно, и выбор, kочевидно, влияет на результаты.

Андре Хольцнер
источник
Иногда я просто хочу поразить себя головой. Отличное предложение.
М. Тиббитс
1
Я также только подумал об использовании kmeansфункции в R. Я действительно не должен задавать вопросы с полуночи до 4 утра.
М. Тиббитс
4

Это только частичный ответ.

Недавно я использовал figtree для оценки многомерной плотности ядра. Это C-пакет, и я получил его довольно легко. Однако я использовал его только для оценки плотности в определенных точках, а не для расчета сводной статистики.

csgillespie
источник
3

Если вы сохраняете в журнале правдоподобия, вы можете просто выбрать тот, который имеет наибольшее значение. Кроме того, если вас интересует в основном режим, достаточно выполнить оптимизацию, чтобы найти точку с наибольшей вероятностью записи в журнал.

Джон Сальватье
источник
Это самый актуальный ответ, хотя бы первая часть! Во многих симуляциях MCMC (логарифмические) вероятности рассчитываются для всех предложений и, таким образом, могут быть сохранены. Или самое высокое значение, и его аргумент может быть сохранен. Если алгоритм MCMC сходится по количеству выполненных вами симуляций, это правильный подход.
Сиань
2

Вы рассматривали «PRIM / Bump Hunting»? (см., например, раздел 9.3 «Элементов статистического обучения» Тибширани и др. или спросите свой любимый поисковик). Не уверен, что это реализовано в R, хотя.

[Насколько я понял, ты пытаешься найти режим плотности вероятности, из которого взяты твои 100 000 строк. Так что ваша проблема будет частично решена путем поиска подходящего density estimationметода].

Андре Хольцнер
источник
Да, есть примитивный пакет с виньеткой R: Использование прима для ударной охоты . Для меня не очевидно, как это будет работать в этом случае.
ЧЛ