function incrmean() {
	var mu;
	var N;

	mu = 0.0;
	N = 0;

	return accumulator;

	/**
	* If provided a value, the accumulator function returns an updated mean. If not provided a value, the accumulator function returns the current mean.
	*
	* @private
	* @param {number} [x] - new value
	* @returns {(number|null)} mean value or null
	*/
	function accumulator( x ) {
		if ( arguments.length === 0 ) {
			if ( N === 0 ) {
				return null;
			}
			return mu;
		}
		N += 1;
		mu += (x-mu) / N;
		return mu;
	}
}
Returns an accumulator function which incrementally computes an arithmetic mean.

## Method

-   This implementation uses [Welford's method][algorithms-variance] for efficient computation, which can be derived as follows

    ```tex
    \begin{align*}
    \mu_n &= \frac{1}{n} \sum_{i=0}^{n-1} x_i \\
          &= \frac{1}{n} \biggl(x_{n-1} + \sum_{i=0}^{n-2} x_i \biggr) \\
          &= \frac{1}{n} (x_{n-1} + (n-1)\mu_{n-1}) \\
          &= \mu_{n-1} + \frac{1}{n} (x_{n-1} - \mu_{n-1})
    \end{align*}
    ```

[algorithms-variance]: https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance

@returns {Function} accumulator function

@example
var accumulator = incrmean();

var mu = accumulator();
// returns null

mu = accumulator( 2.0 );
// returns 2.0

mu = accumulator( -5.0 );
// returns -1.5

mu = accumulator();
// returns -1.5