У меня есть модель, которая структурирована, как на этой диаграмме:
У меня есть население нескольких человек (с индексом 1... 5 на этой картинке). Параметры популяции (A
и B
, но их может быть больше) определить распределения для каждой отдельной скрытой переменной L[i]
. Скрытая переменная L[i]
определяет вероятностное наблюдение X[i]
. Эта модель является "редкой" в том смысле, что большинство узлов не имеют ребер, напрямую связанных с ними.
Я пытаюсь использовать PyMC для вывода параметров населения, а также каждой отдельной скрытой переменной. (Связанный с этим вопрос, который описывает мой конкретный сценарий более подробно, здесь.) Мой вопрос: должен ли я использовать Adaptive Metropolis вместо другого метода, и если да, есть ли "трюк" для правильной группировки стохастических переменных?
Если я правильно подхожу к выборке Adaptive Metropolis (и я не могу...), этот алгоритм предлагает новые значения для неизвестных (A
, B
и всех L[i]
), учитывая, как эти переменные коррелированы в заднем распределении, построенном в прогоне до сих пор. Если A
и B
отрицательно коррелированы, то предложение, которое увеличивает A
, будет уменьшаться B
и наоборот, чтобы увеличить вероятность того, что предложение будет принято.
Дело в том, что в этой модели каждый L[i]
является независимой ничьей из основного распределения популяции, определяемого A
и B
. Поэтому, пока они будут замечены в корреляции в заднем, эти корреляции действительно связаны только с A
и B
, и поэтому они каким-то образом "смешиваются". Поэтому, когда я вызываю функцию,
M.use_step_method(pymc.AdaptiveMetropolis, stochastics)
должны ли все L[i]
быть вместе в списке стохастик? Или мне нужно многократно называть use_step_method, каждый раз с stochastics=[A, B, L[i]]
только для одного из L[i]
? Моя мысль заключалась в том, что вызов функции несколько раз для разных групп стохастик структурировал бы проблему и упростил бы PyMC, сказав ей сосредоточиться только на корреляциях, которые имеют значение. Правильно ли это?