这里,我的函数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));
我发现了以下错误;
optim中的错误(par = c(0.5,2.5),fn = nd,method =“L-BFGS-B”,lower = c(0.01 ,: L-BFGS-B需要有限值'fn'