Skip to content

Latest commit

 

History

History
154 lines (95 loc) · 3.96 KB

File metadata and controls

154 lines (95 loc) · 3.96 KB

incrnanrss

Compute the residual sum of squares (RSS) incrementally, ignoring NaN values.

The residual sum of squares (also referred to as the sum of squared residuals (SSR) and the sum of squared errors (SSE)) is defined as

$$\mathop{\mathrm{RSS}} = \sum_{i=0}^{n-1} (y_i - x_i)^2$$

Usage

var incrnanrss = require( '@stdlib/stats/incr/nanrss' );

incrnanrss()

Returns an accumulator function which incrementally computes the residual sum of squares, ignoring NaN values.

var accumulator = incrnanrss();

accumulator( [x, y] )

If provided input values x and y, the accumulator function updates the RSS. If NaN is provided, it is ignored, and the previous RSS is returned. If no arguments are provided, the accumulator function returns the current RSS.

var accumulator = incrnanrss();

var r = accumulator( 2.0, 3.0 );
// returns 1.0

r = accumulator( -1.0, -4.0 );
// returns 10.0

r = accumulator( -3.0, 5.0 );
// returns 74.0

r = accumulator( NaN, 3.0 );
// returns 74.0

r = accumulator();
// returns 74.0

Notes

  • Input values are not type checked. If provided NaN or a value which, when used in computations, results in NaN, the accumulated value is NaN for all future invocations. If non-numeric inputs are possible, you are advised to type check and handle accordingly before passing the value to the accumulator function.

Examples

var randu = require( '@stdlib/random/base/randu' );
var incrnanrss = require( '@stdlib/stats/incr/nanrss' );

var accumulator;
var v1;
var v2;
var i;

// Initialize an accumulator:
accumulator = incrnanrss();

// For each simulated datum, update the residual sum of squares...
for ( i = 0; i < 100; i++ ) {
    v1 = ( randu()*100.0 ) - 50.0;
    v2 = ( randu()*100.0 ) - 50.0;
    accumulator( v1, v2 );

    // NaN values are ignored
    accumulator( NaN, v2 );
}
console.log( accumulator() );