我在尝试使用R中的集成功能时遇到了问题。
non-finite function value
当我使用某些数据调用集成函数时,我不断收到此错误消息。我试图在(-1,1)的范围内限制目标函数 它集成在一个有限的区间(-1,1)。我无法找到任何有关此错误的解释。有没有人遇到过这种情况?非常感谢
功能参考链接如下
http://stat.ethz.ch/R-manual/R-devel/library/stats/html/integrate.html
以下是代码
f<-function(p,c,n,k,a,b){
Ans=p^(a-1)*(1-p)^(b-1)*(c*p)^(k)*(1-c*p)^(n-k)
if (is.finite(Ans)[1]){
return(Ans)
}
else if (abs(Ans)>1) {
return(1)
}
else {
return(0)
}
}
intFun<-function(c,n,k,a,b){
return(integrate(f,lower=0,upper=1,c=c,n=n,k=k,a=a,b=b,abs.tol =100)$value)
}
答案 0 :(得分:1)
猜测一下,您的问题是您丢失了NaN
个输入值,这些值被认为是非限定性的。这意味着此错误不仅可以通过无限值生成:
integrate(function(x) 1 / x, lower = -1, upper = 1)
## Error in integrate(function(x) 1/x, lower = -1, upper = 1) :
## non-finite function value
但也错过了:
integrate(function(x) ifelse(x == 0, NA, x), lower = -1, upper = 1)
## Error in integrate(function(x) ifelse(x == 0, NA, x), lower = -1, upper = 1) :
## non-finite function value