zoukankan      html  css  js  c++  java
  • R语言代写用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数

     原文链接:http://tecdat.cn/?p=6690

    在最近的一篇文章中,我描述了一个Metropolis-in-Gibbs采样器,用于估计贝叶斯逻辑回归模型的参数。

     

    这篇文章就此问题进行了研究,以展示Rcpp如何帮助克服这一瓶颈。  TLDR:只需用C ++编写log-posterior而不是矢量化R函数,我们就可以大大减少运行时间。 

    我模拟了与上一篇文章类似的模型中的数据:

    对于这个分析,我编写了两个Metropolis-Hastings(MH)采样器:sample_mh()和sample_mh_cpp()。前者使用对数后验编码作为向量化R函数。后者使用C ++(log_post.cpp)中的log-posterior编码,并使用Rcpp编译成R函数。Armadillo库对C ++中的矩阵和向量类很有用。


     因此,在每次迭代中,提出了系数向量。 下面用红线表示链,表示生成数据的参数值。


    似乎趋同。平均接受概率在采样运行中收敛到约20%。

    那么Rcpp实现与R实现相比如何呢?Rcpp的运行时间明显较低。当log-posterior被编码为矢量化R函数时,采样器相对于Rcpp实现运行速度大约慢7倍(样本大小为100)。下图显示了样本大小为100到5000的相对运行时间,增量为500。

    直观地说,C ++带来了一些效率增益。但很明显,Rcpp是解决代码瓶颈的好方法。

    如果您有任何疑问,请在下面发表评论。

     
  • 相关阅读:
    ammap demo
    sql批量新增和修改
    js右键菜单
    C# 索引器
    NUnit使用体会
    js拖动效果
    Js 原型对象与原型链(转)
    sql for xml子句
    ASP.NET应用程序生命周期
    HttpWebRequest和HttpWebResponse
  • 原文地址:https://www.cnblogs.com/tecdat/p/10751763.html
Copyright © 2011-2022 走看看