Skip to content
libmirPublic

About

Dlang Statistical Package

Resources

Stars

12 stars

Watchers

7 watching

Forks

Repository files navigation

codecov.io GitHub Workflow Status Circle CI

Dub downloads Dub downloads License Latest version

Mir Stat

Statistical algorithms for the D programming language (Dlang).

This package includes statistical algorithms, including but not limited to:

Full Documentation

mir-stat.libmir.org

Example

@safe pure nothrow
void main()
{
    import mir.algorithm.iteration: all;
    import mir.math.common: approxEqual, pow;
    import mir.test: shouldApprox;
    
    // mir.stat.descriptive
    import mir.stat.descriptive.univariate: mean, kurtosis;
    auto x = [1.0, 2, 3, 4];
    x.mean.shouldApprox == 2.5;
    x.kurtosis.shouldApprox == -1.2;
    
    // mir.stat.distribution
    import mir.stat.distribution.binomial: binomialPMF;
    4.binomialPMF(6, 2.0 / 3).shouldApprox == (15.0 * pow(2.0 / 3, 4) * pow(1.0 / 3, 2));

    // mir.stat.transform
    import mir.stat.transform: zscore;
    assert(x.zscore.all!approxEqual([-1.161895, -0.387298, 0.387298, 1.161895]));

    // mir.stat.inference
    import mir.stat.inference: dAgostinoPearsonTest;
    auto y = [0.0, 1.0, 1.5, 2.0, 3.5, 4.25,
              2.0, 7.5, 5.0, 1.0, 1.5, 0.0];
    double p;
    y.dAgostinoPearsonTest(p).shouldApprox == 4.151936053369771;
}

Benchmarks

See the benchmark subpackage for selectable statistical benchmarks and their command-line runner.

Extreme numerical tests

Gamma inverse-CDF tests with very large shapes run by default with a DMD frontend version of 2.113 or newer, including corresponding LDC and GDC versions. Phobos fixed the large-shape performance issue in DMD 2.112.1 (issue 10920), but __VERSION__ does not distinguish 2.112.0 from 2.112.1. The automatic gate therefore starts conservatively at 2.113. Phobos versions without the fix can take an impractically long time on these inputs.

To run them on 2.112.1, or opt in regardless of frontend version, run:

dub test --build=unittest-extreme-numerics

This opt-in build is separate from unittest-slow-numerics and is not run by the routine CI matrix.

About

Dlang Statistical Package

Resources

Stars

12 stars

Watchers

7 watching

Forks

Releases

Used by

Contributors

Languages