对数似然函数给出NaN值

时间:2019-12-13 13:15:45

标签: r optimization mle

我使用10个参数和数据作为输入的function()在R中编写了一个对数似然函数。当在某些参数估计值上计算似然函数时,我得到NA值。代码的结构如下:

likelihood = function(p,data){
s=2
J=4
theta = p[1:s]
alpha = p[s+1:s+2]
mu = p[s+3:s+2+J]
r = p[s+3+J:s+4+J]
nj11 = data[1:J]
nj12 = data[J+1:2*J]
n1 = data[(2*J)+1]
n2 = data[(2*J)+2]
P1 = rep(0,J)
P2 = rep(0, J)
li = rep(0,J)
for(j in 1:J){

P1[j] = ... is defined as a function of p and data
P2[j] = ...is defined as a function of p and data
li[j] = sum( log(P1[j])*nj11[j] , log(1 - P1[j])*(n1-nj11[j]) , log(P2[j])*nj12[j] , log(1 - P2[j])* 
(n2-nj12[j]) )
}#End of j

likelihood = sum(li)
return(-likelihood)

}#End of function likelihood


likelihood(c(0.4,0.7,0.2, 0.2, .3,.4,.3,.4,.4,.6),c(nj11,nj12,n1,n2)) 

在某些数据值估计中,似然度为NA。我无法优化此函数,因为目标函数应具有一些有限值。

当我以相同的值(未定义function())手动评估P1和P2时,它给我的sum(li)= -2223.436。

在定义函数时是否存在错误?

0 个答案:

没有答案