Lesson 1 of 8
Unit · Measuring a child
The four measurements, and what each is for
Weight, length or height, MUAC and oedema. Each answers a different question, each has a precision that decides what it can support, and the one that is not a measurement at all is the one that overrides the others.
Four things, measured on one child
Everything in this course rests on four observations, and an analyst who does not know how each is taken will misread all of them.
| Measurement | Unit | Precision | What it is sensitive to |
|---|---|---|---|
| Weight | kg | 0.1 kg | Acute deficit — it falls fast and recovers fast |
| Length / height | cm | 0.1 cm | Chronic deficit — it accumulates and does not recover |
| MUAC | mm | 1 mm | Acute deficit, and mortality risk more directly than weight |
| Oedema | present / absent | — | Not a measurement; a clinical sign, and it overrides |
Two of those rows are worth dwelling on, because they explain most of what follows.
Weight moves and height does not. A child who was hungry for two months is lighter than a child of the same height who was not, and will regain the weight in weeks if fed. A child who was hungry for two years is shorter, and will not regain the height. That single fact is why the sector distinguishes wasting from stunting and why the two need different indicators and different programmes.
Oedema is not on a scale. It is a clinical sign — bilateral pitting oedema, checked by pressing both feet for three seconds — and a child who has it is severely acutely malnourished whatever their weight or arm circumference. Every case definition in the next unit carries an oedema clause, and every analysis that computes SAM as “count below the z-score cut-off” is wrong by however many oedematous children the register holds.
Length or height, and the 0.7 cm that is not a rounding error
Children under 24 months are measured lying down — that is length. Children 24 months and over are measured standing — that is height. The same child measures about 0.7 cm longer lying than standing, because the spine decompresses.
The WHO standards are published against both, and the rule is:
- Under 24 months, use the length standard, and if the child was measured standing, add 0.7 cm before looking up.
- 24 months and over, use the height standard, and if the child was measured lying, subtract 0.7 cm.
import pandas as pd
smart = pd.read_csv("smart-nutrition-survey-2024.v1.csv")
print(smart["measured_lying"].value_counts())
library(dplyr)
smart |> count(measured_lying)
752 measured lying, 178 standing. The register records the position, which is what makes the adjustment possible — and a register that does not is a register whose z-scores carry an unquantifiable error for every child measured in the non-standard position.
Get the sign backwards and you bias the youngest half of the survey. The joining course’s lab already made you do this; here is why it matters clinically.
MUAC, and why it is used at all
MUAC is a tape around the upper arm, read to the millimetre, and it looks crude next to a z-score computed from two calibrated instruments. It is used for three reasons that between them decide most community programmes.
- It needs one measurement, not two. A community health worker with a tape can screen a village; a weight-for-height screening needs scales, a height board and a reference table.
- It predicts mortality at least as well. For a child of a given age, a small arm is a strong predictor of dying, and in several studies a better one than weight-for-height.
- It requires no age. Which matters enormously in populations without birth records, where the age that a z-score needs is itself an estimate.
The cost is the subject of lesson 4: MUAC grows with age independently of nutritional status, so a fixed cut-off finds different children at different ages.
Precision decides what a measurement can support
muac = pd.read_csv("muac-screening-artibonite-2024.v1.csv")
values = muac.loc[muac["muac_mm"].notna(), "muac_mm"]
near_cutoff = values.between(123, 127).sum()
print(f"{near_cutoff} of {len(values)} children within 2 mm of the 125 mm cut-off")
muac |>
filter(!is.na(muac_mm)) |>
summarise(near = sum(between(muac_mm, 123, 127)), n = n())
MUAC is read to the millimetre and repeat measurements by two trained workers routinely differ by 2 to 3 mm. So every child within about 3 mm of a cut-off is a child whose classification depends on who held the tape.
That does not make the cut-off wrong — a threshold has to be somewhere — but it has two consequences an analyst must carry:
- Never report a MUAC-based rate to two decimal places. The measurement does not support it.
- Expect a pile-up at the cut-off in programme data. A worker who reads 114 and knows 115 is the admission threshold is making a clinical judgement, not falsifying a record, and the distribution will show it.
The same argument applies to weight at 0.1 kg and height at 0.1 cm, and lesson 5 turns it into a formal check.
Read the distribution before computing anything
cmam = pd.read_csv("cmam-admissions-2024.v1.csv")
print(cmam[["muac_admission_mm", "weight_admission_kg", "height_cm"]].describe().round(1))
print(f"height missing: {cmam['height_cm'].isna().sum()} of {len(cmam)}")
cmam <- readr::read_csv("cmam-admissions-2024.v1.csv")
summary(select(cmam, muac_admission_mm, weight_admission_kg, height_cm))
sum(is.na(cmam$height_cm))
Seventy-two of 1,100 admissions have no height. That is not a data quality nuisance to be cleaned away — it is the reason weight-for-height cannot be computed for those children while MUAC can, and therefore the reason any comparison of the two criteria has two different denominators. Lesson 4 is built on exactly that.
What a nutrition analyst checks first
Five checks, in order, before any indicator:
- Position recorded? Without
measured_lying, the 0.7 cm adjustment is a guess. - Age present, and how was it obtained? A z-score needs age; a heaped age distribution says it was estimated, which lesson 5 measures.
- Oedema recorded as a separate field? If it is folded into a general “complications” flag, the SAM count cannot be computed correctly.
- Units. MUAC in mm or cm, weight in kg, height in cm. The cleaning course found seven centimetre entries in the screening register; they are always there.
- Plausible ranges. MUAC 80–220 mm, weight 2–30 kg, height 45–125 cm for 6–59 months. Outside those is a recording error, not a finding.
implausible = cmam[
~cmam["muac_admission_mm"].between(80, 220)
| ~cmam["weight_admission_kg"].between(2, 30)
| ~cmam["height_cm"].between(45, 125).fillna(True)
]
print(f"{len(implausible)} admissions outside plausible ranges")
cmam |>
filter(!between(muac_admission_mm, 80, 220) |
!between(weight_admission_kg, 2, 30) |
(!is.na(height_cm) & !between(height_cm, 45, 125))) |>
nrow()
Anthropometry is the only part of this sector’s data where the measurement error is well characterised and published. Use that: it tells you what precision your indicator can carry, and it is the reason a two-point difference between two surveys is usually nothing.
What comes next
You have four measurements and know what each is for. The next lesson turns two of them into the quantity every prevalence in this course rests on — a z-score against the WHO 2006 standards, computed from the reference table rather than trusted from a column.