Stata-aligned econometrics for Python, with field-level validation across the documented support surface.
Installation · Quick Start · Validation · Documentation · Contributing
from stataflow.compat.stata import reghdfe
result = reghdfe(
df,
y="lwage",
x=["exper", "edu"],
absorb="firm_id year_id",
vce="cluster",
cluster="firm_id",
)
result.display()StataFlow is for researchers who want Python workflows without giving up the empirical conventions they rely on in Stata. The project is not a generic statistics library: public capabilities have Stata validation across the documented support surface, backed by synthetic cases, public real-data cases, and field-level comparisons.
The current release covers 14 Stata-style commands.
- 14 estimation commands in Python:
regress,xtreg_fe,areg,reghdfe,ivregress_2sls,ivreghdfe,logit,probit,poisson,ppmlhdfe,did_imputation,eventstudyinteract,csdid, andrdrobust. The exportedrdplotcompanion is a helper and is not counted as an estimation command. - Two API layers: a Stata-compatible command layer (
stataflow.compat.stata) and a Python-native estimator layer (stataflow.estimators). - Command-aware Stata-style output:
result.display()prints a complete, adaptive result table with the statistics and diagnostics relevant to each command; notebooks receive the same content as escaped HTML. - High-dimensional fixed effects: MAP absorption for large FE designs, multi-FE workflows, singleton handling, individual slopes, and cluster-aware VCE paths.
- Instrumental variables: 2SLS, GMM2S, LIML, Fuller/k-class, first-stage diagnostics, weak-instrument tests, and overidentification tests.
- Binary, count, and PPML models: Logit, Probit, Poisson, and PPML-HDFE with robust and clustered covariance estimators.
- Causal inference: BJS DID imputation, Sun-Abraham event-study interactions, Callaway-Sant'Anna DID, and sharp/fuzzy regression discontinuity.
- Stata-compatible syntax subsets: factor variables, command-specific analytic-weight support, multiple fixed effects, common VCE choices, and hard rejection of unsupported parameters.
- Validation-first development: public commands have field-level Stata validation across the documented support surface.
pip install StataFlowStataFlow requires Python 3.10 or later. The current release is tested on Python 3.10-3.14. Core dependencies are NumPy, pandas, SciPy, scikit-learn, and PyYAML.
from stataflow.compat.stata import regress, reghdfe, logit, ivregress_2sls, ppmlhdfe
# OLS with robust standard errors
result = regress(df, y="wage", x=["edu", "exper"], vce="robust")
result.display()
# High-dimensional fixed effects
result = reghdfe(
df,
y="wage",
x=["edu", "exper"],
absorb="firm_id year_id",
vce="cluster",
cluster="industry",
)
# Logit
result = logit(df, y="inlf", x=["nwifeinc", "educ", "exper"])
result.display()
# 2SLS with robust VCE
result = ivregress_2sls(
df,
y="lwage",
x_exog=["educ"],
x_endog=["exper"],
instruments=["age", "kidslt6"],
vce="robust",
)
# PPML with high-dimensional fixed effects
result = ppmlhdfe(
df,
y="trade",
x=["lndist", "contig", "fta"],
absorb=["exporter", "importer", "year"],
vce="cluster",
cluster="exporter",
)from stataflow import OLS, AbsorbingOLS, Logit
model = OLS(data=df, y="wage", x=["edu", "exper"])
result = model.fit(vce="robust")
result.display()result.display() # Full output with 95% CI
result.display(detail="compact") # Header, coefficients, core fit
result.display(show_ci=False) # Hide confidence intervals
text = result.summary(width=100) # Return the same table as text
html = result.to_html() # Escaped HTML for reports/notebooks| Family | Available via | Estimators and VCE |
|---|---|---|
| Linear | regress, areg, xtreg_fe, reghdfe |
OLS with ols, robust (HC1), and command-specific clustering; reghdfe also supports dkraay panel HAC |
| IV | ivregress_2sls, ivreghdfe |
2SLS, GMM2S, LIML, Fuller/k-class, first-stage diagnostics, weak-IV tests |
| Binary / Count | logit, probit, poisson |
MLE with ols, robust, and cluster VCE |
| PPML + HDFE | ppmlhdfe |
IRLS with fixed effects, offset/exposure, separation checks, eform, and common prediction types |
| DID | did_imputation, csdid, eventstudyinteract |
BJS imputation, Callaway-Sant'Anna, and Sun-Abraham IW estimators |
| RD | rdrobust |
Sharp/fuzzy RD, MSE/CER bandwidth selectors, covariates, weights, mass points, and cluster/nncluster VCE |
See the Command Support Matrix and Known Issues for exact support boundaries.
The table below is the estimator-validation snapshot frozen in July 2026; the actual comparison environment was Stata 17. It is the current numerical baseline for the estimator and inference behavior covered by the snapshot. The snapshot reports the coefficient and standard-error comparisons below; display-only result fields introduced in 1.3.0 are outside its scope.
Relative deviation is |Python - Stata| / max(|Stata|, 1e-15).
| Family | Covered commands | Stata 17 comparisons | Max coefficient deviation | Max SE deviation |
|---|---|---|---|---|
| Linear / FE | regress, areg, xtreg_fe, reghdfe |
18/18 | 2.48e-7 | 2.25e-7 |
| IV | ivregress_2sls, ivreghdfe |
5/5 | 1.16e-8 | 3.74e-8 |
| Binary / count | logit, probit, poisson, ppmlhdfe |
12/12 | 1.33e-7 | 8.42e-8 |
| DID | did_imputation, csdid, eventstudyinteract |
2/2 + 1 functional check | 8.13e-8 | 5.13e-8 |
| RD | rdrobust |
3/3 | 9.23e-8 | 2.96e-8 |
| Total | 14 public estimation commands | 40/40 | 2.48e-7 | 2.25e-7 |
Full local Stata validation checks: 856 passed, 12 skipped. The public,
self-contained suite passes 10/10 reproducible validation cases with Stata
17. The values above are stored in
evidence-summary.json.
The maxima above apply only to the July 2026 release snapshot. Documented
numerical differences and paths outside this aggregate scope are listed in
Known Issues.
- User Guide (中文)
- Cookbook (中文)
- Examples — nine deterministic demo scripts covering all 14 public commands; no network or local Stata required
- Validation Evidence (JSON)
- Validation Evidence (readable)
- Changelog
# Unit and integration tests
pytest tests/ -v
# Reproducible Stata validation cases (require local Stata 17)
pytest tests/stata_validation/ -v -s- Contributing Guide — development workflow, testing requirements, and PR checks
- Security Policy — supported versions and private vulnerability reporting
- Code of Conduct
This project is licensed under the MIT License. See LICENSE for details.