用R

时间:2019-01-25 14:16:43

标签: r numerical-methods numerical-integration

我需要在R中的两个变量(B0和B1)上计算一个双积分。 到目前为止,int2函数并没有什么复杂的事情。

但是,我要集成的函数包括伽玛不完全函数(R中的gammainc)!

出现以下错误消息:

 Error in gammainc(1/eta, lambda * exp(B0 + B1 * z_arm) * tmax^eta) : 
  Arguments must be of length 1; function is not vectorized. 

有什么建议可以帮助我吗? 谢谢!

 tmax = 5
 Sig = matrix ( c(0.2, 0, 0, 0.4) , ncol = 2 )
 Mu  = matrix ( c(1, 0) , ncol = 1 )
 eta = 0.5
 lambda = 0.8
 z_arm = c(rep(0.5,10), rep(1,15))


 to.integrate = function(B0, B1)
  {

   first.int =  1/eta *(lambda * exp(B0 + B1 * z_arm))^(-1/eta)* gammainc(1/eta, lambda * exp(B0 + B1 * z_arm)*tmax^eta)['lowinc']
   B = matrix(c(B0, B1), ncol=1)
   multi.norm = 1 / (2 * pi * det(Sig)^(1/2)) * exp (- 0.5 * t( B - Mu ) * solve(Sig) * ( B - Mu ) )

   return (first.int * multi.norm)

   }


 int2(to.integrate , a=c(-Inf,-Inf), b=c(Inf,Inf), eps=1.0e-6, max=16, d=5)

0 个答案:

没有答案