Description Usage Arguments Details Value Note References See Also Examples

Calculate a Lehmer mean.

1 2 3 | ```
mean_lehmer(r)
mean_contraharmonic(x, w = rep(1, length(x)), na.rm = FALSE)
``` |

`r` |
A finite number giving the order of the Lehmer mean. |

`x` |
A strictly positive numeric vector. |

`w` |
A strictly positive numeric vector of weights, the same length as |

`na.rm` |
Should missing values in |

The function `mean_lehmer()`

returns a function to compute the Lehmer mean of order `r`

of `x`

with weights `w`

, which is calculated as the arithmetic mean of `x`

with weights `w * x^(r-1)`

. This is also called the counter-harmonic mean. See Bullen (2003, p. 245) for a definition, or https://en.wikipedia.org/wiki/Lehmer_mean.

The Lehmer mean of order 2 is sometimes called the contraharmonic mean. The function `mean_contraharmonic()`

simply calls `mean_lehmer(2)()`

. Like the generalized mean, the contraharmonic mean is the solution to an optimal prediction problem: choose *m* to minimize *∑ w (x / m - 1)^2*. The Lehmer mean of order -1 has a similar interpretation, replacing *x / m* with *m / x*, and together these bound the harmonic and arithmetic means.

Both `x`

and `w`

should be strictly positive. This is not enforced, but the results may not make sense if the Lehmer mean in not defined.

The Lehmer mean is an alternative to the generalized mean that generalizes the Pythagorean means. The function `mean_lehmer(1)()`

is identical to `mean_artithmetic()`

, `mean_lehmer(0)()`

is identical to `mean_harmonic()`

, and `mean_lehmer(0.5)()`

is identical to `mean_geometric()`

with two values and no weights.

`mean_lehmer()`

returns a function:

`function(x, w = rep(1, length(x)), na.rm = FALSE)`

.

`mean_contraharmonic()`

returns a numeric value.

`mean_lehmer()`

can be defined on the extended real line, so that `r = -Inf/Inf`

returns `min()`

/`max()`

, to agree with the definition in, e.g., Bullen (2003). This is not implemented, and `r`

must be finite.

Bullen, P. S. (2003). *Handbook of Means and Their Inequalities*. Springer Science+Business Media.

Lehmer, D. H. (1971). On the Compounding of Certain Means. *Journal of Mathematical Analysis and Applications*, 36(1): 183-200.

`mean_generalized`

for the generalized mean, an alternative to the Lehmer mean.

`logmean_generalized`

for the generalized logarithmic mean.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | ```
# Make some data
x <- 2:3
w <- c(0.25, 0.75)
# The Pythagorean means are special cases of the Lehmer mean
all.equal(mean_lehmer(1)(x, w), mean_arithmetic(x, w))
all.equal(mean_lehmer(0)(x, w), mean_harmonic(x, w))
all.equal(mean_lehmer(0.5)(x), mean_geometric(x))
#--------------------
# When r < 1, the generalized mean is larger than the corresponding
# Lehmer mean
mean_lehmer(-1)(x, w) < mean_generalized(-1)(x, w)
# The reverse is true when r > 1
mean_lehmer(3)(x, w) > mean_generalized(3)(x, w)
# This implies the contraharmonic mean is larger than the quadratic
# mean, and therefore the Pythagorean means
mean_contraharmonic(x, w) > mean_arithmetic(x, w)
mean_contraharmonic(x, w) > mean_geometric(x, w)
mean_contraharmonic(x, w) > mean_harmonic(x, w)
# and the logarithmic mean
mean_contraharmonic(2:3) > logmean(2, 3)
# The difference between the arithmetic mean and contraharmonic mean
# is proportional to the variance of x
weighted_var <- function(x, w) mean_arithmetic(x^2, w) - mean_arithmetic(x, w)^2
mean_arithmetic(x, w) + weighted_var(x, w) / mean_arithmetic(x, w)
mean_contraharmonic(x, w)
#--------------------
# It is easy to modify the weights to turn a Lehmer mean of order r
# into a Lehmer mean of order s because the Lehmer mean can be expressed
# as an arithmetic mean
r <- 2
s <- -3
mean_lehmer(r)(x, w)
mean_lehmer(s)(x, w * x^(r - 1) / x^(s - 1))
# The weights can also be modified to turn a Lehmer mean of order r
# into a generalized mean of order s
mean_lehmer(r)(x, w)
mean_generalized(s)(x, weights_transmute(1, s)(x, w * x^(r - 1)))
# and vice versa
mean_lehmer(r)(x, weights_transmute(s, 1)(x, w) / x^(r - 1))
mean_generalized(s)(x, w)
#--------------------
# Quote contributions for a price index based on the Lehmer mean
# are easy to calculate
weights_scale(w * x^(r - 1)) * (x - 1)
``` |

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.