statspai.fixest¶
fixest ¶
High-dimensional fixed effects estimation via pyfixest.
This module provides thin wrappers around pyfixest's estimation functions,
converting results into StatsPAI's EconometricResults for seamless
integration with outreg2 and the rest of the ecosystem.
Requires: pip install pyfixest
Examples:
>>> from statspai.fixest import feols, fepois
>>>
>>> # Two-way fixed effects with clustered SEs
>>> result = feols("wage ~ experience | firm + year",
... data=df, vcov={"CRV1": "firm"})
>>> print(result.summary())
>>>
>>> # Poisson regression
>>> result = fepois("patents ~ rd_spending | firm", data=df)
>>>
>>> # Works with outreg2
>>> from statspai import outreg2
>>> outreg2(result, filename="table.xlsx")
feols ¶
feols(fml: str, data: DataFrame, vcov: Optional[Union[str, Dict[str, str]]] = None, *, weights: Optional[str] = None, ssc: Optional[Any] = None, fixef_rm: str = 'none', collin_tol: float = 1e-06, lean: bool = False, **kwargs: Any) -> Union[EconometricResults, List[EconometricResults]]
Estimate OLS / IV with high-dimensional fixed effects via pyfixest.
Uses the Frisch-Waugh-Lovell theorem for fast absorption of high-dimensional fixed effects.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
fml
|
str
|
A pyfixest-style formula. Examples:
|
required |
data
|
DataFrame
|
Input dataset. |
required |
vcov
|
str or dict
|
Variance-covariance estimator.
|
None
|
weights
|
str
|
Column name for regression weights. |
None
|
ssc
|
optional
|
Small-sample correction via |
None
|
fixef_rm
|
str
|
How to handle singleton fixed effects:
|
"none"
|
collin_tol
|
float
|
Collinearity tolerance. |
1e-6
|
lean
|
bool
|
If True, drop large intermediate arrays to save memory. |
False
|
**kwargs
|
Any
|
Additional arguments passed to |
{}
|
Returns:
| Type | Description |
|---|---|
EconometricResults or list of EconometricResults
|
Single result for simple formulas, list for multiple estimations
(e.g. |
Examples:
Two-way fixed effects with clustered SEs:
>>> from statspai.fixest import feols
>>> result = feols("wage ~ experience + tenure | firm + year",
... data=df, vcov={"CRV1": "firm"})
>>> print(result.summary())
Multiple estimation:
>>> results = feols("Y ~ X1 | csw0(firm, year)", data=df)
>>> for r in results:
... print(r.summary())
Use with outreg2:
fepois ¶
fepois(fml: str, data: DataFrame, vcov: Optional[Union[str, Dict[str, str]]] = None, *, weights: Optional[str] = None, ssc: Optional[Any] = None, fixef_rm: str = 'none', collin_tol: float = 1e-06, iwls_tol: float = 1e-08, iwls_maxiter: int = 25, **kwargs: Any) -> Union[EconometricResults, List[EconometricResults]]
Estimate Poisson regression with high-dimensional fixed effects via pyfixest.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
fml
|
str
|
pyfixest formula. E.g. |
required |
data
|
DataFrame
|
Input dataset. |
required |
vcov
|
str or dict
|
Variance-covariance estimator. |
None
|
weights
|
str
|
Column name for regression weights. |
None
|
ssc
|
optional
|
Small-sample correction. |
None
|
fixef_rm
|
str
|
Singleton fixed effect handling. |
"none"
|
collin_tol
|
float
|
Collinearity tolerance. |
1e-6
|
iwls_tol
|
float
|
IWLS convergence tolerance. |
1e-8
|
iwls_maxiter
|
int
|
Max IWLS iterations. |
25
|
**kwargs
|
Any
|
Additional arguments passed to |
{}
|
Returns:
| Type | Description |
|---|---|
EconometricResults or list of EconometricResults
|
|
feglm ¶
feglm(fml: str, data: DataFrame, family: str = 'gaussian', vcov: Optional[Union[str, Dict[str, str]]] = None, **kwargs: Any) -> Union[EconometricResults, List[EconometricResults]]
Estimate GLM (logit, probit, Gaussian) with high-dimensional fixed effects.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
fml
|
str
|
pyfixest formula. |
required |
data
|
DataFrame
|
Input dataset. |
required |
family
|
str
|
GLM family: |
"gaussian"
|
vcov
|
str or dict
|
Variance-covariance estimator. |
None
|
**kwargs
|
Any
|
Additional arguments passed to |
{}
|
Returns:
| Type | Description |
|---|---|
EconometricResults or list of EconometricResults
|
|
etable ¶
etable(*results: EconometricResults, **kwargs: Any) -> Any
Display a pyfixest-style regression table for StatsPAI results.
If the results carry a _pyfixest_fit reference, uses pyfixest's
native etable. Otherwise falls back to a simple pandas summary.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*results
|
EconometricResults
|
One or more fitted results. |
()
|
**kwargs
|
Any
|
Passed to |
{}
|
Returns:
| Type | Description |
|---|---|
str or DataFrame
|
|