在r中整合一个变量的向量

时间:2016-02-01 12:45:26

标签: r integration vectorization numerical-integration

我正在寻找一种正确整合我的功能的方法:

lik = function(par, x){
  cl = c()
  for(i in 1:ncluster){
    sub = c() 
    for(j in 1:nsub){ 
      times = t[[i]][[j]]
      m = c(1,t[[i]][j],t(cov[[i]][j,])) 
      repmat = cbind(1,1:t[[i]][j],matrix(rep(cov[[i]][j,], times),times, 3,byrow=T))
      sub[j] = d[[i]][j]*m%*%c(par[-5],x)-sum(log((1+exp(repmat%*%c(par[-5],x))))) 
    }  
    cl[i] = sum(sub) 
  } 
  return(exp(cl))  
}

函数lik(可能性)需要x,长度为5的向量par,并在每个群集的x处生成可能性向量。例如,

> lik(1:5,1)
[1] 4.640101e-30 3.632315e-44 5.348611e-09 1.121790e-27 1.696704e-98
> #number of clusters=5

我想整合x以便我可以在每个集群中获得边缘化pdf的向量,但函数integrate或任何其他数值集成包只能集成标量函数。我已经搜索了与此相关的问题,也许Vectorization是解决这个问题的关键,但我不知道如何。

如果你能给我任何帮助,我将非常感激。感谢

1 个答案:

答案 0 :(得分:1)

通常我建议在积分之前将2个变量的函数转换为一个变量的函数,如下所示。

myfunc <-function(x,y){ stuff}

intfunc <-function(x){myfunc(x,y)}

integrate(intfunc,x, etc)