## open problem

**O**n the plane back from Warwick, I was reading an ABC arXived paper by Umberto Picchini and Julie Forman, “Accelerating inference for diffusions observed with measurement error and large sample sizes using Approximate Bayesian Computation: A case study” and came upon this open problem:

“A closed-form expression for generating percentiles from a finite-components Gaussian mixture is unavailable.” (p.5)

which means solving

is not possible in closed form. (Of course it could also be argued that the equation *Φ(x)=β* is unavailable in closed-form ie that the analytic solution *x=Φ ^{-1}(β)* is formal…) While I can think of several numerical approaches, a few minutes with a sheet of paper let me convinced that indeed this is not solvable (hence not an open problem, contrary to the title of the post!).

**J**ust for R practice (and my R course students!), here is a basic R code:

mixant=function(alpha=0.5,beta=0.95,mu,sig=1,prec=1/10^4){ onmal=1-alpha qbeta=qnorm(beta) # initial bounds omb=min(qbeta,mu+sig*qbeta) omB=max(qbeta,mu+sig*qbeta) if (beta<alpha){ omB=min(omB,qnorm(beta/alpha)) }else{ omb=max(omb,mu+sig*qnorm((beta-alpha)/onmal))} if (beta<onmal){ omB=min(omB,mu+sig*qnorm(beta/onmal)) }else{ omb=max(omb,qnorm((beta-onmal)/alpha))} # iterations for (t in 1:5){ ranj=seq(omb,omB,len=17) cfs=alpha*pnorm(ranj)+onmal*pnorm((ranj-mu)/sig) omb=max(ranj[cfs<=beta]) omB=min(ranj[cfs>=beta]) if ((omB-omb)<prec) break()} return(.5*(omb+omB))}

October 24, 2013 at 10:29 am

If one of my students wrote that code, I would tell them off for naming one of their variables qbeta, at the risk of confusion with the function of the same name… (When I read your code, I initially wondered why you were using the function qbeta, before realizing that you weren’t.)

October 24, 2013 at 10:43 am

indeed, indeed, terrible first-year mistake that I spotted in a student’s code just last week… He had redefined hist and could not plot his histogram.