lib/stats/mva/index.js
function onData( W ) {
		var buffer = getBuffer( W ),
			full = false, oldVal,
			sos = 0, mean = 0, N = 0,
			delta = 0, old_delta = 0, new_delta = 0;

		/**
		* FUNCTION: onData( newVal )
		*	Data event handler. Calculates a moving mean/variance.
		*
		* @private
		* @param {number} newVal - new streamed data value
		*/
		return function onData( newVal ) {
			// Fill the buffer:
			if ( !full ) {
				buffer[ N ] = newVal;

				N += 1;
				delta = newVal - mean;
				mean += delta / N;

				// Sum of squared differences:
				sos += delta * ( newVal - mean );

				if ( N === W ) {
					full = true;
					this.queue( [ mean, sos/(N-1) ] );
				}
				return;
			} // end IF (!full)

			// Update our buffer:
			oldVal = buffer.shift();
			buffer.push( newVal );

			// Calculate the moving mean and variance:
			delta = newVal - oldVal;
			old_delta = oldVal - mean;
			mean += delta / W;
			new_delta = newVal - mean;
			sos += delta * ( old_delta + new_delta );

			// Queue the mean-variance pair:
			this.queue( [ mean, sos/(W-1) ] );
		}; // end FUNCTION onData()
	}
function onData( W ) {
		var buffer = getBuffer( W ),
			full = false, oldVal,
			sos = 0, mean = 0, N = 0,
			delta = 0, old_delta = 0, new_delta = 0;

		/**
		* FUNCTION: onData( newVal )
		*	Data event handler. Calculates a moving mean/variance.
		*
		* @private
		* @param {number} newVal - new streamed data value
		*/
		return function onData( newVal ) {
			// Fill the buffer:
			if ( !full ) {
				buffer[ N ] = newVal;

				N += 1;
				delta = newVal - mean;
				mean += delta / N;

				// Sum of squared differences:
				sos += delta * ( newVal - mean );

				if ( N === W ) {
					full = true;
					this.queue( [ mean, sos/(N-1) ] );
				}
				return;
			} // end IF (!full)

			// Update our buffer:
			oldVal = buffer.shift();
			buffer.push( newVal );

			// Calculate the moving mean and variance:
			delta = newVal - oldVal;
			old_delta = oldVal - mean;
			mean += delta / W;
			new_delta = newVal - mean;
			sos += delta * ( old_delta + new_delta );

			// Queue the mean-variance pair:
			this.queue( [ mean, sos/(W-1) ] );
		}; // end FUNCTION onData()
	}
end FUNCTION getBuffer() 
FUNCTION: onData( W )
Returns a callback which calculates a moving mean/variance and is invoked upon receiving new data.

@private
@param {number} W - window size
@returns {function} callback