4.4 Climate resilience
Purpose of indicator
Climate change is affecting food systems around the world, with temperatures and precipitation anomalies and extreme events leading to crop/livestock losses, altering species ranges, creating agricultural water stress, altering working conditions and triggering human migration. Building farm and food system resilience to climate change and other major stressors (e.g. pandemics, war) is fundamental to prevent food and livelihood insecurity (SDG 1, 2), and avoidable loss of life (SDG 3, 15).
Key Metadata
| Metadata Item | Description |
|---|---|
| Indicator Name | Resilience score |
| Theme | Climate resilience |
| SDGs Targeted | SDG1, SDG2, SDG3, SDG15 |
| Data Source | Household survey |
| Measurement | Resilience score adapted from RIMA |
| Measurement Units | Score 0-20 |
Guidance on Measurement
Resilience is the capacity of socioeconomic systems (e.g., households) to withstand shocks through adaptation and transformation.
FAO’s Resilience Index Measurement and Analysis (RIMA) is one way to measure resilience. FAO computes a Resilience Capacity Index (RCI) based on data collected across four pillars:
- Access to basic services (ABS)
- Assets (AST)
- Social safety nets (SSN)
- Adaptive capacity (AC)
FAO calculates the RCI using structural equation modelling (SEM), combining Confirmatory Factor Analysis and Path Analysis. There are two steps: 1) estimate resilience of each pillar through Factor Analysis (FA), 2) calculate a resilience index from the pillars, using Ordinary Least Squares with the outcome variable being a food security indicator(s) such as dietary diversity score. The benefit of this approach is that is possible to quantify the contribution of each pillar to the overall resilience. The limitation is that the RCI depends heavily on which indicator is used as the outcome variable which does not capture the variation across the four pillars.
For HOLPA, we adapt the FAO approach to directly combine the data from the four pillars into a measure of resilience scaled from 0-20. This can be done by assigning scores of 0-5 to all responses, then taking the mean within each pillar, and summing scores across the four pillars according to the following table:
| Pillar | Question | Score assigned to response |
|---|---|---|
| ABS | Does your farm/household have the following services: 1) Drinking water piped to the household, 2) Toilet with piped sewer or septic tank, 3) Electrical energy, 4) Waste (rubbish) collection service, 5) Mobile phone reception, 6) Internet. [Count services] | 5: 3 or more; 2.5: 1-2; 0: None |
| ABS | How far (one way) is the household from the closest accessible and functioning service in minutes (walking): 1) Freshwater source, 2) primary school, 3) public hospital or health facility, 4) livestock market 5) agricultural/crops market, 6) public means of transport, 7) well-maintained road suitable for cars. | For each service: 5: <5 mins; 2.5: 5-20 mins; 0: > 20 mins |
| AST | How many of the following assets do household members own: 1) Car, 2) Motorbike, 3) Bicycle, 4) Gas or electric cooker, 5) Mobile phone, 6) Ox-plough, 7) Tractor, 8) Machete. [Count assets] | 5: 5 or more distinct asset types; 2.5: 2-4; 0: 0-1 |
| SSN | On average, how many school meals have the children living in the household received per week, during the last month of attending school? | 5: 5 meals; 4: 4 meals; 3: 3 meals; 2: 2 meals; 1: 1 meal; 0: 0 meals |
| SSN | Would any of the following individuals or organisations provide your household support in case of need: 1) local farmer associations or cooperatives, 2) other local associations (e.g. women support groups, youth groups), 3) individuals from my community, 4) individuals from a different community, 5) community leaders, 6) NGOs 8) local government, 9) national government, 10) other (please specify). [Count sources] | 5: 3 or more; 2.5: 1-2; 0: None |
| AC | Can the head of household read and write in any language? | 5: Can read and write; 2.5: Can read or write; 0: Cannot read or write, or prefer not to say |
| AC | On average, how many years have the household members of working age (>14 and <65 years old) attended formal school? | 5: ≥7 (Secondary or higher); 2.5: <7 (Primary only); 0: 0 (None) |
| AC | Has any household member received training in the last 12 months? | 5: Y; 0: N |
| AC | In the past 12 months, what were all the household’s sources of income: 1) Agriculture, animal breeding, fishing, 2) Other family business, 3) Government salary, 4) private sector salary, 5) Cash transfers (e.g. transfers from absent family members, donations), 6) Other (please specify) [count sources] | 5: 3 or more sources; 2.5: 2 sources; 0: 1 source |
| AC | In the past 7 days, what percentage of the household’s income was used for buying food | 5: 0-25%; 3.33: 26-50%; 1.66: 51-75%; 0: 76-100% |
| AC | In the past 5 years, has your farm/household had access to credit to support investment in your farming business. | 5: Y; 0: N, or I don’t know |
| AC | How do you feel about your farm/household’s ability to meet credit repayments now and until the loans are fully repaid? | 5: Full repayments; 3.33: Uncertain future repayments; 1.66: Uncertain current repayments; 0: Uncertain current and future repayments |
| AC | Do you have access to crop insurance? If yes, what is covered, e.g. losses from weather events, pest outbreaks market shocks? | 5: Y; 0: N |
| AC | Do you have access to subsidies for agricultural inputs? If yes, which inputs | 5: Y; 0: N |
Additionally, HOLPA collects data on household exposure to shocks over the last 12 months and any coping mechanisms employed.
Guidance on Data Entry and Reporting
no information is available
Calculation Method
1. Access to basic services (ABS)
## Access to basic services (ABS)
abs1 <- main_surveys %>%
select(
farm_id,
owner_id,
submission_id,
starts_with("distanceunit"),
starts_with("transportation_"),
starts_with("distance")
) %>%
pivot_longer(
cols = distanceunit_farmland:distance_freshwater,
names_to = c(".value", "place"),
names_sep = "_"
) %>%
mutate(
transportation = ifelse(distanceunit == "km", NA, transportation)
) %>%
mutate(
distance = ifelse(distance %in% c(99, 999, 9999, 99999), NA, distance)
) %>% #move to cleaning script
mutate(
walking_time = case_when(
distanceunit == "km" ~ (distance / 5) * 60,
transportation %in% c("motorbike", "car") ~ distance * 10,
transportation == "cycling" ~ distance * 3,
transportation %in% c("horse", "donkey") ~ distance * 2,
transportation == "walking" ~ distance
)
) %>%
mutate(
walking_time_score = case_when(
walking_time < 5 ~ 5,
walking_time < 20 ~ 2.5,
walking_time >= 20 ~ 0
)
) %>%
group_by(farm_id, owner_id, submission_id) %>%
summarise(ABS_service_access = mean(walking_time_score, na.rm = TRUE))
abs2 <- main_surveys %>%
select(
farm_id,
owner_id,
submission_id,
piped_drinking_water,
piped_toilet,
electricity,
waste_collection,
phone_reception,
internet
) %>%
mutate_at(vars(piped_drinking_water:internet), as.numeric) %>%
rowwise() %>%
mutate(
ABS_utilities = sum(c_across(piped_drinking_water:internet), na.rm = TRUE)
) %>%
mutate(
ABS_utilities = case_when(
ABS_utilities >= 3 ~ 5,
ABS_utilities > 0 ~ 2.5,
ABS_utilities == 0 ~ 0
)
) %>%
select(farm_id, owner_id, submission_id, ABS_utilities)
abs <- full_join(abs1, abs2) %>%
rowwise() %>%
mutate(
ABS_score = mean(c_across(ABS_service_access:ABS_utilities), na.rm = TRUE)
)
2. Assets (AST)
### Assets (AST)
ast <- main_surveys %>%
select(
farm_id,
owner_id,
submission_id,
cars:crop_facilities,
asset_other_count
) %>%
mutate_at(vars(cars:asset_other_count), as.numeric) %>%
mutate_at(vars(cars:asset_other_count), function(x) ifelse(x > 0, 1, 0)) %>%
rowwise() %>%
mutate(asset_sum = sum(c_across(cars:asset_other_count), na.rm = TRUE)) %>%
mutate(
AST_score = case_when(
asset_sum >= 3 ~ 5,
asset_sum > 0 ~ 2.5,
asset_sum == 0 ~ 0
)
) %>%
select(farm_id, owner_id, submission_id, AST_score)
4. Adaptive capacity (AC)
## ADAPTIVE CAPACITY PILLAR
ac <- main_surveys %>%
select(
farm_id,
owner_id,
submission_id,
read_write,
highest_education_male,
highest_education_female,
agricultural_training,
business_training,
other_training_yn,
income_count,
food_expenditure_percent,
credit_access,
debt_repayment,
debt,
agricultural_loss_insurance,
subsidies
) %>%
mutate_at(
vars(
read_write,
highest_education_male,
highest_education_female,
agricultural_training,
business_training,
other_training_yn,
income_count,
credit_access,
debt_repayment,
debt,
agricultural_loss_insurance,
subsidies
),
as.numeric
) %>%
mutate(
AC_literacy = case_when(
read_write == 3 ~ 5,
read_write %in% c(1, 2) ~ 2.5,
read_write %in% c(0, 777) ~ 0
),
highest_education_male = case_when(
highest_education_male >= 2 ~ 5,
highest_education_male == 1 ~ 2.5,
highest_education_male == 0 ~ 0
),
highest_education_female = case_when(
highest_education_female >= 2 ~ 5,
highest_education_female == 1 ~ 2.5,
highest_education_female == 0 ~ 0
),
AC_training = ifelse(
agricultural_training == 1 |
business_training == 1 |
other_training_yn == 1,
5,
0
),
AC_income_sources = case_when(
#FLAG AS NOT CURRENRLY POSSIBLE TO EQUAL 0
income_count >= 3 ~ 5,
income_count > 0 ~ 2.5,
income_count == 0 ~ 0
),
AC_food_expenditure = case_when(
food_expenditure_percent %in% c("0", "1_25") ~ 5,
food_expenditure_percent == "26_50" ~ 3.33,
food_expenditure_percent == "51_75" ~ 1.66,
food_expenditure_percent == "76_100" ~ 0
),
AC_credit_access = case_when(
credit_access == 2 ~ 5,
credit_access == 999 ~ NA,
.default = 0
),
AC_credit_repayment = case_when(
credit_access == 2 & debt == 1 ~ 5,
debt_repayment == 4 ~ 5,
debt_repayment == 3 ~ 3.33,
debt_repayment == 2 ~ 1.66,
debt_repayment == 1 | credit_access %in% c(1, 0) ~ 0
),
AC_insurance = case_when(
agricultural_loss_insurance > 0 ~ 5,
agricultural_loss_insurance == 0 ~ 0
),
AC_subsidies = case_when(
subsidies == 1 ~ 5,
subsidies == 0 ~ 0
)
) %>%
rowwise() %>%
mutate(
AC_education = mean(
c_across(c(highest_education_male, highest_education_female)),
na.rm = TRUE
)
) %>%
mutate(AC_score = mean(c_across(starts_with("AC_")), na.rm = TRUE))
Overall RIMA Calculation
Requires calculating the 4 sub-indicators above
## Calculate the overall Resilience Index Measurement and Analysis score
RIMA <- abs %>%
select(farm_id, owner_id, submission_id, ABS_score) %>%
left_join(ast %>% select(farm_id, owner_id, submission_id, AST_score)) %>%
left_join(ssn %>% select(farm_id, owner_id, submission_id, SSN_score)) %>%
left_join(ac %>% select(farm_id, owner_id, submission_id, AC_score)) %>%
rowwise() %>%
mutate(
kpi14a_climate_resilience = sum(
c_across(ends_with("_score")),
na.rm = TRUE
)
)
### include the new variables in the performance_indicators data frame
performance_indicators <- performance_indicators %>%
left_join(
RIMA %>%
select(farm_id, owner_id, submission_id, kpi14a_climate_resilience)
) %>%
left_join(
main_surveys %>%
mutate(kpi14b_climate_resilience = as.numeric(capacity_to_recover)) %>%
select(farm_id, owner_id, submission_id, kpi14b_climate_resilience)
)
Indicator Interpretation and Threshold Setting
no information is available
Limitations
The RIMA methodology has been criticized for failing to reliably predict future household resilience in terms of food security (Upton et al. 2022). In a review of resilience indices presented in Upton et al. (2022), the best-performing food security resilience indicator, which was the one developed by Cissé and Barrett (2018), achieved only modest overall accuracy in classifying food-insecure households in their application, whereas other approaches (RIMA and TANGO) performed no better than random chance. Furthermore, none of the resilience measures predicted significantly better than the far simpler approach of using the most recent observed value of wellbeing to predict future wellbeing. Therefore, Upton et al. (2022) argue, the value added in terms of predictive and targeting performance by these measures remains unclear. Overall, Upton et al. (2022) conclude that “the approaches presently in play are all, at best, imperfect, and at worst deeply flawed.”
Currently, there is a shortage of alternative resilience indicators suitable for inclusion in a holistic survey (that is, robust yet not requiring time-consuming data collection). The World Bank is working on a Causal machine Learning Approach to Resilience Estimation (CLARE), which is rooted in an impact evaluation framework and causal machine learning algorithms applied to longitudinal household survey data. The indicator is model-agnostic, data-driven, scalable, and normatively anchored to wellbeing thresholds, and can be either shock-specific or a general-purpose resilience metric. CLARE is calculated using data on food consumption, food insecurity, drought, shocks, gender, household size and demographic structure, assets and access to services. However, the reliance on repeat survey data may present a constraint to use in projects with short timespans or limited resources.
3. Social safety nets (SSN)