首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rcpp -使用optim函数

Rcpp -使用optim函数
EN

Stack Overflow用户
提问于 2018-05-09 05:16:53
回答 1查看 250关注 0票数 1

如何使用R语言的varargs函数,就像optim函数一样?

考虑下面的代码,其中我希望最大化对数似然函数verossimilhanca

代码语言:javascript
运行
复制
#include <Rcpp.h>
#include <RInside.h>

using namespace Rcpp;

// [[Rcpp::export]]

double verossimilhanca(Function pdf, NumericVector par, NumericVector x){
  NumericVector log_result = log(pdf(par,x));
  double soma =0;
  for(int i = 0; i < log_result.size(); i++){
    soma += log_result[i];
  }

  return -1*soma;
} 
// [[Rcpp::export]]
List bootC(NumericVector x, NumericVector init_val){ 
  Rcpp::Environment stats("package:stats"); 
  Rcpp::Function optim = stats["optim"];    

  R["my_objective_fn"] = Rcpp::InternalFunction(&verossimilhanca);

  Rcpp::List opt_results = optim(Rcpp::_["par"]  = init_val,
                                 Rcpp::_["fn"]     = Rcpp::InternalFunction(&verossimilhanca),
                                 Rcpp::_["method"] = "BFGS", x);

  return opt_results;
  // x is a data vetor.
}

总之,我有一个对数似然函数,我想最大化这个函数,x是我的数据集。我知道RInside允许我在C++中创建R的实例,但是我只想通过使用Rcpp.h库而不使用RInside.h来解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2020-04-27 10:34:02

在optim函数的参数中将x替换为Rcpp::_["x"] = x。这也困扰着我直到我找到the answer of @coatless

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50242390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档