1

在这里,我的函数 nd 可以正常工作,但是当我在 OPTIM 函数中使用它时会出错。我的错误是什么?代码是

ta=c(2.0, 4.0);       
n=500;                

x=runif(n);        

TT=rexp(n,1);       
D=matrix(0,n,1);        

for (j in 1:n) {
D[j]=ifelse(TT[j]>x[j],1,0)
}

xt=matrix(0,length(ta),1);
for (ii in 1:length(ta)) {
 xt[ii]=sum(I(TT<ta[ii])*D)      
}

nd<- function(params) {
tta=c(params[1],params[2]);
ss1=0;

ss1=xt[1]*log(xt[1]/sum(pmin(TT,tta[1])))+(xt[2]-xt[1])*log((xt[2]-xt[1])/sum((pmin(TT,tta[2])-tta[1])*I(TT>tta[1])))+(sum(D)-xt[2])*log((sum(D)-xt[2])/sum((TT-tta[2])*I(TT>tta[2])));
ll=-ss1;

return (ll)  
 }


nn<-optim(par=c(0.5,2.5),fn=nd, method = "L-BFGS-B", lower=c(0.01,2.01), upper=c(3.99, 9.99));

我发现以下错误;

优化错误(par = c(0.5, 2.5), fn = nd, method = "L-BFGS-B", lower = c(0.01, : L-BFGS-B 需要 'fn' 的有限值

4

0 回答 0