使用Rcpp中的rWishart生成Wishart分布?

时间:2014-05-05 02:19:06

标签: r rcpp

我正试图让R的rWishart在统计数据中在Rcpp中工作。这是一个测试示例:

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
NumericVector rWishart_cpp(int p, int df, NumericMatrix Sigma) {
    return rWishart(p, df, Sigma);
}

我收到的错误是: “test.cpp:12:12:错误:使用未声明的标识符'rWishart'     返回rWishart(p,df,Sigma);“

从其中一个小插曲中,我认为d / r函数是在Rch实现的Rch中实现的?

在任何情况下,有什么方法可以在Rcpp中生成一个Wishart发行版?

1 个答案:

答案 0 :(得分:2)

这里的问题似乎是你认为Wishart在Rmath.h时不在:

edd@max:~$ grep -i wish /usr/include/Rmath.h         # no Wishart
edd@max:~$ grep -i weib /usr/include/Rmath.h         # but Weibull has an example
#define dweibull        Rf_dweibull
#define pweibull        Rf_pweibull
#define qweibull        Rf_qweibull
#define rweibull        Rf_rweibull
        /* Weibull Distribution */
double  dweibull(double, double, double, int);
double  pweibull(double, double, double, int, int);
double  qweibull(double, double, double, int, int);
double  rweibull(double, double);
edd@max:~$ 

最好的办法是从某处获得另一个实现,并通过Rcpp获取代码。

编辑: 或者基于rdocumentation.org的两分钟研究,您可以按照stats::rWishart的文档进行编码,并将其编码为多变量法线的函数。我的基础是这样的 RcppArmadillo ....

相关问题