  Maximum likelihood estimation of mixture proportions has a long history, and
continues to play an important role in modern statistics, including in
development of nonparametric empirical Bayes methods. Maximum likelihood of
mixture proportions has traditionally been solved using the expectation
maximization (EM) algorithm, but recent work by Koenker & Mizera shows that
modern convex optimization techniques -- in particular, interior point methods
-- are substantially faster and more accurate than EM. Here, we develop a new
solution based on sequential quadratic programming (SQP). It is substantially
faster than the interior point method, and just as accurate. Our approach
combines several ideas: first, it solves a reformulation of the original
problem; second, it uses an SQP approach to make the best use of the expensive
gradient and Hessian computations; third, the SQP iterations are implemented
using an active set method to exploit the sparse nature of the quadratic
subproblems; fourth, it uses accurate low-rank approximations for more
efficient gradient and Hessian computations. We illustrate the benefits of our
approach in experiments on synthetic data sets as well as a large genetic
association data set. In large data sets (n = 1,000,000 observations, m = 1,000
mixture components), our implementation achieves at least 100-fold reduction in
runtime compared with a state-of-the-art interior point solver. Our methods are
implemented in Julia, and in an R package available on CRAN (see
https://CRAN.R-project.org/package=mixsqp).
