The OpenD Programming Language

CovarianceAccumulator

  1. struct CovarianceAccumulator(T, CovarianceAlgo covarianceAlgo, Summation summation)
  2. struct CovarianceAccumulator(T, CovarianceAlgo covarianceAlgo, Summation summation)
    struct CovarianceAccumulator (
    T
    CovarianceAlgo covarianceAlgo
    Summation summation
    ) if (
    isFloatingPoint!T &&
    isMutable!T
    &&
    covarianceAlgo == CovarianceAlgo.online
    ) {}
  3. struct CovarianceAccumulator(T, CovarianceAlgo covarianceAlgo, Summation summation)
  4. struct CovarianceAccumulator(T, CovarianceAlgo covarianceAlgo, Summation summation)
  5. struct CovarianceAccumulator(T, CovarianceAlgo covarianceAlgo, Summation summation)

Constructors

this
this(RangeX x, RangeY y)
this
this(T x, T y)

Members

Aliases

S
alias S = Summator!(T, summation)

Functions

centeredSumOfProducts
F centeredSumOfProducts()
count
size_t count()
covariance
F covariance(bool isPopulation)
meanLeft
F meanLeft()
meanRight
F meanRight()
put
void put(Slice!(IteratorX, 1, kindX) x, Slice!(IteratorY, 1, kindY) y)
put
void put(SliceLikeX x, SliceLikeY y)
put
void put(RangeX x, RangeY y)
put
void put(T x, T y)
put
void put(CovarianceAccumulator!(U, covAlgo, sumAlgo) v)
sumLeft
F sumLeft()
sumRight
F sumRight()

Variables

centeredSummatorOfProducts
S centeredSummatorOfProducts;
summatorLeft
S summatorLeft;
summatorRight
S summatorRight;

Examples

import mir.math.sum: Summation;
import mir.ndslice.slice: sliced;
import mir.test: shouldApprox;

auto x = [  0.0,   1.0,   1.5,  2.0,  3.5, 4.25,
            2.0,   7.5,   5.0,  1.0,  1.5,  0.0].sliced;
auto y = [-0.75,   6.0, -0.25, 8.25, 5.75,  3.5,
           9.25, -0.75,   2.5, 1.25,   -1, 2.25].sliced;

CovarianceAccumulator!(double, CovarianceAlgo.online, Summation.naive) v;
v.put(x, y);

v.covariance(true).shouldApprox == -5.5 / 12;
v.covariance(false).shouldApprox == -5.5 / 11;

v.put(4.0, 3.0);
v.covariance(true).shouldApprox == -5.5 / 13;
v.covariance(false).shouldApprox == -5.5 / 12;

Meta