新增功能

2.0版将两个著名的cubature库集成在一起地点:

它还提供单一功能立方体格栅那个正如我解释的那样,允许以统一的方式调用所有方法下面。

注意:。人们必须意识到,在某些情况下一个库将集成一个函数,而另一个库不会。在哪里?可能吧,我带了这样的问题注意到C库底层的作者,我鼓励您同样,通过提供可重复的示例。

统一接口

根据Simen Guare的建议,我们现在有一个函数立方体格栅可以用来尝试各种易于集成方法。一些例子。

图书馆(库房)米<-3西格玛<-diag(3)西格玛[2,1]<-西格玛[1,2]<-3/5;西格玛[3,1]<-西格玛[1,3]<-1/3西格玛[3,2]<-西格玛[2,3]<-11/15logdet<-总和(log(特征值(sigma,对称值=TRUE,仅限值=TRU)$值)my_dmvnorm<-函数(x,平均值,西格玛,logdet){x<-矩阵(x,ncol=长度(x))distval<-stats::马氏体(x,center=平均值,cov=σ)exp(-(3*log(2*pi)+logdet+distval)/2)}

首先,我们使用h导管.

cubintegrate(f=my_dmvnorm,lower=rep(-0.5,3),upper=c(1,4,2),method=“pcubature”,平均值=rep(0,m),sigma=sigma,logdet=logdet)
##$积分## [1] 0.3341125## ##$错误##[1]2017年2月22日-06日## ##$奈瓦尔##[1]4913## ##$returnCode(返回代码)## [1] 0

我们可以将其与古巴进行比较库里.

立方积分(f=my_dmvnorm,lower=rep(-0.5,3),upper=c(1,4,2),method=“cuhre”,平均值=rep(0,m),sigma=sigma,logdet=logdet)
##$积分## [1] 0.3341125## ##$错误##[1]2.226266e-06号## ##$个地区##[1]19## ##$奈瓦尔## [1] 4699## ##$prob(近似值)## [1] 0## ##$returnCode(返回代码)## [1] 0

古巴例行程序可以接受各种进一步的争论;参见示例,上的帮助库里。此类参数可以直接传递给立方体格栅.

立方积分(f=my_dmvnorm,lower=rep(-0.5,3),upper=c(1,4,2),method=“cuhre”,平均值=rep(0,m),西格玛=西格玛,logdet=logdet,标志=列表(详细=2))
##$积分## [1] 0.3341125## ##$错误##[1]2.226266e-06号## ##$个地区## [1] 19## ##$奈瓦尔## [1] 4699## ##$prob(近似值)## [1] 0## ##$returnCode(返回代码)##[1]0

由于有许多此类特定于方法的参数,您可能会发现功能默认args()非常有用。

默认args()
##$h导管##$hcubature$标准##[1]“个人”“配对”“L2”“L1”“LINF”## ## ##$p管##$pcubature$标准##[1]“个人”“配对”“L2”“L1”“LINF”## ## ##美元cuhre##$cuhre$minEval(美元)##[1]0## ##$cuhre$stateFile($cuhre$状态文件)##空## ##$cuhre$标志##$cuhre$flags$verbose## [1] 0## ##$cuhre$flags$final($cuhre$旗帜$final)## [1] 1## ##$cuhre$flags$平滑## [1] 0## ##$cuhre$标志$keep_state## [1] 0## ##$cuhre$标志$load_state##[1]0## ##$cuhre$标志$level## [1] 0## ## ##$cuhre$键## [1] 0## ## ##$divonne美元##$divonne$minEval美元## [1] 0## ##$divonne$stateFile##空## ##$divonne$标志##$divonne$flags$verbose## [1] 0## ##$divonne$标志$final## [1] 1## ##$divonne$flags$平滑## [1] 0## ##$divonne$标志$keep_state## [1] 0## ##$divonne$标志$load_state## [1] 0## ##$divonne$flags$level## [1] 0## ## ##$divonne$rngSeed## [1] 0## ##$divonne$key1($divonne$key1)## [1] 47## ##$divonne$key2## [1] 1## ##$divonne$key3## [1] 1## ##$divonne$maxPass## [1] 5## ##$divonne$边框## [1] 0## ##$divonne$maxChisq## [1] 10## ##$divonne$minDeviation($divone$最小偏差)##[1]0.25## ##$divonne$xGiven美元##空## ##$divonne$额外## [1] 0## ##$divonne$peakFinder##空## ## ##$绍夫##$炒$minEval## [1] 0## ##$sauve$stateFile##空## ##$sauve$旗帜##$sauve$flags$verbose## [1] 0## ##$sauve$flags$final($sauve$flags$final)## [1] 1## ##$sauve$flags$平滑## [1] 0## ##$sauve$标志$keep_state## [1] 0## ##$sauve$标志$load_state## [1] 0## ##$sauve$flags$level($sauve$flags$级别)## [1] 0## ## ##$sauve$rngSeed## [1] 0## ##$sauve$新## [1] 1000## ##$sauve$分钟## [1] 50## ##$sauve$平坦度## [1] 50## ## ##$拉斯维加斯##$拉斯维加斯$分钟评估## [1] 0## ##$vegas$stateFile($vegas$状态文件)##空## ##$vegas$标志##$vegas$flags$详细## [1] 0## ##$vegas$旗帜$final## [1] 1## ##$vegas$flags$平滑## [1] 0## ##$vegas$标志$keep_state## [1] 0## ##$vegas$标志$load_state## [1] 0## ##$vegas$旗帜$level## [1] 0## ## ##$vegas$rngSeed## [1] 0## ##$vegas$开始## [1] 1000## ##$vegas$增加## [1] 500## ##$vegas$n批次## [1] 1000## ##$vegas$grid否## [1] 0

矢量化

立方体格栅也提供矢量整数:参数纳秒默认为1,表示标量接口。任何大于1的值都会导致矢量化调用。所以(f)必须适当建造,因此:

my_dmvnorm_v<-函数(x,平均值,sigma,logdet){distval<-stats::马氏体(t(x),center=平均值,cov=σ)exp(矩阵(-(3*log(2*pi)+logdet+distval)/2,ncol=ncol(x)))}

这里,两个底层C库不同。立体图书馆动态管理矢量化中使用的点数电话号码甚至可能因呼叫而异。因此纳秒大于1只是使用矢量化的标志。另一方面,古巴C图书馆将使用纳秒.

cubintegrate(f=my_dmvnorm_v,lower=rep(-0.5,3),upper=c(1,4,2),method=“pcubature”,平均值=rep(0,m),sigma=sigma,logdet=logdet,nSec=128)
##$积分## [1] 0.3341125## ##$错误##[1]2017年2月22日-06日## ##$奈瓦尔##[1]4913## ##$returnCode(返回代码)## [1] 0
立方积分(f=my_dmvnorm_v,lower=rep(-0.5,3),upper=c(1,4,2),method=“cuhre”,平均值=rep(0,m),sigma=sigma,logdet=logdet,nSec=128)
##$积分## [1] 0.3341125## ##$错误##[1]2.226266e-06号## ##$个地区## [1] 19## ##奈瓦尔美元## [1] 4699## ##$prob(近似值)## [1] 0## ##$returnCode(返回代码)## [1] 0

会话信息

sessionInfo()
##R版本4.3.0(2023-04-21)##平台:x86_64-apple-darwin22.4.0(64位)##运行于:macOS Ventura 13.4## ##矩阵产品:默认##BLAS:/usr/local/Cellar/openblas/0.3.23/lib/libopenblasp-r0.3.23.dylib##LAPACK:/usr/local/Cellar/r/4.3.0_1/lib/r/lib/libRlapack.dylib;LAPACK版本3.11.0## ##区域设置:##[1]en_US.UTF-8/en_US-UTF-8/en_US.UNTF-8/C/en_US。UTF-8/C/en_US## ##时区:美国/洛杉矶##tzcode源:内部## ##附加的基本包:##[1]stats graphics grDevices utils datasets方法库## ##其他附加包:##[1]mvtnorm_1.1-3立方_2.1.0工作台-0.2.5## ##通过命名空间加载(未附加):##[1]摘要_0.6.31 R6_2.5.1 fastmap_1.1.1 xfun_0.39##[5]cachem_1.0.8 knitr_1.43 htmltools_0.5.5 rmarkdown_2.22##[9]cli_3.6.1 RcppProgress_0.4.2 sass_0.4.6 jquerylib_0.1.4##[13]compiler_4.3.0工具_4.3.0评估_0.21 bslib_0.5.0##[17]Rcpp_1.0.10 yaml_2.3.7 rlang_1.1.1 jsonlite_1.8.5