# pyfixest **Repository Path**: daz-ddd/pyfixest ## Basic Information - **Project Name**: pyfixest - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-11 - **Last Updated**: 2025-09-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![](figures/pyfixest-logo.png) # PyFixest: Fast High-Dimensional Fixed Effects Regression in Python [![License](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/license/mit) ![Python Versions](https://img.shields.io/badge/Python-3.9–3.12-blue) [![PyPI -Version](https://img.shields.io/pypi/v/pyfixest.svg)](https://pypi.org/project/pyfixest/) [![Project Chat][chat-badge]][chat-url] [![image](https://codecov.io/gh/py-econometrics/pyfixest/branch/master/graph/badge.svg)](https://codecov.io/gh/py-econometrics/pyfixest) [![Known Bugs](https://img.shields.io/github/issues/py-econometrics/pyfixest/bug?color=red&label=Bugs)](https://github.com/py-econometrics/pyfixest/issues?q=is%3Aissue+is%3Aopen+label%3Abug) [![File an Issue](https://img.shields.io/github/issues/py-econometrics/pyfixest)](https://github.com/py-econometrics/pyfixest/issues) [![Downloads](https://static.pepy.tech/badge/pyfixest)](https://pepy.tech/project/pyfixest) [![Downloads](https://static.pepy.tech/badge/pyfixest/month)](https://pepy.tech/project/pyfixest) [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![Pixi Badge][pixi-badge]][pixi-url] [![Donate | GiveDirectly](https://img.shields.io/static/v1?label=GiveDirectly&message=Donate&color=blue&style=flat-square)](https://github.com/py-econometrics/pyfixest?tab=readme-ov-file#support-pyfixest) [![PyPI](https://img.shields.io/pypi/v/pyfixest)](https://pypi.org/project/pyfixest) [![Citation](https://img.shields.io/badge/Cite%20as-PyFixest-blue)](https://github.com/py-econometrics/pyfixest?tab=readme-ov-file#how-to-cite) [![Documentation](https://img.shields.io/badge/Open-Documentation-orange)](https://py-econometrics.github.io/pyfixest/pyfixest.html) [![Function Reference](https://img.shields.io/badge/Open-Function%20Reference-yellow)](https://py-econometrics.github.io/pyfixest/reference/) [pixi-badge]:https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/prefix-dev/pixi/main/assets/badge/v0.json&style=flat-square [pixi-url]: https://pixi.sh [chat-badge]: https://img.shields.io/discord/1259933360726216754.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2&style=flat-square [chat-url]: https://discord.gg/gBAydeDMVK `PyFixest` is a Python package for fast high-dimensional fixed effects regression. The package aims to mimic the syntax and functionality of the formidable [fixest](https://github.com/lrberge/fixest) package as closely as Python allows: if you know `fixest` well, the goal is that you won't have to read the docs to get started! In particular, this means that all of `fixest's` defaults are mirrored by `PyFixest`. For a quick introduction, you can take a look at the [quickstart](https://py-econometrics.github.io/pyfixest/quickstart.html) or the regression chapter of [Arthur Turrell's](https://github.com/aeturrell) book on [Coding for Economists](https://aeturrell.github.io/coding-for-economists/econmt-regression.html#imports). You can find documentation of all user facing functions in the [Function Reference](https://py-econometrics.github.io/pyfixest/reference/) section of the [documentation](https://py-econometrics.github.io/pyfixest/pyfixest.html). For questions on `PyFixest`, head on over to our [github discussions](https://github.com/py-econometrics/pyfixest/discussions), or (more informally) join our [Discord server](https://discord.gg/gBAydeDMVK). ## Support PyFixest If you enjoy using `PyFixest`, please consider donating to [GiveDirectly](https://donate.givedirectly.org/dedicate) and dedicating your donation to `pyfixest.dev@gmail.com`. You can also leave a message through the donation form - your support and encouragement mean a lot to the developers! ## Features - **OLS**, **WLS** and **IV** Regression with Fixed-Effects Demeaning via [Frisch-Waugh-Lovell](https://bookdown.org/ts_robinson1994/10EconometricTheorems/frisch.html) - **Poisson Regression** following the [pplmhdfe algorithm](https://journals.sagepub.com/doi/full/10.1177/1536867X20909691) - Probit, Logit and Gaussian Family **GLMs** (currently without fixed effects demeaning, this is WIP) - **Quantile Regression** using an Interior Point Solver - Multiple Estimation Syntax - Several **Robust** and **Cluster Robust Variance-Covariance** Estimators - **Wild Cluster Bootstrap** Inference (via [wildboottest](https://github.com/py-econometrics/wildboottest)) - **Difference-in-Differences** Estimators: - The canonical Two-Way Fixed Effects Estimator - [Gardner's two-stage ("`Did2s`")](https://jrgcmu.github.io/2sdd_current.pdf) estimator - Basic Versions of the Local Projections estimator following [Dube et al (2023)](https://www.nber.org/papers/w31184) - The fully saturated Event-Study estimator following [Sun & Abraham (2021)](https://www.sciencedirect.com/science/article/abs/pii/S030440762030378X) - **Multiple Hypothesis Corrections** following the Procedure by [Romano and Wolf](https://journals.sagepub.com/doi/pdf/10.1177/1536867X20976314) and **Simultaneous Confidence Intervals** using a **Multiplier Bootstrap** - Fast **Randomization Inference** as in the [ritest Stata package](https://hesss.org/ritest.pdf) - The **Causal Cluster Variance Estimator (CCV)** following [Abadie et al.](https://economics.mit.edu/sites/default/files/2022-09/When%20Should%20You%20Adjust%20Standard%20Errors%20for%20Clustering.pdf) - Regression **Decomposition** following [Gelbach (2016)](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1425737) - **Publication-ready tables** with [Great Tables](https://posit-dev.github.io/great-tables/articles/intro.html) or LaTex booktabs ## Installation You can install the release version from `PyPI` by running ```py # inside an active virtual environment python -m pip install pyfixest ``` or the development version from github by running ```py python -m pip install git+https://github.com/py-econometrics/pyfixest ``` For visualization features using the lets-plot backend, install the optional dependency: ```py python -m pip install pyfixest[plots] ``` Note that matplotlib is included by default, so you can always use the matplotlib backend for plotting even without installing the optional lets-plot dependency. ## Benchmarks All benchmarks follow the [fixest benchmarks](https://github.com/lrberge/fixest/tree/master/_BENCHMARK). All non-pyfixest timings are taken from the `fixest` benchmarks. ![](benchmarks/lets-plot-images/benchmarks_ols.svg) ![](benchmarks/lets-plot-images/benchmarks_poisson.svg) ![](benchmarks/quantreg_benchmarks.png) ## Quickstart ```python import pyfixest as pf data = pf.get_data() pf.feols("Y ~ X1 | f1 + f2", data=data).summary() ``` ### Estimation: OLS Dep. var.: Y, Fixed effects: f1+f2 Inference: CRV1 Observations: 997 | Coefficient | Estimate | Std. Error | t value | Pr(>|t|) | 2.5% | 97.5% | |:--------------|-----------:|-------------:|----------:|-----------:|-------:|--------:| | X1 | -0.919 | 0.065 | -14.057 | 0.000 | -1.053 | -0.786 | --- RMSE: 1.441 R2: 0.609 R2 Within: 0.2 ### Multiple Estimation You can estimate multiple models at once by using [multiple estimation syntax](https://aeturrell.github.io/coding-for-economists/econmt-regression.html#multiple-regression-models): ```python # OLS Estimation: estimate multiple models at once fit = pf.feols("Y + Y2 ~X1 | csw0(f1, f2)", data = data, vcov = {'CRV1':'group_id'}) # Print the results fit.etable() ``` est1 est2 est3 est4 est5 est6 ------------ ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- depvar Y Y2 Y Y2 Y Y2 ------------------------------------------------------------------------------------------------------------------------------ Intercept 0.919*** (0.121) 1.064*** (0.232) X1 -1.000*** (0.117) -1.322*** (0.211) -0.949*** (0.087) -1.266*** (0.212) -0.919*** (0.069) -1.228*** (0.194) ------------------------------------------------------------------------------------------------------------------------------ f2 - - - - x x f1 - - x x x x ------------------------------------------------------------------------------------------------------------------------------ R2 0.123 0.037 0.437 0.115 0.609 0.168 S.E. type by: group_id by: group_id by: group_id by: group_id by: group_id by: group_id Observations 998 999 997 998 997 998 ------------------------------------------------------------------------------------------------------------------------------ Significance levels: * p < 0.05, ** p < 0.01, *** p < 0.001 Format of coefficient cell: Coefficient (Std. Error) ### Adjust Standard Errors "on-the-fly" Standard Errors can be adjusted after estimation, "on-the-fly": ```python fit1 = fit.fetch_model(0) fit1.vcov("hetero").summary() ``` Model: Y~X1 ### Estimation: OLS Dep. var.: Y Inference: hetero Observations: 998 | Coefficient | Estimate | Std. Error | t value | Pr(>|t|) | 2.5% | 97.5% | |:--------------|-----------:|-------------:|----------:|-----------:|-------:|--------:| | Intercept | 0.919 | 0.112 | 8.223 | 0.000 | 0.699 | 1.138 | | X1 | -1.000 | 0.082 | -12.134 | 0.000 | -1.162 | -0.838 | --- RMSE: 2.158 R2: 0.123 ### Poisson Regression via `fepois()` You can estimate Poisson Regressions via the `fepois()` function: ```python poisson_data = pf.get_data(model = "Fepois") pf.fepois("Y ~ X1 + X2 | f1 + f2", data = poisson_data).summary() ``` ### Estimation: Poisson Dep. var.: Y, Fixed effects: f1+f2 Inference: CRV1 Observations: 997 | Coefficient | Estimate | Std. Error | t value | Pr(>|t|) | 2.5% | 97.5% | |:--------------|-----------:|-------------:|----------:|-----------:|-------:|--------:| | X1 | -0.007 | 0.035 | -0.190 | 0.850 | -0.075 | 0.062 | | X2 | -0.015 | 0.010 | -1.449 | 0.147 | -0.035 | 0.005 | --- Deviance: 1068.169 ### IV Estimation via three-part formulas Last, `PyFixest` also supports IV estimation via three part formula syntax: ```python fit_iv = pf.feols("Y ~ 1 | f1 | X1 ~ Z1", data = data) fit_iv.summary() ``` ### Estimation: IV Dep. var.: Y, Fixed effects: f1 Inference: CRV1 Observations: 997 | Coefficient | Estimate | Std. Error | t value | Pr(>|t|) | 2.5% | 97.5% | |:--------------|-----------:|-------------:|----------:|-----------:|-------:|--------:| | X1 | -1.025 | 0.115 | -8.930 | 0.000 | -1.259 | -0.790 | --- ## Quantile Regression via `pf.quantreg` ```python fit_qr = pf.quantreg("Y ~ X1 + X2", data = data, quantile = 0.5) ``` ## Call for Contributions Thanks for showing interest in contributing to `pyfixest`! We appreciate all contributions and constructive feedback, whether that be reporting bugs, requesting new features, or suggesting improvements to documentation. If you'd like to get involved, but are not yet sure how, please feel free to send us an [email](alexander-fischer1801@t-online.de). Some familiarity with either Python or econometrics will help, but you really don't need to be a `numpy` core developer or have published in [Econometrica](https://onlinelibrary.wiley.com/journal/14680262) =) We'd be more than happy to invest time to help you get started! ## Contributors ✨ Thanks goes to these wonderful people:
styfenschaer
styfenschaer

