fintech-algorithms
Using a coding agent? Give it the skill: npx skills add IslamBaraka90/Fintech-Algorithms-Library What it does →

Population, Sample, Census, and Sampling Frame

Install and import#

bash
npm install fintech-algorithms
ts
import { populationSampleCensusAndSamplingFrame } from "fintech-algorithms/foundations/data-variables-samples-and-measurement/population-sample-census-and-sampling-frame";

Signature#

populationSampleCensusAndSamplingFrame(input)

Relates the rows in hand to the population they are meant to represent and to the frame they were drawn from, reporting the sampling fraction and the frame's coverage.

Parameters#

NameTypeNotes
inputD00InputA plain object. Every F03 topic first reads rows, which must be a non-empty array of row objects, and derives the sorted union of every key seen across them before any per-topic branch runs. This topic then reads populationSize, the size of the target population, and frameSize, the size of the list actually sampled from. Both are coerced with Number and neither is range-checked.

Returns#

{ sampleSize: number; populationSize: number; samplingFraction: number; frameCoverage: number; isCensus: boolean }

sampleSize is the row count and populationSize echoes the input. samplingFraction is sample over population and frameCoverage is frame over population. isCensus is true when the sample size equals the population size.

Errors#

  • When input is not a plain object — throws TypeError
  • When rows is missing, empty, or not an array — throws RangeError

Complexity: time O(r * c), space O(r * c).

Worked example#

verified This is the worked example published in the article, replayed by the test suite on every run. The output cannot drift.

Input#

input
{
  "rows": [
    {
      "entity": "A",
      "timestamp": "2025-01-01T00:00:00Z",
      "value": 10,
      "rating": "low"
    },
    {
      "entity": "A",
      "timestamp": "2025-01-02T00:00:00Z",
      "value": null,
      "rating": "medium",
      "censored": true
    },
    {
      "entity": "B",
      "timestamp": "2025-01-01T00:00:00Z",
      "value": 12,
      "rating": "high"
    }
  ],
  "ordinalColumns": ["rating"],
  "populationSize": 100,
  "frameSize": 80,
  "keyColumns": ["entity", "timestamp"],
  "truncationRule": "values below 5 excluded",
  "measurements": [9.9, 10, 10.1, 10],
  "referenceValue": 10,
  "vintages": [
    {
      "availableAt": "2025-02-01T00:00:00Z",
      "value": 100
    },
    {
      "availableAt": "2025-03-01T00:00:00Z",
      "value": 102
    },
    {
      "availableAt": "2025-04-01T00:00:00Z",
      "value": 101
    }
  ],
  "asOf": "2025-03-15T00:00:00Z",
  "provenance": {
    "source": "teaching.csv",
    "owner": "Fintech Builder",
    "license": "CC-BY-4.0",
    "retrievedAt": "2026-08-10",
    "transformations": ["parse", "validate"]
  }
}

Call#

populationSampleCensusAndSamplingFrame(input)

Returns#

object with 2 fields: sampleSize, populationSize

{
  "sampleSize": 4,
  "populationSize": 100
}

Diagrams#

Population, Sample, Census, and Sampling Frame — article hero
Population, Sample, Census, and Sampling Frame — concept anatomy
Population, Sample, Census, and Sampling Frame — mistake contrast
Population, Sample, Census, and Sampling Frame — teaching map

How it works#

This page states the contract — how to call it correctly. The article explains the concept: why it works, and where it breaks.

Read the article →

References#

  • Sample Size Definitions
  • 2. NIST/SEMATECH e-Handbook Glossary
  • Evidence boundary

The rest of the Data, Variables, Samples, and Measurement family#