Skip to content

Poisson pseudo-likelihood regression with multiple levels of fixed effects

License

Notifications You must be signed in to change notification settings

sergiocorreia/ppmlhdfe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ppmlhdfe: Poisson pseudo-likelihood regression with multiple levels of fixed effects

GitHub release (latest by date) GitHub Release Date GitHub commits since latest release (by date) StataMin DOI

ppmlhdfe is a Stata package that implements Poisson pseudo-maximum likelihood regressions (PPML) with multi-way fixed effects, as described in Correia, Guimarães, Zylkin (2019a). The estimator employed is robust to statistical separation and convergence issues, due to the procedures developed in Correia, Guimarães, Zylkin (2019b).

Recent updates

  • Version 2.3 27jun2021: minor changes due to reghdfe's v6 update. Currently, ppmlhdfe is still using the code from reghdfe v5, which the new version ships with. A port is planned at some point in the future, but because some Mata functions changed their behavior, this needs to be done carefully.
  • Version 2.2 02aug2019: major speedups due to improved IRLS acceleration (see page 7 of the paper) and due to faster separation checks.
  • Version 2.1 04apr2019: added experimental step-halving. Not as useful for Poisson models as with other GLMs, so it's turned off by default. You can enable it by including the option use_step_halving(1). Other options you can set are step_halving_memory(0.9) and max_step_halving(2) (default values in parenthesis).

Citation

(Download BibTex file here)

As text

  • Sergio Correia, Paulo Guimarães, Thomas Zylkin: “Verifying the existence of maximum likelihood estimates for generalized linear models”, 2019; arXiv:1903.01633.
  • Sergio Correia, Paulo Guimarães, Thomas Zylkin. Fast Poisson estimation with high-dimensional fixed effects. The Stata Journal. 2020;20(1):95-115. doi:10.1177/1536867X20909691

As BibTex

@Misc{ExistenceGLM,
  Author = {Correia, Sergio and Guimar{\~a}es, Paulo and Zylkin, Thomas},
  Title = {Verifying the existence of maximum likelihood estimates for generalized linear models},
  Year = {2019},
  Eprint = {arXiv:1903.01633},
}

@article{ppmlhdfe,
  Author = {Correia, Sergio and Guimar{\~a}es, Paulo and Zylkin, Thomas},
  Title ={{Fast Poisson estimation with high-dimensional fixed effects}},
  Journal = {The Stata Journal},
  Volume = {20},
  Number = {1},
  Pages = {95-115},
  Year = {2020},
  DOI = {10.1177/1536867X20909691},
  URL = {https://doi.org/10.1177/1536867X20909691},
  eprint = {https://doi.org/10.1177/1536867X20909691}
}

References

Quick information on the command can be glanced from the help file.

For detailed information:

  • The ppmlhdfe paper explains the command in depth, provides examples, etc.
  • The paper on statistical separation discusses the crucial step of solving the separation issue, that can otherwise lead to incorrect convergence (or no convergence) in Poisson and other GLM models.

For introductory guides on separation, and on how ppmlhdfe internally address it, see the following documents:

  • Separation primer: a quick practical introduction to separation in Poisson models.
  • Separation benchmarks: shows how separation affects all common statistical packages.
  • Undocumented options: this pages briefly lists otherwise undocumented options of ppmlhdfe, which might be useful for advanced users.

Installation

ppmlhdfe requires the latest versions of ftools and reghdfe.

To install stable versions from SSC:

cap ado uninstall ftools
cap ado uninstall reghdfe
cap ado uninstall ppmlhdfe

ssc install ftools
ssc install reghdfe
ssc install ppmlhdfe

clear all
ftools, compile
reghdfe, compile

* Test program
sysuse auto, clear
reghdfe price weight, a(turn)
ppmlhdfe price weight, a(turn)

To install the latest versions from Github:

* Install ftools
cap ado uninstall ftools
net install ftools, from("https://raw.githubusercontent.com/sergiocorreia/ftools/master/src/")

* Install reghdfe
cap ado uninstall reghdfe
net install reghdfe, from("https://raw.githubusercontent.com/sergiocorreia/reghdfe/master/src/")

* Install ppmlhdfe
cap ado uninstall ppmlhdfe
net install ppmlhdfe, from("https://raw.githubusercontent.com/sergiocorreia/ppmlhdfe/master/src/")

* Create compiled files
ftools, compile
reghdfe, compile

* Check versions
ppmlhdfe, version

* Clear programs already in memory
program drop _all

* Test program
sysuse auto, clear
reghdfe price weight, a(turn)
ppmlhdfe price weight, a(turn)