πŸ’»
Niall Keleher
Niall Keleher

πŸš‡ πŸ’»
Wenzhi Ding
Wenzhi Ding

πŸ’»
Apoorva Lal
Apoorva Lal

πŸ’» πŸ›
Juan Orduz
Juan Orduz

πŸš‡ πŸ’»
Alexander Fischer
Alexander Fischer

πŸ’» πŸš‡
aeturrell
aeturrell

βœ… πŸ“– πŸ“£
leostimpfle
leostimpfle

πŸ’» πŸ›
baggiponte
baggiponte

πŸ“–
Sanskriti
Sanskriti

πŸš‡
Jaehyung
Jaehyung

πŸ’»
Alex
Alex

πŸ“–
Hayden Freedman
Hayden Freedman

πŸ’» πŸ“–
Aziz Mamatov
Aziz Mamatov

πŸ’»
rafimikail
rafimikail

πŸ’»
Benjamin Knight
Benjamin Knight

πŸ’»
Dirk Sliwka
Dirk Sliwka

πŸ’» πŸ“–
daltonm-bls
daltonm-bls

πŸ›
Marc-AndrΓ©
Marc-AndrΓ©

πŸ’» πŸ›
Kyle F Butts
Kyle F Butts

πŸ”£
Marco Edward Gorelli
Marco Edward Gorelli

