prepare_regression_table

prepare_regression_table(
    df,
    dvs,
    idvs,
    feffects=None,
    clusters=None,
    *,
    byvar=None,
    format='gt',
)

Build a regression table of one or more OLS models.

Supports fixed effects and clustered standard errors (via pyfixest), multiple models side by side, or a single model estimated separately across the levels of byvar.

Parameters

Name Type Description Default
df pd.DataFrame Data frame containing the data. required
dvs Sequence[str] | str Dependent variable name, or a list of names (one per model). required
idvs Sequence[str] | Sequence[Sequence[str]] Independent variable names. For multiple models, a list of lists. required
feffects Sequence[str] | Sequence[Sequence[str]] | None Fixed-effects variable names (per model when multiple models are given). None
clusters Sequence[str] | Sequence[Sequence[str]] | None Cluster variable names for clustered standard errors (per model when multiple). None
byvar str | None A categorical variable to estimate the single model separately by. Only valid with a single dependent variable. Levels with too few observations to estimate the model (n <= len(idvs) + 1) are skipped. None
format Literal['gt', 'tex', 'md', 'df', 'html'] Output format for the rendered etable: "gt" (Great Tables), "tex", "md", "df" (DataFrame) or "html". 'gt'

Returns

Name Type Description
RegressionTableResult models (fitted pyfixest models), etable (rendered table) and df (tidy coefficient frame).

Examples

Basic — a pooled OLS regression of the cubic Kuznets curve:

import expdpy as ex
from expdpy.data import load_kuznets

df = load_kuznets()
ex.prepare_regression_table(
    df,
    dvs="gini_regional",
    idvs=["log_gdp_pc", "log_gdp_pc_sq", "log_gdp_pc_cu"],
).etable

Advanced — absorb two-way (country + year) fixed effects with standard errors clustered by country, then read the tidy coefficient frame and fitted models:

result = ex.prepare_regression_table(
    df,
    dvs="gini_regional",
    idvs=["log_gdp_pc", "log_gdp_pc_sq", "log_gdp_pc_cu"],
    feffects=["country", "year"],
    clusters=["country"],
)
result.etable
result.df
result.models