# test.govlab/patterns/core/analyzers/baseline.analyzer.test.ts

> 57 lines of code and 0 definitions.

Tree: Codebase Testing
Language: typescript
Canonical: https://banes-lab.com/anatomy/testing#file-testing-test-govlab-patterns-core-analyzers-baseline-analyzer-test-ts
Source text: https://banes-lab.com/source/testing/test.govlab/patterns/core/analyzers/baseline.analyzer.test.ts.txt

Listed in [test.govlab/patterns/core/analyzers](https://banes-lab.com/api/source/testing/test.govlab/patterns/core/analyzers.md), before [test.govlab/patterns/core/analyzers/code.analyzer.test.ts](https://banes-lab.com/source/testing/test.govlab/patterns/core/analyzers/code.analyzer.test.ts.md).

## Contained in

- [test.govlab/patterns/core/analyzers](https://banes-lab.com/anatomy/testing/folder-testing-test-govlab-patterns-core-analyzers.md)

## Source

```typescript
import {
    autocorrelationSignificance,
    chiSquareSf,
    erf,
    erfc,
    normalSignificance,
    transitionIndependence,
    uniformity,
} from "@govlab/patterns/core/analyzers/baseline.analyzer.ts";
import { describe, expect, it } from "vitest";

const DIGITS_EXACT = 6;
const DIGITS_APPROX = 5;
const ERF_ONE = 0.8427008;
const ERFC_TWO = 0.0046777;
const TWO = 2;
const FAR = 4;
const MANY = 90;
const FEW = 10;
const SHORT = 2;
const LONG = 100;

describe("the error function", () => {
    it("matches known values within the Abramowitz-Stegun tolerance", () => {
        expect(erf(0)).toBeCloseTo(0, DIGITS_EXACT);
        expect(erfc(0)).toBeCloseTo(1, DIGITS_EXACT);
        expect(erf(1)).toBeCloseTo(ERF_ONE, DIGITS_APPROX);
        expect(erf(-1)).toBeCloseTo(-ERF_ONE, DIGITS_APPROX);
        expect(erfc(TWO)).toBeCloseTo(ERFC_TWO, DIGITS_APPROX);
    });
});

describe("the null models", () => {
    it("normalSignificance flags a distant z-score and clears a central one", () => {
        expect(normalSignificance(FAR).significant).toBe(true);
        expect(normalSignificance(0).significant).toBe(false);
    });

    it("chiSquareSf is one for a degenerate statistic and falls as the statistic grows", () => {
        expect(chiSquareSf(0, 1)).toBe(1);
        expect(chiSquareSf(LONG, 1)).toBeLessThan(chiSquareSf(1, 1));
    });

    it("autocorrelationSignificance refuses a series too short to judge", () => {
        expect(autocorrelationSignificance(1, SHORT).significant).toBe(false);
        expect(autocorrelationSignificance(1, LONG).significant).toBe(true);
    });

    it("transitionIndependence is insignificant with no transitions", () => {
        expect(transitionIndependence([]).significant).toBe(false);
    });

    it("uniformity declares one category uniform and bounds a skewed p-value", () => {
        expect(uniformity(new Map([["only", 1]])).uniform).toBe(true);
        const skewed = uniformity(
            new Map([
                ["a", MANY],
                ["b", FEW],
            ]),
        );
        expect(skewed.uniform).toBe(false);
        expect(skewed.pValue).toBeGreaterThanOrEqual(0);
    });
});
```
