We validated the detection performance of BFAST by simulating NTL time series using parameters derived from real data in each country, segmented into pre-break, peri-break (12 months post-break), and post-break periods (Figures S12 - 15). Separate simulations were run for Yemen and Ukraine to reflect differences in scale and variability. BFAST successfully identified the true breakpoint in 92% of simulations informed by Yemen’s parameters and 56% of those informed by Ukraine’s. In Yemen-based simulations, detection was primarily driven by a sharp drop in trend values following the breakpoint; seasonality and noise played minimal roles, consistent with their low levels in the real data. In contrast, the Ukraine-informed simulations were noisier and more variable, making breakpoint detection more challenging. In these simulations, BFAST was more likely to detect a breakpoint when the trend dropped significantly between the pre- and peri-break periods and when a short-term pulse in the noise occurred near the breakpoint—enhancing the detectability of change amid generally noisy conditions. These findings both validate the use of BFAST on the real data and highlight important contextual differences: BFAST was more effective in Yemen because of the clear signal and limited recovery, while in Ukraine, detection required isolating the peri-break period to overcome masking effects from infrastructure resilience. Overall, these results suggest that BFAST and other change detection methods are likely sensitive to underlying country-specific patterns in trend, noise, and recovery.
- Decompose the administrative unit's time series into seasonal, trend, and noise components using
bfast - Calculate the mean trend value for three periods:
- Pre: Month 0 to month before break
- Peri: 12 months following break
- Post: Remaining months
- Note that the breakpoint was defined as Week 38 for all oblasts and Week 39 for all governorates to correspond to week of armed conflict onset
- Find the 'pulse' in the noise around the break
- This was really only necessary for the simulations informed by Ukraine data. We found that the noise often spiked around the breakpoint, and we wanted to isolate this pulse to a) ensure it wasn't biasing the overall standard deviations for each period and b) explicitly incorporate the pulse into our simulations
- Remove the pulse from the noise time series (don't worry, we add it back in during the simulations)
- Calculate the adjusted standard deviation of the noise for each period
- Calculate the average monthly seasonal value
- Do this for each administrative unit
- Find the median, 1st quartile, and 3rd quartile values for the trend, noise, and pulse parameters across all the administrative units
- Create a range of trend, noise, and pulse parameters from values derived in Step 8
- Plug those values into the
simulation code
-
Yemen-based simulations
- Parameters:
yem_parameters.md - Results:
yem_results.md
- Parameters:
-
Ukraine-based simulations
- Parameters:
ukr_parameters.md - Results:
ukr_results.md
- Parameters:
To validate the use of BFAST in this context, we simulated monthly NTL time series with breakpoints using parameters informed by Yemen and Ukraine's real data (Figure S11). To derive the parameters, we decomposed each administrative unit's time series into seasonal, trend, and noise components. For each administrative unit, mean trend values were calculated for three periods: pre-break (month 0 to the month prior to the breakpoint), peri-break (12 months following the breakpoint), and post-break (remaining months). Breakpoint timing was standardized as Week 38 in all oblasts and Week 39 in all governorates to align with the onset on armed conflict in both countries. Standard deviation of the noise was also found for each period, adjusted for any short-term pulse in noise around the break. The mean monthly seasonal values were also calculated from the decomposed data for each administrative unit. Using these parameters, median and quartile values across all administrative units in each country were calculated and used to inform a range of parameters for the simulations (Table S5). The simulated NTL time series were generated by reconstructing time series from individually simulated trend, noise, and seasonal components.
First, trend values for the pre-, peri-, and post-break periods were sampled from a range of parameters and temporally aligned around the simulated time series' breakpoint. Secondly, noise was simulated using a normal distribution N(μ = 0, σ = x), where x was informed by parameters from the real data. Pulses of varying strength (i.e., median, mean, and quartile values) were added to the noise surrounding the breakpoint (4 months prior to the break, month of the break, and 3 months following), though median pulse values were used in presented outputs as there was minimal change in results across the varying strengths. Thirdly, seasonality was set using the median of all administrative units' mean seasonal values in each country. Lastly, each simulation was given a breakpoint between months 9 - 57 in the Ukraine-informed simulations and 18 - 105 in the Yemen-informed simulations, which account for BFAST's standard minimum segment size of 15% of the time series length. Ten simulations were generated for each set of parameters across every breakpoint (Figures S12-15). Detection was considered successful in BFAST detected the true breakpoint within 2 months to allow for standard BFAST confidence intervals.