R 中的积分显示非有限结果
Integral in R shows non-finite result
我有一个向量 "t" 我正在尝试对 t 的函数进行积分,将下限作为 0,将上限作为 "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 的值,它会给出结果。我怎样才能避免这个错误?
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)
我有一个向量 "t" 我正在尝试对 t 的函数进行积分,将下限作为 0,将上限作为 "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 的值,它会给出结果。我怎样才能避免这个错误?
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)