我有一个向量“ 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的值,它将给出结果。如何避免此错误?
答案 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)