Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

03h — Does the training-sample design drive the results?

LifeWatch ERIC

The paper trains its random forest on equal numbers of regrowth and non-regrowth points, with non-regrowth drawn at random over the whole domain. C. Cloud’s reanalysis of the paper in Brazil (2026, Matters Arising manuscript and code: https://github.com/CannonCloud/tropical-regeneration-reanalysis) argues that both choices shape the output: the 50/50 ratio inflates areas, and random non-regrowth lets the model separate the classes by broad climate rather than by local site conditions. This notebook repeats his two tests in Colombia, with the step-2 specification unchanged except for how the training sample is drawn.

  • A — Training prevalence. Same total sample size (39,523), regrowth share 50 %, 20 %, 5 % and the landscape prevalence π. Each model is scored on the step-2 validation set and its area is computed uncalibrated and after the prior-shift correction (Saerens et al. 2002) to π.

  • B — Paired non-regrowth. Cloud’s “paired” design: 80 % of non-regrowth training points are drawn within 3 km of regrowth, 20 % at random. Compared with the step-2 (global) design on (i) the random validation set, (ii) a local validation set whose non-regrowth points also lie within 3 km of regrowth, (iii) grouped permutation importance (climate vs local predictors), (iv) calibrated areas and the top-5 % priority pixels.

  • C — Forward test. The same two designs on MapBiomas labels: trained on 2000→2012 regrowth, scored on 2012→2024 regrowth (as in 03f, E2).

Distance to regrowth is measured to the nearest regrowth point of the 1-in-100 systematic grid of 02b (300 m spacing): Fagan regrowth for A–B, MapBiomas 2000→2012 regrowth for C. This is an extension; the paper uses only the global 50/50 design.

pool 151,980; validation 123,356; grid 12,161,726; prevalence pi = 0.01644
prediction-domain grid points with complete 2018 predictors: 2,456,636

A — Training prevalence

Total size fixed at the step-2 value; only the regrowth share changes. The 50 % row is the step-2 draw and must reproduce its validation accuracy (0.8867) and uncalibrated area (3.989 Mha).

regrowth_share_0.5000 {'accuracy': 0.8867, 'balanced_accuracy': 0.8867, 'sensitivity': 0.853, 'specificity': 0.9204, 'auc': 0.9513, 'n': 123356, 'n_regrowth': 61678} area uncal 3.989, prior-shift 0.188 Mha
regrowth_share_0.2000 {'accuracy': 0.8514, 'balanced_accuracy': 0.8514, 'sensitivity': 0.7206, 'specificity': 0.9822, 'auc': 0.9443, 'n': 123356, 'n_regrowth': 61678} area uncal 1.770, prior-shift 0.202 Mha
regrowth_share_0.0500 {'accuracy': 0.7871, 'balanced_accuracy': 0.7871, 'sensitivity': 0.5775, 'specificity': 0.9967, 'auc': 0.9306, 'n': 123356, 'n_regrowth': 61678} area uncal 0.593, prior-shift 0.224 Mha
regrowth_share_0.0164 {'accuracy': 0.7374, 'balanced_accuracy': 0.7374, 'sensitivity': 0.4752, 'specificity': 0.9997, 'auc': 0.9161, 'n': 123356, 'n_regrowth': 61678} area uncal 0.240, prior-shift 0.240 Mha

B — Paired non-regrowth (Fagan labels)

                                        metric    value     n
             pool_nonregrowth_share_within_3km 0.353560 75990
        pool_nonregrowth_median_km_to_regrowth 4.316927 75990
      pool_regrowth_median_km_to_regrowth_grid 0.339077 75990
       validation_nonregrowth_share_within_3km 0.355070 61678
  validation_nonregrowth_median_km_to_regrowth 4.292252 61678
validation_regrowth_median_km_to_regrowth_grid 0.348222 61678
global random {'accuracy': 0.8867, 'balanced_accuracy': 0.8867, 'sensitivity': 0.853, 'specificity': 0.9204, 'auc': 0.9513, 'n': 123356, 'n_regrowth': 61678}
global local  {'accuracy': 0.8501, 'balanced_accuracy': 0.8474, 'sensitivity': 0.853, 'specificity': 0.8417, 'auc': 0.9245, 'n': 83578, 'n_regrowth': 61678}
paired random {'accuracy': 0.8791, 'balanced_accuracy': 0.8791, 'sensitivity': 0.8186, 'specificity': 0.9395, 'auc': 0.9434, 'n': 123356, 'n_regrowth': 61678}
paired local  {'accuracy': 0.841, 'balanced_accuracy': 0.8614, 'sensitivity': 0.8186, 'specificity': 0.9042, 'auc': 0.9298, 'n': 83578, 'n_regrowth': 61678}

Which predictors carry the signal?

Permutation importance (drop in AUC) on a balanced random subset of the validation set, grouped into climate (bioclim PCs, biome) and local predictors (forest density and distance, soil, land cover).

design               global  paired
variable                           
biome                 0.006   0.005
dist_forest_2000      0.570   0.578
forest_density_2000   0.143   0.168
lc_2000               0.016   0.012
ocdens                0.057   0.032
pc1                   0.034   0.030
pc2                   0.029   0.023
pc3                   0.036   0.035
pc4                   0.042   0.035
phihox                0.067   0.082

Areas and priority pixels

The prior shift assumes that only the class ratio differs between training and landscape. Paired sampling also changes which non-regrowth points are seen, so the prior shift is mis-specified for it (Cloud’s covariate-shift point). As a design-neutral alternative, each model is calibrated empirically with isotonic regression on the random validation set weighted to prevalence π (as in 03).

          design                         metric    value
          global expected_area_uncalibrated_mha 3.988743
          global  expected_area_prior_shift_mha 0.188251
          global     expected_area_isotonic_mha 0.207793
          global   area_p_gt05_uncalibrated_mha 2.025899
          paired expected_area_uncalibrated_mha 4.066441
          paired  expected_area_prior_shift_mha 0.154671
          paired     expected_area_isotonic_mha 0.207502
          paired   area_p_gt05_uncalibrated_mha 1.658765
global_vs_paired                top5pct_overlap 0.740760
global_vs_paired                     spearman_p 0.885474
          global          top5pct_share_biome_1 0.804049
          global          top5pct_share_biome_2 0.195951
          paired          top5pct_share_biome_1 0.882946
          paired          top5pct_share_biome_2 0.117054

C — Forward test on MapBiomas labels

As 03f E2: train on 2000→2012 regrowth with 2000 predictors, predict 2012→2024 regrowth with 2012 predictors. The global row must reproduce 03f (balanced accuracy 0.7171, AUC 0.7995). Precision at the top k % is the share of the highest-ranked labelled points that did regrow in 2012–2024, the quantity that matters for targeting. Calibration uses only period-1 information (prevalence π₁; isotonic fit on period-1 validation points).

global {'accuracy': 0.7385, 'balanced_accuracy': 0.7171, 'sensitivity': 0.6939, 'specificity': 0.7403, 'auc': 0.7995, 'n': 3255476, 'n_regrowth': 130997}
paired {'accuracy': 0.7467, 'balanced_accuracy': 0.7099, 'sensitivity': 0.6699, 'specificity': 0.75, 'auc': 0.7942, 'n': 3255476, 'n_regrowth': 130997}
     part           design                                         metric        value       n                                                                                 note
 B_paired             data              pool_nonregrowth_share_within_3km       0.3536   75990                                                                                     
 B_paired             data         pool_nonregrowth_median_km_to_regrowth       4.3169   75990                                                                                     
 B_paired             data       pool_regrowth_median_km_to_regrowth_grid       0.3391   75990 regrowth sample points to the nearest regrowth grid point (lattice resolution check)
 B_paired             data        validation_nonregrowth_share_within_3km       0.3551   61678                                                                                     
 B_paired             data   validation_nonregrowth_median_km_to_regrowth       4.2923   61678                                                                                     
 B_paired             data validation_regrowth_median_km_to_regrowth_grid       0.3482   61678 regrowth sample points to the nearest regrowth grid point (lattice resolution check)
 B_paired           global                     random_validation_accuracy       0.8867  123356                                                                step-2 validation set
 B_paired           global            random_validation_balanced_accuracy       0.8867  123356                                                                step-2 validation set
 B_paired           global                  random_validation_sensitivity       0.8530  123356                                                                step-2 validation set
 B_paired           global                  random_validation_specificity       0.9204  123356                                                                step-2 validation set
 B_paired           global                          random_validation_auc       0.9513  123356                                                                step-2 validation set
 B_paired           global                            random_validation_n  123356.0000  123356                                                                step-2 validation set
 B_paired           global                   random_validation_n_regrowth   61678.0000  123356                                                                step-2 validation set
 B_paired           global                      local_validation_accuracy       0.8501   83578                     validation regrowth + equal non-regrowth within 3 km of regrowth
 B_paired           global             local_validation_balanced_accuracy       0.8474   83578                     validation regrowth + equal non-regrowth within 3 km of regrowth
 B_paired           global                   local_validation_sensitivity       0.8530   83578                     validation regrowth + equal non-regrowth within 3 km of regrowth
 B_paired           global                   local_validation_specificity       0.8417   83578                     validation regrowth + equal non-regrowth within 3 km of regrowth
 B_paired           global                           local_validation_auc       0.9245   83578                     validation regrowth + equal non-regrowth within 3 km of regrowth
 B_paired           global                             local_validation_n   83578.0000   83578                     validation regrowth + equal non-regrowth within 3 km of regrowth
 B_paired           global                    local_validation_n_regrowth   61678.0000   83578                     validation regrowth + equal non-regrowth within 3 km of regrowth
 B_paired           global                 training_nonregrowth_median_km       4.3074   19761                                                                                     
 B_paired           paired                     random_validation_accuracy       0.8791  123356                                                                step-2 validation set
 B_paired           paired            random_validation_balanced_accuracy       0.8791  123356                                                                step-2 validation set
 B_paired           paired                  random_validation_sensitivity       0.8186  123356                                                                step-2 validation set
 B_paired           paired                  random_validation_specificity       0.9395  123356                                                                step-2 validation set
 B_paired           paired                          random_validation_auc       0.9434  123356                                                                step-2 validation set
 B_paired           paired                            random_validation_n  123356.0000  123356                                                                step-2 validation set
 B_paired           paired                   random_validation_n_regrowth   61678.0000  123356                                                                step-2 validation set
 B_paired           paired                      local_validation_accuracy       0.8410   83578                     validation regrowth + equal non-regrowth within 3 km of regrowth
 B_paired           paired             local_validation_balanced_accuracy       0.8614   83578                     validation regrowth + equal non-regrowth within 3 km of regrowth
 B_paired           paired                   local_validation_sensitivity       0.8186   83578                     validation regrowth + equal non-regrowth within 3 km of regrowth
 B_paired           paired                   local_validation_specificity       0.9042   83578                     validation regrowth + equal non-regrowth within 3 km of regrowth
 B_paired           paired                           local_validation_auc       0.9298   83578                     validation regrowth + equal non-regrowth within 3 km of regrowth
 B_paired           paired                             local_validation_n   83578.0000   83578                     validation regrowth + equal non-regrowth within 3 km of regrowth
 B_paired           paired                    local_validation_n_regrowth   61678.0000   83578                     validation regrowth + equal non-regrowth within 3 km of regrowth
 B_paired           paired                 training_nonregrowth_median_km       1.9540   19762                                                                                     
 B_paired           global                       importance_share_climate       0.1474   20000                            permutation importance (AUC drop, negatives clipped to 0)
 B_paired           paired                       importance_share_climate       0.1283   20000                            permutation importance (AUC drop, negatives clipped to 0)
 B_paired           global                 expected_area_uncalibrated_mha       3.9887 2456636                                                                                     
 B_paired           global                  expected_area_prior_shift_mha       0.1883 2456636                             Saerens prior shift; mis-specified for the paired design
 B_paired           global                     expected_area_isotonic_mha       0.2078 2456636                    isotonic calibration on the random validation set, weighted to pi
 B_paired           global                   area_p_gt05_uncalibrated_mha       2.0259 2456636                                                                                     
 B_paired           paired                 expected_area_uncalibrated_mha       4.0664 2456636                                                                                     
 B_paired           paired                  expected_area_prior_shift_mha       0.1547 2456636                             Saerens prior shift; mis-specified for the paired design
 B_paired           paired                     expected_area_isotonic_mha       0.2075 2456636                    isotonic calibration on the random validation set, weighted to pi
 B_paired           paired                   area_p_gt05_uncalibrated_mha       1.6588 2456636                                                                                     
 B_paired global_vs_paired                                top5pct_overlap       0.7408  122832 share of the global design's top-5 % grid points also in the paired design's top 5 %
 B_paired global_vs_paired                                     spearman_p       0.8855 2456636                                                                                     
 B_paired           global                          top5pct_share_biome_1       0.8040  122832                                                                                     
 B_paired           global                          top5pct_share_biome_2       0.1960  122832                                                                                     
 B_paired           paired                          top5pct_share_biome_1       0.8829  122832                                                                                     
 B_paired           paired                          top5pct_share_biome_2       0.1171  122832                                                                                     
C_forward             data              pool_nonregrowth_share_within_3km       0.8244 1594883                                                                                     
C_forward           global                               forward_accuracy       0.7385 3255476                            all MapBiomas-labelled 2012-2024 grid points, 2012 inputs
C_forward           global                      forward_balanced_accuracy       0.7171 3255476                            all MapBiomas-labelled 2012-2024 grid points, 2012 inputs
C_forward           global                            forward_sensitivity       0.6939 3255476                            all MapBiomas-labelled 2012-2024 grid points, 2012 inputs
C_forward           global                            forward_specificity       0.7403 3255476                            all MapBiomas-labelled 2012-2024 grid points, 2012 inputs
C_forward           global                                    forward_auc       0.7995 3255476                            all MapBiomas-labelled 2012-2024 grid points, 2012 inputs
C_forward           global                                      forward_n 3255476.0000 3255476                            all MapBiomas-labelled 2012-2024 grid points, 2012 inputs
C_forward           global                             forward_n_regrowth  130997.0000 3255476                            all MapBiomas-labelled 2012-2024 grid points, 2012 inputs
C_forward           global                      forward_precision_top1pct       0.3073   32554                              share of the top-ranked points that regrew in 2012-2024
C_forward           global                      forward_precision_top5pct       0.1897  162773                              share of the top-ranked points that regrew in 2012-2024
C_forward           global                     forward_precision_top10pct       0.1496  325547                              share of the top-ranked points that regrew in 2012-2024
C_forward           global       predicted_regrowth_area_uncalibrated_mha       7.3671 3255476                                                                                     
C_forward           global    predicted_regrowth_area_prior_shift_pi1_mha       0.9782 3255476                                                                                     
C_forward           global   predicted_regrowth_area_isotonic_period1_mha       0.9873 3255476                                                                                     
C_forward           paired                               forward_accuracy       0.7467 3255476                            all MapBiomas-labelled 2012-2024 grid points, 2012 inputs
C_forward           paired                      forward_balanced_accuracy       0.7099 3255476                            all MapBiomas-labelled 2012-2024 grid points, 2012 inputs
C_forward           paired                            forward_sensitivity       0.6699 3255476                            all MapBiomas-labelled 2012-2024 grid points, 2012 inputs
C_forward           paired                            forward_specificity       0.7500 3255476                            all MapBiomas-labelled 2012-2024 grid points, 2012 inputs
C_forward           paired                                    forward_auc       0.7942 3255476                            all MapBiomas-labelled 2012-2024 grid points, 2012 inputs
C_forward           paired                                      forward_n 3255476.0000 3255476                            all MapBiomas-labelled 2012-2024 grid points, 2012 inputs
C_forward           paired                             forward_n_regrowth  130997.0000 3255476                            all MapBiomas-labelled 2012-2024 grid points, 2012 inputs
C_forward           paired                      forward_precision_top1pct       0.3167   32554                              share of the top-ranked points that regrew in 2012-2024
C_forward           paired                      forward_precision_top5pct       0.1884  162773                              share of the top-ranked points that regrew in 2012-2024
C_forward           paired                     forward_precision_top10pct       0.1484  325547                              share of the top-ranked points that regrew in 2012-2024
C_forward           paired       predicted_regrowth_area_uncalibrated_mha       7.3008 3255476                                                                                     
C_forward           paired    predicted_regrowth_area_prior_shift_pi1_mha       0.9292 3255476                                                                                     
C_forward           paired   predicted_regrowth_area_isotonic_period1_mha       0.9847 3255476                                                                                     
C_forward         observed                     observed_regrowth_area_mha       1.0026 3255476                                                                                     
C_forward         observed                           prevalence_2012_2024       0.0403 3255476                                                        precision of a random ranking

Figure

<Figure size 1600x1100 with 7 Axes>

What this shows (Colombia)

  • A — the training ratio sets the area, not the ranking. From a 50 % to a 1.6 % (landscape) regrowth share, the uncalibrated expected area falls from 3.99 to 0.24 Mha (17 times), while AUC stays at 0.92–0.95. After the prior shift to π all four models agree (0.19–0.24 Mha). This confirms Cloud’s first point in Colombia: the paper’s probability × area sums reflect the 50/50 training ratio.

  • B — paired sampling helps a little locally, and climate is not the issue here. Climate predictors carry only 15 % of the permutation importance in the global design (13 % paired); distance to forest dominates (57 %). Paired sampling raises specificity on non-regrowth within 3 km of regrowth from 0.842 to 0.904 (balanced accuracy 0.847 → 0.861) at a small cost on random points (0.887 → 0.879). Calibrated areas are unchanged (0.208 Mha both, isotonic); the plain prior shift under-estimates for the paired model (0.155), as Cloud predicts. 74 % of the top-5 % pixels are shared; the paired model moves priorities further into moist forests (biome 1: 80 % → 88 % of the top 5 %).

  • C — no gain for predicting future regrowth. Forward balanced accuracy 0.717 (global) vs 0.710 (paired), AUC 0.799 vs 0.794; precision of the top 1 % 0.307 vs 0.317 (random ranking 0.040). This is a weak test of pairing: with MapBiomas labels 82 % of non-regrowth points are already within 3 km of regrowth, so the two training samples differ little.

Our model is trained on Colombia only, which already removes most of the pantropical climate contrast that Cloud identifies in the paper’s global sample. The sampling design therefore matters much less here than in his Brazil analysis of the global model; the training-ratio effect on areas holds fully.