Вычисление двойного интеграла с гамма-неполной функцией в R - PullRequest
0 голосов
/ 25 января 2019

Мне нужно вычислить двойной интеграл по двум переменным (B0 и B1) в R. До сих пор ничего сложного с функцией int2.

Но моя интегрируемая функция включает функцию неполного гамма (gammainc в R)!

Появляется следующее сообщение об ошибке:

 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)
...