# logMeanExpLogs: Functions to compute the logarithm of the mean (and... In BayesFactor: Computation of Bayes Factors for Common Designs

 logMeanExpLogs R Documentation

## Functions to compute the logarithm of the mean (and cumulative means) of vectors of logarithms

### Description

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.

### Usage

```logMeanExpLogs(v)
```

### Arguments

 `v` A vector of (log) values

### Details

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.

### Value

`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.

### Author(s)

Richard D. Morey (richarddmorey@gmail.com)

### References

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/.

### Examples

```
# 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)))

```

BayesFactor documentation built on July 5, 2022, 5:09 p.m.