如何根据R中的参数集成函数?

如何根据R中的参数集成函数?,r,integral,integrate,R,Integral,Integrate,我估计正态逆高斯最大似然。在optim()之后 “误差f积分(f2,下限=0,上限=Inf,z=z):函数的计算结果长度错误” 代码中有bug的部分是 f2 <- function (t, z) { exp(-t)*t^(1-1/2)*(1+t/2*z)^(1-1/2) } int2 <- function (z) { integrate(f2, lower=0, upper=Inf, z=z)$value } f2如果yobs的长度大于1,那么zval也会这

我估计正态逆高斯最大似然。在
optim()之后

“误差f积分(f2,下限=0,上限=Inf,z=z):函数的计算结果长度错误”

代码中有bug的部分是

f2 <- function (t, z) {
    exp(-t)*t^(1-1/2)*(1+t/2*z)^(1-1/2)
}
int2 <- function (z) { 
    integrate(f2,  lower=0, upper=Inf, z=z)$value 
}

f2如果
yobs
的长度大于1,那么
zval
也会这样做,如果
yobs
的长度大于1,
zval
K1中调用
int2
时的
f2
返回值也会这样做,调用
int2
K1中的
f2
的返回值要将int2应用于向量参数,可以在公式中引入新函数
int2vec
,并使用它代替
int2

int2vec<-function(t) sapply(t,int2)

int2vec要将int2应用于向量参数,您可以在公式中引入新函数
int2vec
,并使用它而不是
int2

int2vec<-function(t) sapply(t,int2)
int2vec例如:

F2 <- function(z){
    f2 <- function(t){
       exp(-t)*t^(1-1/2)*(1+t/2*z)^(1-1/2)
   }
return(f2)
}
int2 <- function (z) { 
    integrate(F2(z),  lower=0, upper=Inf)$value 
}
> int2(1)
[1] 1.156935
F2例如:

F2 <- function(z){
    f2 <- function(t){
       exp(-t)*t^(1-1/2)*(1+t/2*z)^(1-1/2)
   }
return(f2)
}
int2 <- function (z) { 
    integrate(F2(z),  lower=0, upper=Inf)$value 
}
> int2(1)
[1] 1.156935

F2提示:F2是两个变量的函数。提示:F2是两个变量的函数。Nice(+1);我没有想到这是一个补丁;我没有想到这是一个解决办法。