我正在寻找一种正确整合我的功能的方法:
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是解决这个问题的关键,但我不知道如何。
如果你能给我任何帮助,我将非常感激。感谢
答案 0 :(得分:1)
通常我建议在积分之前将2个变量的函数转换为一个变量的函数,如下所示。
myfunc <-function(x,y){ stuff}
intfunc <-function(x){myfunc(x,y)}
integrate(intfunc,x, etc)