# create string values for the categories
ann_inc_data <- ann_inc_data %>%
arrange(adm1, adm2, adm2, year) %>%
mutate(crudeinc_cat = case_when(crudeinc <5 ~ "<5",
crudeinc <= 50 ~ "5-50",
crudeinc <=100 ~ "50-100",
crudeinc <=250 ~ "100-250",
crudeinc <=450 ~ "250-450",
crudeinc <=750 ~ "450-750",
TRUE ~ ">750"))Incidence stratification
Overview
Stratification is defined as classification of geographical areas or localities according to epidemiological, ecological, social and economic determinants for the purpose of guiding malaria interventions. It can include risk stratification (i.e. classification of geographical areas or localities according to factors that determine receptivity and vulnerability to malaria transmission) and/or interventions stratification based on eligibility and other criteria (e.g. endemicity criteria). It is important to distinguish between simply mapping the spatial distribution of an indicator and stratifying it based on the specific question at hand. Stratification involves transforming an indicator into meaningful categories that align with decision-making needs in malaria response for each setting. These categories must be strategically relevant for effective sub-national planning. For example, converting a malaria risk map into categories based on WHO’s transmission continuum to guide intervention strategies would be considered malaria risk stratification.
To provide the relevant information needed for programmatic use the stratification analysis should be done at the subnational unit of operation or lower levels. In settings with high transmission, the NMP usually stratifies subnational areas such as districts, health zones, provinces or regions. As countries progress towards elimination, finer scale mapping is required, and stratification should be more specific, ideally at the level of localities or health facility catchment areas, usually using absolute case data.
- TBD
Step-by-Step Instructions
To skip the step-by-step explanation, jump to the full code at the end of this page.
Step 1: Stratify crude incidence
For stratification purposes, it is recommended that the calculated incidence is aggregated by year at the operational administrative level.
Step 1.1: Stratify adjusted incidence1
Categorize adjusted incidence1 based on agreed cut-offs
Step 1.2: Stratify adjusted incidence 2
Categorize adjusted incidence1 based on agreed cut-offs
Step 1.3: Stratify adjusted incidence3
Categorize adjusted incidence1 based on agreed cut-offs
Step 2: Mapping all incidence estimates
Once all incidence estimates are calculated, district-level trends and maps of the crude and adjusted incidence estimates need to be visually examined by NMPs. Discussions should be held to weigh the benefits and limitations of each adjustment until a consensus is reached on the best incidence metric to be used for intervention targeting.
Countries are highly encouraged to review the standard approach provided here and adapt the equations and sources of data as they see fit for their context.
Join incidence dataset with shapefile
We use the same set of colors for the different categories so we can better compare the changes after each adjustment and each year and make decisions
Since we have multiple years, we automate the plotting for the different years
Plot maps for crude incidence for each year and save
for (yr in years) {
year <- inc_maps %>%
filter(year == yr)
crude <- ggplot(year) +
geom_sf(aes(fill = factor(crudeinc_cat)), color = "gray") +
geom_sf(data = adm1_coords, fill = NA, color = "black", size = 0.3) + # adding adm1 layer
scale_fill_manual(values = colors,
name = "Cases per 1000",
labels = c("<5", "5-50", "50-100", "100-250", "250-450", "450-750", ">750"),
drop = FALSE) +
labs(title = paste("Crude Incidence", yr),
subtitle = "Country") +
theme_minimal() +
theme(legend.position = "right",
plot.title = element_text(size = 14),
plot.subtitle = element_text(size = 12))
# print plot
print(inc1)
# Save the plot
ggsave(filename = paste0("gph/crude_", yr, ".png"), plot = crude, width = 8, height = 6, dpi = 300)
}Plot maps for adjusted incidence1 for each year and save
for (yr in years) {
year <- inc_maps %>%
filter(year == yr)
inc1 <- ggplot(year) +
geom_sf(aes(fill = factor(adjinc1_cat)), color = "gray") +
geom_sf(data = adm1_coords, fill = NA, color = "black", size = 0.3) + # adding adm1 layer
scale_fill_manual(values = colors,
name = "Cases per 1000",
labels = c("<5", "5-50", "50-100", "100-250", "250-450", "450-750", ">750"),
drop = FALSE) +
labs(title = paste("Adjusted Incidence1", yr),
subtitle = "Country") +
theme_minimal() +
theme(legend.position = "right",
plot.title = element_text(size = 14),
plot.subtitle = element_text(size = 12))
# print plot
print(inc1)
# Save the plot
ggsave(filename = paste0("gph/inc1_", yr, ".png"), plot = inc1, width = 8, height = 6, dpi = 300)
}Plot maps for adjusted incidence2 for each year and save
for (yr in years) {
year <- inc_maps %>%
filter(year == yr)
inc2 <- ggplot(year) +
geom_sf(aes(fill = factor(adjinc2_cat)), color = "gray") +
geom_sf(data = adm1_coords, fill = NA, color = "black", size = 0.3)+ # adding adm1 layer
scale_fill_manual(values = colors,
name = "Cases per 1000",
labels = c("<5", "5-50", "50-100", "100-250", "250-450", "450-750", ">750"),
drop = FALSE) +
labs(title = paste("Adjusted Incidence2", yr),
subtitle = "Country") +
theme_minimal() +
theme(legend.position = "right",
plot.title = element_text(size = 14),
plot.subtitle = element_text(size = 12))
# print plot
print(inc2)
# Save the plot
ggsave(filename = paste0("gph/inc2_", yr, ".png"), plot = inc2, width = 8, height = 6, dpi = 300)
}Plot maps for adjusted incidence3 for each year and save
for (yr in years) {
year <- inc_maps %>%
filter(year == yr)
inc3 <- ggplot(year) +
geom_sf(aes(fill = factor(adjinc3_cat)), color = "gray") +
geom_sf(data = adm1_coords, fill = NA, color = "black", size = 0.3)+ # adding adm1 layer
scale_fill_manual(values = colors,
name = "Cases per 1000",
labels = c("<5", "5-50", "50-100", "100-250", "250-450", "450-750", ">750"),
drop = FALSE) +
labs(title = paste("Adjusted Incidence3", yr),
subtitle = "Country") +
theme_minimal() +
theme(legend.position = "right",
plot.title = element_text(size = 14),
plot.subtitle = element_text(size = 12))
# print plot
print(inc3)
# Save the plot
ggsave(filename = paste0("gph/inc3_", yr, ".png"), plot = inc3, width = 8, height = 6, dpi = 300)
}Summary
The process is iterative, requiring periodic refinement based on updated data and the observed impact of interventions. This ensures stratification remains a dynamic tool for guiding operational decisions and resource allocation, ultimately improving the effectiveness of malaria control programs at the subnational level.