Fixed a bug where hb_transform() would give an error with missing values.
Added a new function outliers() to replace existing outlier functions, which
are now deprecated.
Bumped minimum version of R to >= 4.1.
geks() is now faster and uses less memory to makes the GEKS index.
Time periods with entirely missing data no longer return an index value
with geks(), fixing #8.
Added a new vignette to better explain decomposing an index.
Added martini_index() to compute the family of Martini indexes.
Added kimber_method() for outlier detection.
Outlier detection functions are now stricter about their inputs.
Functions for transmuting weights now get a tol argument to control the
tolerance in the extended mean.
splice_index() now keeps names.
Fixed a bug with transmute_weights() where the weights could be negative.
Price-index functions have better argument checking.
Updated maintainer email.
Added a parameter to generalize geks() by controlling how indexes are
averaged over the rolling window.
Fixed a bug where transmute_weights() and factor_weights() could return
a result with a different length than w.
Added a new function splice_index() for splicing indexes calculated over
a rolling window (this was previously sketched in an example).
transmute_weights() is now faster.
Bumped minimum version of R to at least 4.0.
The use of ... in grouped() and balanced() is deprecated, and will be
removed in a future version. The same behavior can be had by using an
anonymous function.
Added the walsh_geks() function.
back_period() and base_period() gain a new argument match_first to
control whether products in the first period match to themselves or return NA.
Updated documentation.
Added a brief vignette.
back_price() and base_price() have been removed.
Functions for transforming weights only keep the attributes of the weights (if any), as documented.
grouped() no longer mangles names.
back_price() and base_price() are deprecated in favor of the more
general back_period() and base_period() functions. They will be removed in
a future version.
The algorithm for making GEKS indexes is now much faster with a rolling window.
The functions and overall structure of the package should be fairly stable from now on.
Added nested_transmute() and nested_transmute2() for transmuting the
weights for nested generalized means. To be consistent with argument names, the
first two arguments for nested_mean() and nested_contributions*() are
now r1 and r2.
Added the geometric Theil and Rao indexes.
Added back_period() and base_period(), which are more general
than back_price() and base_price().
Added lehr_index().
Fixed a rare warning about sqrt() making NaNs in
generalized_logmean(-1) when some inputs were close but not equal, despite
no NaNs showing in the result.
The lm_index() and *_agmean_index() functions are now function factories.
Added the balanced() operator to make it easier to remove NAs with price
index functions.
Added the geks() function for using price-index function
(e.g., fisher_index()) to makes a GEKS index.
Added French translations.
Made a number of optimizations to make the results
of generalized_mean(), extended_mean(), lehmer_mean(),
transmute_weights(), and factor_weights() faster in common cases.
Added the grouped() operator to make all functions work with grouped data.
Most function names have changed to be less awkward;
e.g., mean_generalized() is now generalized_mean(),
and contributions_geometric() is now geometric_contributions(). This is
unfortunately not backwards compatible, but needed to be done.
Added the nested_mean() function to calculate nested generalized means
for, e.g., the Fisher index.
The interface for nested_contributions() is now much simpler, and the
function is focused on making contributions for Fisher indexes. Added
the nested_contributions2() function that implements a different algorithm.
Added the arithmetic_agmean_index() and geometric_agmean_index() functions
to calculate the AG mean index.
Added some functions for standard outlier-detection methods for price relatives.
Dropped the scale argument for generalized_mean(), as it really wasn't
needed and had the potential to make more problems than it solved.