logMeanExpLogs | R Documentation |

Given a vector of numeric values of real values represented in log form,
`logMeanExpLogs`

computes the logarithm of the mean of the
(exponentiated) values. `logCumMeanExpLogs`

computes the logarithm of
the cumulative mean.

```
logMeanExpLogs(v)
```

`v` |
A vector of (log) values |

Given a vector of values of log values `v`, one could compute
`log(mean(exp(v)))`

in R. However, exponentiating and summing will cause
a loss of precision, and possibly an overflow. These functions use the
identity

`\log(e^a + e^b) = a + \log(1+e^{b-a})`

and the method of computing `\log(1+e^x)`

that avoids overflow (see the references). The code is written in C for very
fast computations.

`logMeanExpLogs`

returns a single value,
`logCumMeanExpLogs`

returns a vector of values of the same length as
`v`, and `logSummaryStats`

returns a list of the
log mean, log variance, and cumulative log means.

Richard D. Morey (richarddmorey@gmail.com)

For details of the approximation of `\log(1+e^x)`

used to prevent loss of precision, see
https://www.codeproject.com/Articles/25294/Avoiding-Overflow-Underflow-and-Loss-of-Precision and
https://www.johndcook.com/blog/standard_deviation/.

```
# Sample 100 values
y = log(rexp(100,1))
# These will give the same value,
# since e^y is "small"
logMeanExpLogs(y)
log(mean(exp(y)))
# We can make e^x overflow by multiplying
# e^y by e^1000
largeVals = y + 1000
# This will return 1000 + log(mean(exp(y)))
logMeanExpLogs(largeVals)
# This will overflow
log(mean(exp(largeVals)))
```

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.