Metropolis-Hastings in matlab

问题描述 投票:0回答:1

我正在尝试将Metropolis Hastings算法与随机步行采样器一起使用,以从Matlab中的函数f = sin(7(2x ^ 2 + 3y ^ 2)))^ 2模拟样本,但是我的代码出了点问题。建议密度是椭圆2s ^ 2 + 3t ^ 2≤1/4和alpha =(min(1,f(y1,y2)/ f(x1,x2)))上的均一PDF。我可以使用接受拒绝方法从提案密度中抽样吗?

accept=0;
n=0
while(n < 5000)
    accept=false
    while(accept==false)
        s=1-rand*(2);
        t=1-rand*(2);
        accept=2*s^2 + 3*t^2 <= 1/4;
    end

然后绘制均匀分布的点以检查u

    u = rand();
    c=(u<alpha(X(1,i-1),X(2,i-1),X(1,i-1)+s,X(2,i-1)+t));
    X(1,i)=c*s+X(1,i-1);
    X(2,i)=c*t+X(2,i-1);
    n=n+1;
end

matlab random mcmc random-walk
1个回答
0
投票

您可能只想使用matlab mhsample的本地实现。

关于您的代码,缺少一些东西:-功能mhsample,-循环变量alpha(它可能只是i,但由于它从零开始,因此不适合索引)。如果要动态填充内存,也应该始终在matlab中分配内存,即您的情况为n

PS:您不应拆分代码

© www.soinside.com 2019 - 2024. All rights reserved.