mixsqp: Fast maximum-likelihood estimation of mixture proportions using sequential quadratic programming
The mixsqp R package provides algorithms based on sequential
quadratic programming for maximum likelihood estimation of the
mixture proportions in a finite mixture model where the component
densities are known. The SQP algorithm is expected to obtain solutions
that are at least as accurate as the state-of-the-art MOSEK
interior-point solver (called via the “KWDual” function in the
REBayes package), and is expected to compute these
solutions much more quickly in large data sets.
For more detailed installation instructions, see the “Setup” section
below.
Once you have installed the package, load the package in R:
library(mixsqp)
Next, run the small example provided with the mixsqp function:
example("mixsqp")
For a more detailed illustration of the SQP algorithm applied to the
problem of computing maximum-likelihood estimates for a mixture model,
read through the introductory vignette.
To learn more, visit the package website, or view
the “mixsqp” help page:
This command should automatically install all required packages if
they are not installed already.
If you have cloned the repository locally, you can install the package
with the install_local function from devtools. Assuming your working
directory contains the mixsqp repository, run this code to install the
package:
library(devtools)
install_local("mixsqp")
Additional setup notes
Compiling the mixsqp package from source will require a C++ compiler
setup that is appropriate for the the R installed on your
computer. For details, refer to the CRAN documentation. For
Mac computers, see these notes.
To use the (optional) alternative solver, “mixkwdual”, which is
mostly useful for comparisons of the different optimization methods,
you will need to install the REBayes package. The REBayes
package, in turn, requires the Rmosek package. Refer to the
MOSEK documentation for instructions on installing the
Rmosek package. Once you have followed these steps, you can run
this example to verify that Rmosek is
correctly installed. Installation of the REBayes package also allows
you to build the vignette and view it locally:
To install and test the mixsqp R package, run the following commands
in the shell:
R CMD build mixsqp
R CMD INSTALL mixsqp_0.3-31.tar.gz
R CMD check --as-cran mixsqp_0.3-31.tar.gz
Note that these commands require that the dependencies have already
been installed. See the DESCRIPTION file for details.
Updating the C++ source and documentation
When any changes are made to roxygen2 markup or to the C++
code in the src directory, simply run devtools::document() to
update the RcppExports.cpp, the NAMESPACE file,
and the package documentation files in the man directory.
Updating the pkgdown site
Run this line of R code to build the website (make sure you have an
Internet connection while running the code):
pkgdown::build_site()
Version 1.4.1 of pkgdown was used.
Other developer notes
Add file pre-commit to .git/hooks in the git repository to
prevent commits that don’t include a change to the package version.
mixsqp: Fast maximum-likelihood estimation of mixture proportions using sequential quadratic programming
The mixsqp R package provides algorithms based on sequential quadratic programming for maximum likelihood estimation of the mixture proportions in a finite mixture model where the component densities are known. The SQP algorithm is expected to obtain solutions that are at least as accurate as the state-of-the-art MOSEK interior-point solver (called via the “KWDual” function in the REBayes package), and is expected to compute these solutions much more quickly in large data sets.
For more details on the methods, please see the journal paper or the arXiv preprint.
The methods were originally implemented in Julia; please see here for the Julia implementation.
If you find a bug, or you have a question or feedback on our work, please post an issue.
Citing this work
If you find the mixsqp package or any of the source code in this repository useful for your work, please cite:
License
Copyright (c) 2017-2020, Youngseok Kim, Peter Carbonetto, Matthew Stephens and Mihai Anitescu.
All source code and software in this repository are made available under the terms of the MIT license.
Quick Start
Install mixsqp from CRAN:
For more detailed installation instructions, see the “Setup” section below.
Once you have installed the package, load the package in R:
Next, run the small example provided with the mixsqp function:
For a more detailed illustration of the SQP algorithm applied to the problem of computing maximum-likelihood estimates for a mixture model, read through the introductory vignette.
To learn more, visit the package website, or view the “mixsqp” help page:
Setup
To install mixsqp from CRAN, in R run:
Alternatively, to install the latest version of the mixsqp package from GitHub, use devtools:
This command should automatically install all required packages if they are not installed already.
If you have cloned the repository locally, you can install the package with the
install_localfunction from devtools. Assuming your working directory contains the mixsqp repository, run this code to install the package:Additional setup notes
Compiling the mixsqp package from source will require a C++ compiler setup that is appropriate for the the R installed on your computer. For details, refer to the CRAN documentation. For Mac computers, see these notes.
To use the (optional) alternative solver, “mixkwdual”, which is mostly useful for comparisons of the different optimization methods, you will need to install the REBayes package. The REBayes package, in turn, requires the Rmosek package. Refer to the MOSEK documentation for instructions on installing the Rmosek package. Once you have followed these steps, you can run this example to verify that Rmosek is correctly installed. Installation of the REBayes package also allows you to build the vignette and view it locally:
Developer notes
Testing the package
To install and test the mixsqp R package, run the following commands in the shell:
Note that these commands require that the dependencies have already been installed. See the DESCRIPTION file for details.
Updating the C++ source and documentation
When any changes are made to roxygen2 markup or to the C++ code in the
srcdirectory, simply rundevtools::document()to update the RcppExports.cpp, the NAMESPACE file, and the package documentation files in themandirectory.Updating the pkgdown site
Run this line of R code to build the website (make sure you have an Internet connection while running the code):
Version 1.4.1 of pkgdown was used.
Other developer notes
Add file
pre-committo.git/hooksin the git repository to prevent commits that don’t include a change to the package version.Credits
The mixsqp R package was developed by Youngseok Kim and Peter Carbonetto at the University of Chicago, with contributions from Matthew Stephens and Mihai Anitescu.