首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R与积分函数的积分

R与积分函数的积分
EN

Stack Overflow用户
提问于 2019-12-21 06:14:32
回答 1查看 287关注 0票数 1
代码语言:javascript
复制
library(pbivnorm)

rho <- 0.5
f1 <- function(x, y) {
  pbivnorm(log(x)-10, log(y)-10, rho)*(exp(-(log(x)-10)^2/2)/(sqrt(2*pi)*x))*(exp(-(log(y)-10)^2/2)/(sqrt(2*pi)*y))
}
integration1 <- round(integrate(function(y) {
  sapply(y, function(y) {
    integrate(function(x) f1(x,y), 0, Inf, rel.tol = 1e-12)$value
  })
}, 0, Inf, rel.tol = 1e-12)$value, 10)

这个积分应该在0.3左右,但是R给出0。有人能指出这个问题吗?R中积分的最佳函数是什么?非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-21 06:35:43

软件包cubature可以解决问题,给出预期的结果。必须将函数重写为一个参数函数,并在函数体中设置xy的值。

代码语言:javascript
复制
library(cubature)

f2 <- function(X) {
  x <- X[1]
  y <- X[2]
  pbivnorm(log(x)-10, log(y)-10, rho)*(exp(-(log(x)-10)^2/2)/(sqrt(2*pi)*x))*(exp(-(log(y)-10)^2/2)/(sqrt(2*pi)*y))
}

hcubature(f2, c(0, 0), c(Inf, Inf))
#$integral
#[1] 0.2902153
#
#$error
#[1] 2.863613e-06
#
#$functionEvaluations
#[1] 7599
#
#$returnCode
#[1] 0

编辑

OP's second comment之后,下面是用hcubature计算的积分

代码语言:javascript
复制
f3 <- function(x) {
  pnorm(log(x)-10.2)*(exp(-(log(x)-10)^2/2)/(sqrt(2*pi)*x)) 
} 

hcubature(f3, lowerLimit = 0, upperLimit = Inf, tol = 1e-12)$integral 
#[1] 0.4437685
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59433924

复制
相关文章

相似问题

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