Invisible link to canonical for Microformats

Modelling Food Insecurity in Space and Time

Two questions: why an area suffers, and whether it is getting worse right now

Modelling Food Insecurity in Space and Time

The last stage of HERO turns the combined dataset into models. We use the same drivers for both models: conflict, displacement, rainfall, vegetation, food prices, and media coverage. From these drivers we answer two separate questions, and each question has its own model. In both cases the thing we predict is the share of the population in acute food insecurity, meaning IPC Phase 3 or above.

Question 1 · Static inference

What explains global hunger?

Why is one area worse off than another? Using the drivers alone, we try to explain the level of acute food insecurity in each area, and to learn which drivers matter most.

Question 2 · Nowcasting

What are hunger levels right now?

IPC assessments are expensive and slow. Most areas are updated only once or twice a year, so a sudden shock can go unseen for months. Between two assessments, we estimate the current level of acute food insecurity from the latest drivers.

Both models are built the same way. They use 13 features drawn from conflict, displacement, rainfall, vegetation, food prices, media coverage, and the time of year. We leave out the country name and the map coordinates on purpose. That way the model has to learn how the drivers relate to hunger, instead of simply memorising where each area is.


What explains global hunger?

To test this fairly, we hold out whole areas. The model trains on some areas and is scored on other areas it has never seen. This stops it from simply recalling an area’s usual level.

Hunger depends on context

The same drop in rainfall, the same level of conflict, or the same number of displaced people can mean very different things in the Sahel, the Horn of Africa, Central America, or Yemen. A single global model has to apply one rule across 37 very different settings, and that averages out the local patterns that actually matter.

On top of that, much of why one area is worse than another comes down to which country it is in. These long-standing differences between countries are already captured by a simple baseline: the average level of each country. So the global model that uses drivers only does not beat that country-average baseline.

model MAE (pp) RMSE (pp)
Country-average baseline 0.549 8.55 11.37
XGBoost (drivers) 0.529 8.77 11.62
LightGBM 0.519 8.90 11.75
RandomForest 0.486 9.11 12.14

Based on 8,457 area-months, 507 admin-1 areas, and 37 countries.

The lesson is not that the drivers are weak. It is that the useful signal sits inside countries and regions, not in one global rule. This points to localisation: training the model on smaller groups of similar areas.

Localisation works, and the report text helps most

To localise, we retrain the same model at nine different scopes. A scope is simply the set of areas each model is allowed to learn from. These range from one global model, to six geographic regions, to one model per country. We also try grouping areas in two other ways: by the values of their drivers, and by what their IPC reports actually talk about.

scope MAE (pp) gain over global
global 0.529 8.77
regional 0.617 7.64 +0.088
local (per country) 0.589 7.91 +0.144
driver clusters (k-means) 0.527 8.66 −0.002
driver clusters (hierarchical) 0.538 8.51 +0.009
report text (tf-idf, k-means) 0.658 7.17 +0.127
report text (tf-idf, hdbscan) 0.657 7.31 +0.124
report text (embeddings, k-means) 0.646 7.36 +0.114
report text (embeddings, hdbscan) 0.657 7.30 +0.126

The last column is the gain over the global model measured on the same areas, so the comparison is fair.

Two results stand out.

  • Grouping areas by what their IPC reports describe works best. Reports tend to fall into clear types, such as conflict and refugees, farming and water, or prices and inflation. Grouping countries by these types beats both the geographic regions and the driver-value groups.
  • A country’s own model wins where there is enough data. For the 11 countries with enough history to train their own model, the country model beats the global one in all 11.
Static inference, per-country detail, one marker per scope

For almost every country the coloured regional, local and text-cluster markers sit to the right (higher R²) and to the left (lower MAE) of the grey global marker.

Static inference, per-country R² and MAE by scope

Each scope's per-country R² (left) and MAE (right). The dashed line is the global median R². A box sitting to its right usually beats global.

What drives acute food insecurity

“Explainability is even more important than performance.” — a WFP data scientist

In humanitarian work, decisions affect lives, so the results have to be explainable. Decision-makers need to see why the model expects hunger to rise or fall before they act on it.

The table below ranks the driver families by how much they move the model’s prediction, using SHAP values.

driver family importance
food prices 4.04
conflict 3.88
seasonality 3.38
vegetation 2.87
displacement 2.56
media 2.15
rainfall 1.76

Food prices and conflict are the two strongest drivers. This matches what global reports say: economic pressure and violence are among the main causes of acute food insecurity. The chart below shows that more violent events and higher food prices push the predicted level of hunger up, and lower values push it down.

Static inference, SHAP chart for the global model

How each driver affects the predicted share of the population in IPC Phase 3 or above (global model).


What are hunger levels right now?

