summary() (e.g., this differens from
Alpaca). I added a vignette replicating Cameron and Miller (2014) to
show how to use 1-way, 2-way, and dyadic clustering.fepoisson_asymmetric(),
feglm_fit(), fenegbin_fit()) to handle FMA
(Fused Multiply-Add) compiler optimizations on macOS and ARM.
Convergence checks now use hybrid absolute + relative tolerance
thresholds that scale appropriately, and bias correction now uses
stronger ridge regularization for numerical stability. This eliminates
intermittent convergence failures across different platforms and
compiler configurations.fml <- mpg ~ wt | am followed by
felm(update(fml, . ~ . | cyl), data = mtcars and variations
of (same for feglm() and cluster update)summary(lm/glm, type = "clustered") that largely
underestimated the standard errors. This is now fixed and I merged
“clustered” and ” sandwich” types into a single “sandwich” type for
clarity and consistency as both use a bread-meat-bread approach.InferenceGLM struct now adds the VCOV matrix and
the standard errors to reuse computation andInferenceLM
struct.print() and summary() functions just
format the output.y ~ x1 + x2 and y ~ x1 + x2 | 0 | cluster and
formulas without slopes such as y ~ 0 | fe1 + fe2.predict(glm_object, type = "response"), unlike base R
behavior.control = list(centering = "berge") or
list(centering = "stammann"). Both methods are equivalent
but use different internal logics. Berge’s fixed point problem approach
is usually faster.fepoisson_asymmetric() to compare
coefficients across expectiles (e.g., 10%, 50%, 90%) to weight
positive/negative residuals. This is based on “The Tails of Gravity”
(10.1016/j.jinteco.2025.104145). The argument
expectile_glm_iter_max in fit_control()
controls the number of inner GLM iterations per APPML step. Setting it
to 1L updates asymmetric weights at every Newton step
instead of only after the inner GLM converges, which typically reduces
total iterations needed.summary_table() function now accepts positioning
arguments for LaTeX.fepoisson_asymmetric(),
feglm_fit(), fenegbin_fit()) to handle FMA
(Fused Multiply-Add) compiler optimizations on macOS and ARM.
Convergence checks now use hybrid absolute + relative tolerance
thresholds that scale appropriately, eliminating intermittent
convergence failures across different platforms and compiler
configurations.fe*()
functions to allow for different types of weights. The default is still
NULL (i.e., all weights equal to 1). The argument now
admits weights passed as weights = ~cyl,
weights = mtcars$cyl, or
w <- mtcars$cyl; weights = w.tidy() method for linear models
(felm class). Now it does not require to load the
tibble package to work.First CRAN version
Refactored functions to avoid data copies:
iter_center_max and iter_inner_max now
can be modified in feglm_control().
felm
objects.arma::field consistently instead of
std::vector<std::vector<>> for indices.arma::inv instead
of solving arma::qr for the inverse.all_of().