R中的积分显示非限定结果

时间:2018-07-07 22:04:59

标签: r numerical-integration

我有一个向量“ t”正尝试将下限设为0,将上限作为“ t”向量的每个成员,针对t整合函数。也就是说,我正在尝试找到积分:

位置:

和:

现在我将“ t”向量设为-

t<- seq(0,10,length.out=2001) [-1]

但是只要我尝试使用来找到积分

den<- function(t,m,beta,mu0,mu1,gamma,delta,sigma){
mut<- function(t){mu0+mu1t*exp(-gamma*(14+log(t,base=exp(1)))^delta)}
 g<- function(x){dexp(x,beta,log=FALSE)*pnorm(x,mut(t),sigma)}
return(g(m))
 }

Lambda_den<- integrate(f = function(t) sapply(t, function(t) {
 den(t,m=m,beta=beta,mu0=mu0,mu1=mu1,gamma=gamma,delta=delta,sigma=sigma) # m is constant 
}) , lower = 0, upper = t)$value

然后对于“ t”矢量的值小于0.9的情况显示以下错误:

  Error in integrate(f = function(t) sapply(t, function(t) { : 
  non-finite function value

但是对于大于0.9的值,它将给出结果。如何避免此错误?

1 个答案:

答案 0 :(得分:0)

den<- function(t,m=3,beta=1.8,mu0=2,mu1=0.2,gamma=0.5,delta=1.6,sigma=0.1){
  mut<- function(t){mu0+mu1*t*exp(-gamma*(14+log(t,base=exp(1)))^delta)}
  g<- function(x){dexp(x,beta,log=FALSE)*pnorm(x,mut(t),sigma)}
  return(g(m))
}

s<- seq(0,10,length.out=2001)[-1]#t is a built in base R function. please refrain from using it as a variable

lapply(s,integrate,f=den,lower=0)