PyTwoWay is the Python package associated with the following paper:

How Much Should we Trust Estimates of Firm Effects and Worker Sorting?” by Stéphane Bonhomme, Kerstin Holzheu, Thibaut Lamadon, Elena Manresa, Magne Mogstad, and Bradley Setzler. No. w27368. National Bureau of Economic Research, 2020.

The package provides implementations for a series of estimators for models with two sided heterogeneity:

  1. two way fixed effect estimator as proposed by Abowd Kramarz and Margolis

  2. homoskedastic bias correction as in Andrews et al

  3. heteroskedastic correction as in KSS

  4. a group fixed estimator as in BLM

  5. a group correlated random effect as presented in the main paper

If you want to give it a try, you can start the example notebook here: binder. This starts a fully interactive notebook with a simple example that generates data and runs the estimators.

The code is relatively efficient. Solving large sparse linear models relies on PyAMG. This is the code we use to estimate the different decompositions on US data. Data cleaning is handled by BipartitePandas.

The package provides a Python interface as well as an intuitive command line interface. Installation is handled by pip or Conda (TBD). The source of the package is available on GitHub at PyTwoWay. The online documentation is hosted here.

Quick Start

To install via pip, from the command line run:

pip install pytwoway

To run PyTwoWay via the command line interface, from the command line run:

pytw --my-config config.txt --fe --cre

Example config.txt:

data = file.csv
filetype = csv
col_dict = "{'i': 'your_workerid_col', 'j': 'your_firmid_col', 'y': 'your_compensation_col', 't': 'your_year_col'}"


Thibaut Lamadon, Assistant Professor in Economics, University of Chicago,

Adam A. Oppenheimer, Research Professional, University of Chicago,


Please use following citation to cite PyTwoWay in academic publications:

Bibtex entry:

  title={How Much Should We Trust Estimates of Firm Effects and Worker Sorting?},
  author={Bonhomme, St{\'e}phane and Holzheu, Kerstin and Lamadon, Thibaut and Manresa, Elena and Mogstad, Magne and Setzler, Bradley},
  institution={National Bureau of Economic Research}


If you want to contribute to the package, the easiest way is to use poetry to set up a local environment:

poetry install
poetry run python -m pytest

To push the package to PiP, increase the version number in the pyproject.toml file and then

poetry build poetry publish

Finally to build the package for conda and upload it

conda skeleton pypi pytwoway conda config –set anaconda_upload yes conda-build pytwoway -c tlamadon –output-folder pytwoway