Как определить моды в (мультимодальной) непрерывной переменной - PullRequest
0 голосов
/ 04 июля 2018

Каков наилучший метод для нахождения всех мод в непрерывной переменной? Я пытаюсь разработать алгоритм Java или Python для этого.

Я думал об использовании оценки плотности ядра для оценки функции плотности вероятности переменной. После этого идея заключалась в том, чтобы идентифицировать пики в функции плотности вероятности. Но сейчас я не знаю, имеет ли это смысл и как реализовать это в конкретном коде на Java или Python.

1 Ответ

0 голосов
/ 05 июля 2018

Любой ответ на вопрос «сколько режимов» должен включать некоторую предварительную информацию о том, что вы считаете вероятным ответом, и любой результат должен иметь форму «p (количество режимов = k | data) = nnn». Учитывая такой результат, вы можете понять, как его использовать; Существует как минимум три варианта: выбрать вариант с наибольшей вероятностью, выбрать тот, который минимизирует некоторую функцию стоимости, или усреднить любые другие результаты по этим вероятностям.

С этим прологом я порекомендую модель плотности смеси с различным количеством компонентов. Например. смесь с 1 компонентом, смесь с 2 компонентами, 3, 4, 5 и т. д. Обратите внимание, что с k компонентами максимально возможное количество мод равно k, хотя, в зависимости от расположения и масштабов компонентов, может быть меньше режимов .

Вероятно, существует много библиотек, которые могут найти параметры для плотности смеси с фиксированным количеством компонентов. Я предполагаю, что вам нужно будет разбить материал, чтобы работать с апостериорной вероятностью числа компонентов. Не смотря на это, я не знаю формулы для апостериорной вероятности числа мод, хотя, вероятно, это просто выяснить.

Я написал немного кода Java для смешанных дистрибутивов; смотрите: http://riso.sourceforge.net и ищите исходный код. Без сомнения, есть много других.

Последующие вопросы лучше всего направлять на stats.stackexchange.com.

...