2016-09-11 2 views
0

Я использую пакет python под названием emcee для соответствия функции некоторым точкам данных. Подгонка выглядит великолепно, но когда я хочу, чтобы построить значение каждого параметра на каждом шаге я получаю это:Установка с monte carlo в python

enter image description here

В своем примере (с различными функциональными и данных точек) они получают это:

enter image description here

Почему моя функция сходится так быстро, и почему она имеет эту странную форму в начале. Я применяю MCMC, используя вероятность и заднюю вероятность. И даже если пригонка выглядит очень хорошо, ошибка в параметрах функции очень мала (на 10^10 меньше фактической величины), и я думаю, что это из-за случайных блужданий. Любая идея, как это исправить? Вот их код для установки: http://dan.iel.fm/emcee/current/user/line/ Я использовал тот же код с очевидными изменениями для своих точек данных и функции фитинга.

ответ

3

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

Скачок в ваших изображениях следов выглядит как ожог. Это общая особенность алгоритмов выборки MCMC, где вашим ходокам даны исходные точки от основной части задней части, а затем они должны найти путь к ней. Похоже, что в вашем случае функция правдоподобия довольно гладкая, поэтому для достижения этой цели вам понадобится только сто или несколько итераций, что дает вам возможность использовать эту «странную форму», о которой вы говорите.

Если вы можете лучше ограничить отправные точки, сделайте это; если нет, вы можете отказаться от этой начальной длины до проведения дальнейшего анализа (см. here и here для обсуждения продолжительности записи).

Что касается того, являются ли ошибки реалистичными или нет, вам необходимо проверить полученные задние модели для этого, потому что отношение фактического значения параметра к его неопределенности не имеет в этом никакого слова. Например, если мы возьмем ваш связанный номер example и изменим истинное значение b на 10^10, полученные ошибки будут на десять величин меньше, оставаясь совершенно допустимыми.

+0

Это действительно похоже, что у вас очень четкий и узкий режим в вашем заднем распределении. Я бы посмотрел, как вероятность принятия Метрополиса развивается как функция итерации, чтобы понять, есть ли у вас «хорошее перемешивание», как только вы достигнете максимума. Если это так, но вас все еще беспокоит «небольшая» неопределенность, я бы посмотрел на модель. – user3465408

Смежные вопросы