Breaking: Added a form of Algorithm 3 in Bernegger (2026)
to mommb. Instead of a grid-search, the LS algorithm is a
nested pair of 1-dimensional line searches along g and b.
Experimentation shows that it almost always converges to the “same”
values—close to machine precision—as the original
expectation-maximization (EM) algorithm, and fails to
converge in similar scenarios as the EM algorithm. Provided for
completeness and in gratitude to Dr. Bernegger.
Breaking: Added new parameters maxb, minb,
maxg, and ming. The maxb parameter is used in both
fitting algorithms. The others are only used in the LS
algorithm.
Added a fast C implementation of the dilogarithm function for use in the LS algorithm.
Added more informative error messages.
Added and updated unit tests.
Breaking: Given the additional algorithm and parameters,
the call for mommb has been changed. See the documentation for the
new order of parameters and the options list. This is the first
“mature” release. Any breaking changes going forward will be
announced in advance and will have a deprecation period.
Hardened and optimized underlying C and R code for speed and error protection.
Fixed errors in the documentation including copy-paste errors
referencing rnorm instead of rmb, etc.
Breaking: The mommb algorithm now calculates
E[x^2] as (E[x]) ^ 2 + Var[x] instead of directly. Using the
unbiased estimator allows for a slightly larger initial estimate. Given
that the algorithm fails earlier, this allows for a slightly larger legal
starting location. The results are functionally identical, but not always
equal within machine tolerances, so the change is breaking.
Breaking: The mommb algorithm now allows for passing
a couplet consisting of the first two raw moments through x when
new parameter m is set to TRUE. When m is
FALSE, the default, x is treated as a vector of observations
regardless of its length. This is breaking as the positions of the
parameters has now changed.
A new parameter trace has been added that when TRUE
will cause mommb to print the values of g and b at
each iteration i.
Breaking: The mommb algorithm now fails immediately
when the integration would imply a negative p, instead of
restarting with a different g. Experimentation indicates that the
restart never helped.
Made tol in mommb a bit less intrusive by passing
NULL and then checking for it.
Use R API Memzero instead of memset.
Changed GitHub-related files and workflows.
Updated unit tests.
Replaced \() shorthand with full function call in
mommb to remove dependency on R \ge 4.1.0.
Updated package metadata test.
Use log1p instead of log 1.0 + ... where appropriate.
Corrected documentation in ecmb.
Fixed one unit test.
Use log1p instead of log 1.0 + ... where appropriate.
Adjust R code for mommb to be more efficient.
Update documentation.
Use native CRAN DOI.
Expand package metadata tests.
Corrected package link in ‘CITATION’.
Removed extra parentheses in description of g in docs.
Expanded documentation of ecmb.
Added DOI.
Initial release.