Как выполнить симуляцию MCMC с использованием алгоритма хастинга Metropolis в Matlab?

Я пытаюсь смоделировать распределение для параметра тета f= theta ^(z_f+n+alpha-1)*(1-theta)^(n+1-z_f-k+ beta-1)где все параметры, кроме тета, известны. Я использую алгоритм Metro Hasting для моделирования MCMC. Мое предложение плотности - это бета-версия с параметрами альфа и бета. Мой код для симуляции выглядит следующим образом. Для этой цели я использую код Buitlin Matlab, называемый mhsample(). Как узнать, работает ли мой код правильно?

clear
clc
alpha=2;
beta=2;
z_f=1;
n=6;
k=5;

nsamples = 3000;
pdf= @(x) x^(z_f+n+alpha-1)*(1-x)^(n+1-z_f-k+beta-1); % here x acts as theta
proppdf= @(x,y) betapdf(x, alpha, beta);
proprnd =@(x) betarnd(alpha,beta,1);

smpl = mhsample(0.1,nsamples,'pdf',pdf,'proprnd',proprnd,'proppdf',proppdf);

1 ответ

Я не уверен в том, что вы спрашиваете, когда говорите "как я узнаю, что мой код работает правильно" - я предполагаю, что он выполняется? Но для визуального сравнения вашей функции с симуляцией вы можете отобразить как PDF, так и данные, полученные из mhsample, следующим образом:

% i'm assuming you ran the code above so that smpl and @pdf are both defined...

fplot(pdf,[0 1]); % fplot takes your function and plots it between x-limit [0,1]
figure % new figure
hist(smpl,30); % 30 here is bin size, change it to your preference

Рисунок ниже:

  • гистограмма smplвывод слева, т.е. ваша симуляция
  • функция pdf ограничен в [0,1] справа для сравнения с вашим моделированием

вывод smpl слева, pdf ограничен в [0,1] справа

Это было просто дикое предположение, потому что эти две фигуры похожи друг на друга и также являются бета-дистрибутивными.

Если вам нужен более сложный анализ, боюсь, я еще не разбираюсь в MCMC:)

Другие вопросы по тегам