BLP demand estimation with Python 3
Project description
An overview of the model, examples, references, and other documentation can be found on Read the Docs.
PyBLP is a Python 3 implementation of routines for estimating the demand for differentiated products with BLP-type random coefficients logit models. This package was created by Jeff Gortmaker in collaboration with Chris Conlon.
Development of the package has been guided by the work of many researchers and practitioners. For a full list of references, including the original work of Berry, Levinsohn, and Pakes (1995), refer to the references section of the documentation.
Citation
If you use PyBLP in your research, we ask that you also cite Conlon and Gortmaker (2020), which describes the advances implemented in the package.
Installation
The PyBLP package has been tested on Python versions 3.6 and 3.7. The SciPy instructions for installing related packages is a good guide for how to install a scientific Python environment. A good choice is the Anaconda Distribution, since it comes packaged with the following PyBLP dependencies: NumPy, SciPy, SymPy, and Patsy. For absorption of high dimension fixed effects, PyBLP also depends on its companion package PyHDFE, which will be installed when PyBLP is installed.
However, PyBLP may not work with old versions of its dependencies. You can update PyBLP’s Anaconda dependencies with:
conda update numpy scipy sympy patsy
You can update PyHDFE with:
pip install --upgrade pyhdfe
You can install the current release of PyBLP with pip:
pip install pyblp
You can upgrade to a newer release with the --upgrade flag:
pip install --upgrade pyblp
If you lack permissions, you can install PyBLP in your user directory with the --user flag:
pip install --user pyblp
Alternatively, you can download a wheel or source archive from PyPI. You can find the latest development code on GitHub and the latest development documentation here.
Other Languages
Once installed, PyBLP can be incorporated into projects written in many other languages with the help of various tools that enable interoperability with Python.
For example, the reticulate package makes interacting with PyBLP in R straightforward:
library(reticulate) pyblp <- import("pyblp")
Similarly, PyCall can be used to incorporate PyBLP into a Julia workflow:
using PyCall pyblp = pyimport("pyblp")
The py command serves a similar purpose in MATLAB:
py.pyblp
Features
R-style formula interface
Bertrand-Nash supply-side moments
Multiple equation GMM
Demographic interactions
Micro moments that match product and agent characteristic covariances
Fixed effect absorption
Nonlinear functions of product characteristics
Concentrating out linear parameters
Normal and lognormal random coefficients
Parameter bounds and constraints
Random coefficients nested logit (RCNL)
Varying nesting parameters across groups
Logit and nested logit benchmarks
Classic BLP instruments
Differentiation instruments
Optimal instruments
Tests of overidentifying and model restrictions
Parametric boostrapping post-estimation outputs
Elasticities and diversion ratios
Marginal costs and markups
Profits and consumer surplus
Merger simulation
Custom counterfactual simulation
Synthetic data construction
SciPy or Artleys Knitro optimization
Fixed point acceleration
Monte Carlo, quasi-random sequences, quadrature, and sparse grids
Importance sampling
Custom optimization and iteration routines
Robust and clustered errors
Linear or log-linear marginal costs
Partial ownership matrices
Analytic gradients
Finite difference Hessians
Market-by-market parallelization
Extended floating point precision
Robust error handling
Features Slated for Future Versions
Other micro moments
Fast, “Robust,” and Approximately Correct (FRAC) estimation
Analytic Hessians
Mathematical Program with Equilibrium Constraints (MPEC)
Generalized Empirical Likelihood (GEL)
Discrete types
Pure characteristics model
Newton methods for computing equilibrium prices
Bugs and Requests
Please use the GitHub issue tracker to submit bugs or to request features.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.