我正在寻求关于如何使用Metropolis-Hastings算法将C或C++代码合并到我的R代码中来加速MCMC程序的建议.我使用MCMC方法来模拟可能性,给定各种协变量,个人将被第三方(法官)分配给社会地位等级中的特定等级:每个法官(大约80个,跨越4个村庄)被要求根据对每个人的社会地位的评估,对一组个人(大约80个,跨越4个村庄)进行排名.因此,对于每个法官,我有一个等级向量,对应于他们对每个人在等级中的位置的判断.
为了模拟这种我认为,分配的行列时,法官对个人效用,一些潜在措施的相对价值根据他们的决定ü.鉴于此,然后可以假定行列,向量[R ,由给定的法官产生是未观测到的矢量的函数,ü,描述个人的效用被排名,其中与个人第k的最高值ü将被分配第k级.我建模ü,,,使用感兴趣的协变量作为多变量正态分布变量,然后确定所观察到的行列的可能性给定的分布ü由模型生成的.
除了估计最多5个协变量的影响之外,我还估计了描述法官和项目之间差异的超参数.因此,对于链的每次迭代,我估计多变量法向密度大约为8-10倍.因此,5000次迭代可能需要长达14个小时.显然,我需要运行它超过5000次运行,所以我需要一种方法来大大加快这个过程.鉴于此,我的问题如下:
(i)我是否有权假设通过在C或C++中运行一些(如果不是全部)链条来获得最佳速度增益?
(ii)假设问题1的答案是肯定的,我该怎么做呢?例如,有没有办法让我保留所有R函数,只需在C或C++中循环:即我可以从C调用R函数然后循环吗?
(iii)我想我真正想知道的是如何最好地将C或C++代码合并到我的程序中.