我是R. 我正在尝试使用有界参数最大化对数似然函数。该函数是一种伽马混合模型,它试图捕捉个体之间未观察到的异质性。我选择了optim's L-BFGS-B函数包含两个参数(即alpha和r),它们应该具有正值。但是,优化不会发生并返回初始参数并显示以下消息。
#Sample data
data<-matrix(c(1,36,547,2,54,464,3,92,415,4,114,1106,5,10,1038),ncol=3,byrow=TRUE)
colnames(data)<-c("ID","freq","time")
在下面的代码中,我使用以下功能术语。
ni = data[i,2] ## ni是个体i的频率
tis + tic = data[i,3] ## tis+tic 是个体 i 的总时间
#Likelihood function I want to optimize
ll <- function(theta){
alpha<-theta[1] #scale parameter >0
r<-theta[2] #shape parameter >0
ll_i=c()
s=c()
for(i in 1:5){
for(j in 0:data[i,2]-1){
s[j+1]<-log(r+j+1)
}
ll_i[i]<-r*log(alpha)+sum(s)-(data[i,2]+r)*log(alpha+data[i,3])
s=c()
}
print(ll_i)
ll<-sum(ll_i)
return(-ll)
}
# Initial parameters
init<-c(alpha=1,r=5)
# L-BFGS-B optimization
ans<-optim(par=init,fn=ll,method="L-BFGS-B",lower=c(1e-10,1e-10),upper=c(Inf,Inf))
$message
[1] "CONVERGENCE: NORM OF PROJECTED GRADIENT <= PGTOL"
任何关于成功优化的提示?