请问各位,以下程序到底哪里出了问题,函数ln1 可以计算,但是最优化的时候就会出问题
ln1=function(lam1,h,data,beta){
x1=data$x1; y1=data$y1; n1=length(y1)
x2=data$x2; y2=data$y2; n2=length(y2)
theta=n1/(n1+n2)
z1=x1*as.vector(dnorm(y1,x1%*%beta,h)*(y1-x1%*%beta))
part=1+z1%*%lam1/theta
index=which(1+z1%*%lam1/theta<=1/n1)
part[index]=-log(n1)-1.5+2*n1*part[index]-(n1*part[index])^2/2
nln=-2*sum(log(part+1e-50))
if( is.na(nln)|is.nan(nln)|is.infinite(nln)|nln>1e10) nln=1e10
nln
}
x1=as.matrix(rnorm(100,0,1)); x2=as.matrix(rnorm(100,0,1))
x1=cbind(1,x1); x2=cbind(1,x2)
y1=rnorm(100,0,1); y2=rnorm(100,0,1)
data=list(x1=x1,x2=x2,y1=y1,y2=y2)
beta=c(1,2); h=1; lam1=c(0.1,0.1)
ln1(lam1,h,data,beta)
lam=c(0,0)
nlminb(start=lam,ln1,h=h,data=data,beta=beta)