R中的集成:"longer object length is not a multiple of shorter object length"错误



我试图使用R来计算一组数据(likelihood_N)相对于参数$v_0$的边际似然。为此,我创建了以下子函数:

prior_u= function(v0, v){
1/40}
likelihood=function(v0,data){
#turns dataframe to vectors
Gmu=data[2]$V2
v=data[1]$V1

G=(1 - (1/g)*(sqrt(log(2)/pi)) * exp(- (log(2)*((v-v0)^2))/(g^2)))
return(dnorm(Gmu,G,s))
}
likelihood_N=function(v0,data){
prod(likelihood(v0,data))*prior_u(v0,data[1]$V1)
}

然而,当我使用integrateR内置功能时,它总是给我以下错误信息:

(v - v0)中的警告信息:"较长的对象长度不是较短对象长度的倍数">

在integral (likelihood (d_n, start, stop, dataset_1, subdivision = N)中出错:函数的求值结果长度错误

不管我选择的细分的数量。有人知道我该怎么解决这个问题吗?我对R很陌生所以我不知道是否有其他的积分函数可以用来计算边际似然。我试图创建自己的基于直方图的集成算法,但它非常无效,我想比较我得到的结果,以确保它们是正确的,因为它们似乎比我预期的要低。

integrate函数为您的likelihood_N提供了一个具有多个v0值的向量,但是您的函数被编写为仅处理单个数字v0

相关内容

最新更新