cassionData Analysis

Dataset

MUAC screening — Artibonite, 2024

Synthetic mid-upper arm circumference screening for 4,218 children under five across twelve communes, carrying the missing values, unit errors and duplicate registrations a real campaign register carries.

syntheticNutritionCommCareMUAC screeningChild malnutritionCMAM
Rows
4,218
Variables
8
Period
2024-01 to 2024-12
Licence
CC BY 4.0
Completeness
97%

Standards and methodologies

WHO Child Growth Standards

Files

Files are versioned by filename. A corrected release ships as .v2.csv rather than replacing the file in place, so an analysis pinned to v1 keeps reproducing.

Data dictionary

VariableTypeDescriptionAllowed values
child_idstringPseudonymous child identifier. Generated sequentially, never derived from anything real.—
communecategoricalCommune where the screening took place.Gonaives, Saint-Marc, Dessalines, Gros-Morne, Ennery, Marmelade, Anse-Rouge, Terre-Neuve, Saint-Michel, Verrettes, Desdunes, L-Estere
screening_datedateDate the child was screened during the community campaign.—
age_monthsmonthsintegerAge of the child in completed months at screening.—
sexcategoricalSex of the child as recorded on the screening register.f, m
muac_mmmmintegerMid-upper arm circumference measured in millimetres.—-99
oedemabooleanWhether bilateral pitting oedema was present at screening.true, false
outcomecategoricalScreening decision recorded by the community health worker.no-action, referred-tsfp, referred-otp, referred-sc

Provenance

Source
Synthetic, generated by scripts/generate/muac_screening_artibonite_2024.py
Collection method
Simulated community mass screening campaign registers
Geography
Artibonite department, Haiti
Period
2024-01 to 2024-12

Data quality

  • Every record is generated by a seeded script. Nothing here describes a real child, and these figures must never be cited as real prevalence.
  • MUAC is recorded in millimetres. The WHO cut-offs this dataset is built around are 115 mm for severe acute malnutrition and 125 mm for moderate.
  • Missing MUAC is coded -99, not left blank. Reading the column as a number without handling the code drags the mean down by several millimetres and understates the caseload.
  • Applying the cut-offs reproduces a global acute malnutrition rate near 8.6% and severe acute malnutrition near 2.2%, ranging from about 5% to 15% by commune. The worst commune crosses the 15% emergency threshold; the best does not.

Known issues

  • About 5% of records are missing age_months overall, but roughly 60% are missing in the Gros-Morne campaign week of 10-14 June. Dropping incomplete rows removes one commune far more than the others, which shifts the ranking.
  • Ennery and Desdunes recorded oedema inconsistently in the first quarter: some rows are blank, others use Y and N rather than true and false.
  • Twelve records are exact duplicates sharing a child_id, from forms submitted twice on a poor connection. Six more are the same child re-registered under a new id, findable only by matching on commune, date and measurement.
  • Seven records hold a MUAC left in centimetres and never converted, appearing as implausible values below 40.
  • Ten records carry a referral outcome but no MUAC value. This is not an injected defect: it is where the 2.3% of unmeasured children happens to overlap the children already marked for referral, which is exactly how the pattern arises in a real register when the decision column and the measurement column are filled by different people.
  • Nine records carry an outcome that contradicts their own MUAC value, which is what a mis-tapped tablet screen produces.

Worked examples

Python

Global acute malnutrition rate by commune

Applies WHO MUAC thresholds, computes GAM and SAM rates by commune, and plots the ranking with confidence intervals.

Screening coverage over the campaign year

Aggregates screenings per month and commune to show where campaign coverage dropped.

R

Global acute malnutrition rate by commune

The same GAM and SAM calculation using dplyr and ggplot2, producing an equivalent ranked plot.