如何找到R包bsts的C ++代码?

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

考虑使用bsts软件包在R中拟合Student-t局部模型:

library(bsts)
y <- rnorm(100)
ss <- AddLocalLevel(list(), y)
mod <- bsts(y, state.specification = ss, family='student', niter=500)

在拟合模型后,对象mod的属性mod$sigma.levelmod$observation.df分别包含观察方程的方差和自由度的niter=500绘制。

[有人可以帮我找到为mod$sigma.levelmod$observation.df生成500张抽签的源代码吗?它似乎隐藏在C ++代码中,但是我在CRAN的程序包归档中找不到它。任何指导将不胜感激-您无需了解此特定模型的任何信息。

c++ r
1个回答
0
投票

正如@ Mr.Rlover指出的那样,源代码在here中列出。如果进行追溯,您会发现随机数生成器来自BOOM库中定义的C ++单例类,即RNG,该类包含在bsts C ++代码中,并且似乎是由同一人编写的作者。 RNG类在BOOM库的github页面中定义为here。如果您查看此仓库,您会发现bsts中调用了许多C ++函数。

如果您阅读了RNG的定义,那么随机数生成器似乎最终取决于使用64位数字和状态大小为19937位std::mt19937_64的Mersenne Twister算法的C ++标准库的实现。您可以找到有关此内容的更多信息,包括实施细节,here

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