πŸ‘€
Vincent Arel-Bundock
Vincent Arel-Bundock

πŸ’»
IshwaraHegde97
IshwaraHegde97

πŸ’»
Tobias Schmidt
Tobias Schmidt

πŸ“–
escherpf
escherpf

πŸ› πŸ’»
IvΓ‘n Higuera Mendieta
IvΓ‘n Higuera Mendieta

πŸ’»
ÁdÑm Vig
ÁdÑm Vig

πŸ’»
Szymon Sacher
Szymon Sacher

πŸ’»
AronNemeth
AronNemeth

πŸ’»
Dmitri Tchebotarev
Dmitri Tchebotarev

πŸ’»
FuZhiyu
FuZhiyu

πŸ› πŸ’»
Marcelo Ortiz M.
Marcelo Ortiz M.

πŸ“–
Joseph Stover
Joseph Stover

πŸ“–
JaapCTJ
JaapCTJ

πŸ’»
Matt Shapiro
Matt Shapiro

πŸ’»
Kristof SchrΓΆder
Kristof SchrΓΆder

πŸ’»
Wiktor
Wiktor

πŸ’»
Daman Dhaliwal
Daman Dhaliwal

πŸ’»
Jaakko Markkanen
Jaakko Markkanen

πŸ›
Jonas Skjold Raaschou-Pedersen
Jonas Skjold Raaschou-Pedersen

πŸ’» πŸ“–
Bobby Ho
Bobby Ho

πŸ“–
Erica Ryan
Erica Ryan

πŸ’»
Souhil Abdelmalek Louddad
Souhil Abdelmalek Louddad

πŸ“–
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! ## Acknowledgements We thank all institutions that have funded or supported work on PyFixest! ## How to Cite If you want to cite PyFixest, you can use the following BibTeX entry: ```bibtex @software{pyfixest, author = {{The PyFixest Authors}}, title = {{pyfixest: Fast high-dimensional fixed effect estimation in Python}}, year = {2025}, url = {https://github.com/py-econometrics/pyfixest} } ```