function incrmpcorr2( W, meanx, meany ) {
	var acc;
	if ( !isPositiveInteger( W ) ) {
		throw new TypeError( format( 'invalid argument. First argument must be a positive integer. Value: `%s`.', W ) );
	}
	if ( arguments.length > 1 ) {
		if ( !isNumber( meanx ) ) {
			throw new TypeError( format( 'invalid argument. Second argument must be a number. Value: `%s`.', meanx ) );
		}
		if ( !isNumber( meany ) ) {
			throw new TypeError( format( 'invalid argument. Third argument must be a number. Value: `%s`.', meany ) );
		}
		acc = incrmpcorr( W, meanx, meany );
	} else {
		acc = incrmpcorr( W );
	}
	return accumulator;

	/**
	* If provided a value, the accumulator function returns an updated accumulated value. If not provided a value, the accumulator function returns the current accumulated value.
	*
	* @private
	* @param {number} [x] - input value
	* @param {number} [y] - input value
	* @returns {(number|null)} squared sample correlation coefficient or null
	*/
	function accumulator( x, y ) {
		var r;
		if ( arguments.length === 0 ) {
			r = acc();
			if ( r === null ) {
				return r;
			}
			return r * r;
		}
		r = acc( x, y );
		return r * r;
	}
}
Returns an accumulator function which incrementally computes a moving squared sample Pearson product-moment correlation coefficient.

@param {PositiveInteger} W - window size
@param {number} [meanx] - mean value
@param {number} [meany] - mean value
@throws {TypeError} first argument must be a positive integer
@throws {TypeError} second argument must be a number
@throws {TypeError} third argument must be a number
@returns {Function} accumulator function

@example
var accumulator = incrmpcorr2( 3 );

var r2 = accumulator();
// returns null

r2 = accumulator( 2.0, 1.0 );
// returns 0.0

r2 = accumulator( -5.0, 3.14 );
// returns ~1.0

r2 = accumulator( 3.0, -1.0 );
// returns ~0.86

r2 = accumulator( 5.0, -9.5 );
// returns ~0.74

r2 = accumulator();
// returns ~0.74

@example
var accumulator = incrmpcorr2( 3, -2.0, 10.0 );