Skip to content
Prev 139911 / 398502 Next

problem with optim and integrate

Dear all,

I want to min "integrate( (p1*dnorm+p2*dnorm+p3*dnorm)^(1.3))" for p, mu,
and sigma.

So, I have to estimate 8 parameters(p3=1-p1-p2).

Sometimes I got some results, but it was bad, sometimes, I got this
warning-"Error in integrate(numint, lower = -Inf, upper = Inf) : non-finite
function value."

My questions are

1. How could I fix this error? Actually, I can not understand why it is not
finite function. Anyway, I tried to divide into several intervals and sum
up, but I failed.

2. how could I improve results?


My code is 

-----------------------------------------------------------------------------------

alpha=1.3; theta0=c(0.5,0,sqrt(10),0.25,-.3,sqrt(0.05),.3,sqrt(0.05))

fc = function(theta){

  numint = function(z)
  {
	    
(theta[1]*dnorm(z,mean=theta[2],sd=theta[3])+theta[4]*dnorm(z,mean=theta[5],sd=theta[6])
             
+(1-(theta[1]+theta[4]))*dnorm(z,mean=theta[7],sd=theta[8]))^alpha
  }


  inte = integrate(numint,lower=-Inf, upper=Inf)$value
  inte
}

optim(theta0, fc, method="L-BFGS-B",hessian=T,
lower=c(rep(c(0,-Inf,0),2),-Inf,0),upper=c(rep(c(1,Inf,4),2),Inf,4))

-----------------------------------------------------------------------------------

Thank you in advance.

Kathryn lord