fereg (R)

Fast high-dimensional fixed-effects regressions with the fixest interface.

feols(), fepois() and feglm() take fixest 0.14.2’s formulas, arguments and defaults and return objects with fixest’s methods, so estimates, standard errors and statistics match fixest’s. The estimation runs in a parallel Rust library that eliminates the largest fixed effect exactly and solves the others by preconditioned conjugate gradient: at 10 million observations and 16 threads it is 2.6–200× faster than fixest on the fixest benchmark designs.

library(fereg)

m  <- feols(y ~ x1 + x2 | firm + year, df, cluster = ~firm)
iv <- feols(y ~ x1 | firm + year | x2 ~ z, df)
p  <- fepois(count ~ x1 | firm + year, df, vcov = "hetero")
lg <- feglm(default ~ x1 | firm, df, family = "logit")
summary(m)
etable(m, iv, p)
fixef(m)

Supported: OLS, IV/2SLS (several endogenous regressors), Poisson, logit; any number of fixed effects, fe1^fe2 interactions and varying slopes (fe[x], fe[[x]]); weights and offsets; i(), factor(), multiple estimation (c(y1, y2), sw(), csw(), split, fsplit); predict (with newdata), resid, fitted, fixef, fitstat, etable, tidy/glance.

Variances, at estimation and post hoc (summary(), vcov(), confint(), etable()), with fixest’s syntax, labels and ssc(): iid, heteroskedasticity-robust (HC1) and HC2/HC3 (exact leverage, fixed effects included; not for IV), one- to four-way clustering, Newey–West (NW ~ id + period, NW(2) ~ id + period, NW ~ period for a time series, or "NW" with panel.id = ~id + period), Driscoll–Kraay (DK(2) ~ period), Conley (conley(100) ~ lat + lon, conley("60mi"), pixel and spherical distance, fixest’s deduced cutoff), and fixest’s request objects (NW(), DK(), conley(), vcov_NW(), vcov_DK(), vcov_conley(), vcov_hetero(), vcov_cluster()). CRV3 (vcov = crv3 ~ g, vcov_crv3()) is a fereg extension (fixest has no CRV3): the leave-one-cluster-out jackknife with fixest’s cluster small-sample correction; after estimation it re-estimates the model.

Not implemented: fixef.rm = "infinite_coef", the panel operators l()/f()/d(), mvsw(), the .[]/..ctrl formula macros, and variances given as functions or matrices.

Installing from source needs Rust (cargo, rustc >= 1.85); the source tarball on the GitHub release page bundles every Rust dependency, so the build needs no network.

The same core powers the Stata commands fereg/feppml/felogit and the Python package fereg: see https://github.com/leoliu0/fereg.