The OpenD Programming Language

CovarianceAccumulator

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

Constructors

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

Members

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, covarianceAlgo, sumAlgo) v)
sumLeft
F sumLeft()
sumRight
F sumRight()

Variables

centeredSummatorOfProducts
Summator!(T, summation) centeredSummatorOfProducts;

Examples

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

auto a = [  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 b = [-0.75,   6.0, -0.25, 8.25, 5.75,  3.5,
           9.25, -0.75,   2.5, 1.25,   -1, 2.25].sliced;
auto x = a.center;
auto y = b.center;

CovarianceAccumulator!(double, CovarianceAlgo.assumeZeroMean, 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 == 6.5 / 13;
v.covariance(false).shouldApprox == 6.5 / 12;

Meta