variance

Description

Computes the variance of an Observable using [Welford's Online Algorithm]([https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Welford's_online_algorithm](https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Welford's_online_algorithm)\).

By default, it will compute the sample variance.

Examples

Sample Variance

import { from } from 'rxjs';
import { takeLast } from 'rxjs';
import { variance } from '@bottlenose/rxstats';

const variance$ = from([600, 470, 170, 430, 300]).pipe(
  variance(),
  takeLast(1)
);

variance$.subscribe(console.log);
// Output:
// 27130

Population Variance

import { from } from 'rxjs';
import { takeLast } from 'rxjs';
import { variance } from '@bottlenose/rxstats';

const variance$ = from([600, 470, 170, 430, 300]).pipe(
  variance(false),
  takeLast(1)
);

variance$.subscribe(console.log);
// Output:
// 21704

API

variance(
  [initialState={index: 0, mean: 0, m2: null}],
  [sample=true]
)

Since

0.1

Parameters

None

Options

  • initialState: Object: Sets a warm start value so that the calculation can continue from a non-zero starting point (instead of a blank state). The initialState should have these keys:

    • index: Number: The starting index. (The total number of items in the sample minus one.)

    • mean: Number: The initial mean of the sample.

    • m2: Number The initial m2 value for the sample. (See the source code to see how m2 is calculated.)

  • sample: Boolean: The default is true. If true, then it will calculate the sample variance. Otherwise, it will calculate population variance.

Returns

Number. (The current variance of the Observable.)

Last updated

Was this helpful?