cassionData Analysis

Lesson 7 of 8

Unit · What a phase classification asserts

Six rows, two sources, one table

An IPC evidence table is not a spreadsheet of results. It is a structured argument in which each row carries an indicator, a value, a reliability score and a phase — and the analyst's job is the last column.

PythonR135 minIntegrated Food Security Phase Classification (IPC)Core Humanitarian Standard (CHS)OECD DAC evaluation criteria

What the table is for

Lesson 4 established that four instruments give four answers. The IPC’s response to that is not to pick one, average them, or find the true number. It is to lay them out so that a group of analysts can argue about them in a structured way and record what they concluded.

Every row of an evidence table carries five things:

Column What it holds Who supplies it
Indicator The measure, by name The standard
Value The number, with its denominator and n The analyst
Reference table The phase thresholds for that indicator The IPC manual
Phase Which phase the value falls in Arithmetic
Reliability How much weight this row can bear The analyst’s judgement

The fifth column is the one that is not computed, and it is the one that makes the table an argument rather than a list.

Building the rows

import pandas as pd

evidence = pd.DataFrame([
    {"indicator": "Food Consumption Score, poor",
     "value": "7.4%", "n": 1989, "source": "household survey"},
    {"indicator": "Household Hunger Scale, moderate or severe",
     "value": "42.9%", "n": 2075, "source": "household survey"},
    {"indicator": "reduced Coping Strategy Index, 19 or above",
     "value": "51.0%", "n": 2112, "source": "household survey"},
    {"indicator": "Livelihood coping, crisis or emergency",
     "value": "48.5%", "n": 2121, "source": "LCS module"},
    {"indicator": "Maize price, year on year at the lean peak",
     "value": "+22%", "n": 10, "source": "market monitoring"},
    {"indicator": "Wage to maize terms of trade, change",
     "value": "-49%", "n": 10, "source": "market monitoring"},
])
print(evidence)
library(dplyr)

evidence <- tibble::tribble(
  ~indicator,                              ~value,   ~n,   ~source,
  "FCS poor",                              "7.4%",  1989, "household survey",
  "HHS moderate or severe",               "42.9%",  2075, "household survey",
  "rCSI >= 19",                           "51.0%",  2112, "household survey",
  "LCS crisis or emergency",              "48.5%",  2121, "LCS module",
  "Maize price, year on year",             "+22%",    10, "market monitoring",
  "Wage terms of trade, change",           "-49%",    10, "market monitoring"
)

Six rows, two sources, six different denominators. Building the table in code from the same script that computed the numbers is what stops the values drifting from the analysis — the same argument as the WASH denominator table, in a different sector.

Direct and indirect evidence

The IPC separates evidence by how close it sits to the outcome being classified.

Direct evidence measures the outcome itself: food consumption, nutritional status, mortality. The FCS and HHS rows are direct.

Indirect evidence measures something that causes or accompanies the outcome: prices, terms of trade, rainfall, displacement, conflict. The two market rows are indirect.

Indirect evidence cannot classify on its own. A 49% fall in wage terms of trade is a powerful argument that consumption will deteriorate, and it is not a measurement of consumption. The distinction matters because an analysis short of direct evidence often has plenty of indirect evidence and is tempted to promote it.

But indirect evidence is what makes a classification forward-looking. The household indicators describe the lean season that has happened; the price series describes the one still running. That is why an IPC analysis produces a current classification and a projection, and the projection leans on the indirect rows.

Reliability, and why it is scored

Not every row deserves equal weight, and the reasons are the ones this course has been accumulating.

evidence["reliability"] = [
    "high — 1,989 households, standard instrument",
    "high — 2,075 households, standard instrument",
    "medium — no context-specific threshold established",
    "medium — 58 households cannot be classified above crisis",
    "medium — balanced panel of 10 of 12 markets",
    "medium — same panel; wage series is a single occupation",
]
print(evidence[["indicator", "value", "reliability"]])
# The reliability column is prose, and it is the part that gets read.

Write the reason, not a score. “Medium” tells a reader nothing; “58 households cannot be classified above crisis” tells them exactly how much to discount the row and in which direction.

Four things that lower reliability, all of them met earlier in this course:

  • A denominator smaller than the sample — the FCS’s 1,989 of 2,112.
  • A threshold borrowed rather than established — the rCSI’s 19.
  • A panel that changed composition — the price series without MK001.
  • A rule applied where the data cannot support it — a maximum severity over a partly administered module.

What convergence looks like

evidence["direction"] = ["worse", "worse", "worse", "worse", "worse", "worse"]
print(f"rows pointing the same way: "
      f"{(evidence['direction'] == 'worse').sum()} of {len(evidence)}")
# Six of six. That is convergence — and it is not the same as agreement on level.

All six rows point the same direction and they disagree about severity by a factor of seven. That combination — strong convergence on direction, wide disagreement on level — is the most common real pattern, and the table is what lets you say both at once.

The wrong readings of it are worth naming.

“They disagree, so the data is bad.” They disagree because they measure different things, and the disagreement carries the diagnosis: coping and asset depletion high, severe consumption deficit not yet.

“Four of six say over 40%, so it is over 40%.” Voting across indicators measuring different quantities is not an estimator of anything.

“The most severe row is the safest.” Nor is the least severe. The row you lead with should be the one with the highest reliability for the decision at hand, and the others belong beside it.

The table as it goes into the workshop

Evidence table — lean season 2024, four districts

  Direct evidence
    FCS poor (28/42 set)          7.4%   n=1,989   high reliability
    HHS moderate or severe       42.9%   n=2,075   high
    rCSI >= 19                   51.0%   n=2,112   medium, threshold not local
    LCS crisis or emergency      48.5%   n=2,121   medium, 58 partial modules

  Indirect evidence
    Maize, year on year at peak   +22%   10 markets, balanced panel
    Wage terms of trade           -49%   10 markets, same panel

  Convergence: six of six rows indicate deterioration.
  Divergence: severity estimates range from 7.4% to 51.0%, reflecting
  different constructs rather than measurement error.
  Not available: nutritional status, mortality, food access at the
  household level in physical quantities.

The “not available” block is not a formality. Nutrition and mortality are the two outcome indicators the IPC weights most heavily, and an analysis without them is classifying on consumption and coping alone. Saying so is what stops the next reader assuming they were considered and found unremarkable.

What comes next

The table is assembled. The last lesson is what a working group is entitled to conclude from it — the sentence a Phase 3 classification asserts, the one it does not, and the threshold rule most people quoting a phase have never read.

Teach this lesson

The lesson as a slide deck, with the prose kept in the speaker notes rather than on the slide. Generated from this page, so it cannot fall out of step with it.

Start the slideshowRead the slides

The PDF needs no software and projects from any machine. The PowerPoint file is there to be edited — add your organisation's branding, cut a section for a shorter session, or merge two lessons into a workshop.