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().