IPC assessments are thorough, but they are slow and costly, so most areas are reassessed only once or twice a year. The question here is simple: can we estimate an area’s current level of hunger from its last known assessment plus the latest drivers?

To keep this fair, we only ever train on the past and test on the future. The model never sees data from after the point it is predicting.

Hunger is sticky

Levels of acute food insecurity are persistent. Where an area stood at its last assessment tells you a lot about where it stands now. Crises can still shift sharply, but the last known level is a strong starting point, which is why simply carrying it forward is a baseline that is hard to beat.

Our nowcast builds on more than the single last value. It uses the last two assessments and the recent trend between them, then adds the latest drivers on top. Doing so lowers the average error by about 18 percent compared with carrying the last value forward, and the nowcast follows the direction of change instead of staying flat. When an area is getting worse, the nowcast tends to move with it.

approach MAE (pp) vs carry-forward
recent assessments + drivers + driver changes 0.749 5.08 +17.8%
recent assessments only 0.683 5.88 +4.9%
carry the last value forward 0.625 6.19 0.0%
drivers only, no history 0.503 7.66 −23.9%

Based on 1,487 area-months across 31 countries, pooled over five rolling test periods.

  • The nowcast beats the carry-forward baseline in 17 of 21 countries.
  • It tracks real change, not just the level. The match between predicted change and actual change since the last assessment is r = 0.54.

What the drivers add

The recent assessments do most of the work, and the drivers add the edge that catches movement.

what the model knows
recent assessments only 0.683
+ the current drivers 0.742
+ how fast the drivers are changing 0.749

A model with drivers but no history does worse than carry-forward, which confirms that the recent assessments are the anchor. The extra accuracy the drivers bring comes from picking up movement, and the strongest early signal is the change in rainfall.

A real example: Afghanistan

Afghanistan, nowcast vs actual, per province

One panel per Afghan province. The nowcast (blue) is tracked against the observed IPC level (black). Everything to the right of the dashed line is out of sample. The nowcast follows the real path, including the turns, rather than holding the last value flat.

Nowcast, per-country improvement over carry-forward

Per-country improvement over carry-forward. Positive almost everywhere.

One global model is enough

For the “why” question, tailoring the model to regions or countries helped a lot. For the “now” question it does not. We tested the same nine scopes, and every one of them lands within about 0.01 of the global model on the same areas. The reason is simple: once the model knows an area’s own last value, it already knows most of what a regional or country model could add. So for nowcasting, one global model is the right choice.

Nowcast, per-country skill and MAE by scope

Improvement over carry-forward (left) and MAE (right) per country, by scope. Every box sits to the right of zero, so every scope beats carry-forward, and the boxes overlap almost exactly, so no scope is clearly better than global.

What drives the nowcast

feature family importance
recent assessments 11.68
rainfall 2.26
conflict 1.41
prices 1.36
vegetation 1.19
seasonality 0.97
displacement 0.76
media 0.76

The recent assessments matter far more than any driver. The nowcast is first anchored to where the area already was. Among the drivers, rainfall is the strongest, which fits the earlier finding that a change in rainfall is the best early sign that conditions are shifting.

Nowcast, SHAP chart for the main model

SHAP chart for the main nowcasting model.


Does it scale? Admin-2

Admin-1 areas are provinces. Admin-2 areas are the districts inside them, so this is a finer view. Running the same pipeline one level down is a good test, because this is the level where targeting and early-warning decisions are actually made.

The “why” model gets stronger. At the district level the drivers finally beat the country-average baseline, because a finer view reveals real differences inside each country for the drivers to explain.

level baseline R² best driver model R² drivers beat baseline?
admin-1 0.549 0.529 no
admin-2 0.557 0.610 yes

The “now” model holds. Same improvement over carry-forward, same behaviour, and localisation still adds nothing.

  admin-1 admin-2
main model R² 0.749 0.698
improvement over carry-forward +17.8% +18.5%
change-direction r 0.54 0.55
countries beating carry-forward 17/21 22/25
Nowcast at admin-2, per-country improvement over carry-forward

Admin-2 nowcast: per-country improvement over carry-forward. The result carries to the finer level.


The nowcast, live

Everything above is a summary of the backtest. The map below shows the model’s actual output. Each admin-1 area is coloured by its latest nowcast of the IPC Phase 3 or above share. Hover an area to see its trend, with the observed IPC assessments (solid) and the nowcast (line), and a dotted connector from the last real assessment to the latest nowcast. Click a province to zoom in. For Cameroon and DR Congo this drills into the admin-2 layer, the same model one level finer, at the resolution where decisions are actually made.

Latest nowcast of the IPC Phase 3 or above share (% of population). Admin-1 for all four countries. Click Cameroon or DR Congo provinces to drill into admin-2. Afghanistan and Somalia show admin-1 only, because their admin-2 boundaries do not line up with the assessment data.