Nestedness Buffers Loss
Supplied working report; original verdicts not validated.
Review status: Needs review. This is an archival source note, not a passed proof.
README.md
# Nestedness Buffers Loss **Verdict: refuted** (posted hypothesis, Incoprea Research Vol. XVI #64). The quantity the claim is built on — nestedness relative to connectance — is the quantity it asks us to test, and it predicts nothing here: the ratio correlates ρ = 0.017 with robustness (permutation p = 0.77, R² = 0.0004) across 295 plant–pollinator networks. Nestedness adds 0.6 % of variance once log richness and connectance are in the model (ΔR² = 0.006, permutation p = 0.19) and its coefficient there is *negative*, while connectance adds 54.7 % (ΔR² = 0.547, p < 0.0001). The claim is not wholly wrong, and the half that survives is worth stating precisely. Net of richness alone, nestedness is positively associated with robustness (partial r = 0.47, 95 % CI 0.37–0.57), which is the pattern the proposal describes. That association is a stand-in for connectance: NODF and connectance correlate at ρ = 0.71, and once connectance is controlled the nestedness association collapses to r = −0.13. So nestedness is associated with robustness in this compilation, but it is not separable from connectance, and the *ratio* of the two carries no signal at all — which is the opposite of what the mechanism requires. --- ## The proposal, and the criteria fixed before the analysis > **Claim.** "The robustness of a pollination network to species loss is set by its > nestedness relative to its connectance, not by species richness." > **Mechanism.** "Nested networks let specialists depend on generalists that persist; > the ratio of nestedness to connectance sets how much redundancy remains after losses." > **Prediction.** "Robustness should track the ratio." > **Refute criterion.** "Robustness tracking richness would remove the structure." `hypothesis.md` fixed three criteria before any nestedness or robustness value was computed: **S1** the ratio tracks robustness at least as strongly as log richness; **S2** NODF adds ΔR² ≥ 0.05 beyond log richness and connectance; **S3** the partial correlation of robustness with NODF given log richness is positive with a 95 % bootstrap CI excluding zero. Supported required all three; partly supported required S2 or S3 on a lower bar (ΔR² ≥ 0.02 with positive partial r); refuted was defined as ΔR² < 0.02, or partial r ≤ 0, or a richness-only model within 0.02 of the full model. Only S3 passes (`verdict.S3_partial_positive.pass`); S2 fails by an order of magnitude, and S1 fails on both of its comparisons — |ρ| = 0.017 for the ratio against 0.327 for log richness, and R² = 0.0004 against 0.073 (`verdict.S1_ratio_beats_richness`, `S1_comparison.ratio_r2_minus_logS_r2` = −0.072). The pre-specified refute rule fires on ΔR² < 0.02, so the verdict is **refuted** (`verdict.level`) even though S3 passes; section 6 sets out what does survive. ## Data Thébault & Fontaine (2022), *A database of plant-pollinator networks*, Zenodo `10.5281/zenodo.6630184`, CC-BY-4.0 (see `SOURCE.md` for URLs, sha256 and licence). The file has 87,385 interaction rows across 435 local networks and 185 aggregated networks (`data.rows_total`, `data.networks_total_local`, `data.networks_total_aggregated`). Its actual columns are taxonomic ranks plus an `identification_tot` flag, not the single plant/pollinator name columns the task description anticipated, so binomials were rebuilt as `genus + " " + species`. Rows flagged `identification_tot = "ok"` — both partners described at species level — were kept (61,060 rows) and the 26,325 `n.i.` rows (morphospecies, genus-level taxa) dropped, with duplicate plant–pollinator pairs collapsed (116). Networks were then kept if they had at least 10 plant and 10 pollinator species: **295 kept, 140 dropped** — 56 for too few plants only, 13 for too few pollinators only, 71 for both (`data.networks_kept`, `data.networks_dropped`, `data.dropped_lt10_plants_only`, `data.dropped_lt10_pollinators_only`, `data.dropped_lt10_both`). The analysed set contains 57,804 links (`data.links_kept`), median 55 species (range 21–1,852; `overview.n_species.median`, `.min`, `.max`), median connectance 0.123 (`overview.connectance.median`), median NODF 35.8 (`overview.nodf.median`). The local network is the unit; aggregated networks are a sensitivity re-run, not the primary analysis. ## Design Per network: a binary plant × pollinator matrix; richness, connectance, NODF (Almeida-Neto et al. 2008, pooled over row and column pairs with the ≥ 2 marginal-fill rule; validated against a literal implementation and against a perfectly nested matrix, which returns 100); and robustness by co-extinction simulation with 1,000 random removal orders, seed 20261030, both directions. Robustness is the area under the survival curve (AUC, x = fraction of primary species removed) and R50, the fraction of primary removals needed to eliminate half the secondary species. The primary response is the mean of the two directions; the simulation was checked to reproduce a brute-force step-by-step implementation exactly. Robustness averages 0.582 (sd 0.025; `overview.auc_mean.mean`, `.sd`), plants-first 0.585 and pollinators-first 0.580 (`overview.auc_plants_first.mean`, `overview.auc_pollinators_first.mean`); the two directions correlate at ρ = 0.59 and differ by 0.020 on average (`overview.direction_agreement.spearman_auc_directions`, `.mean_abs_direction_difference`). Mean R50 is 0.753 (`overview.r50_mean.mean`). Inferential p-values are permutation p-values (10,000 permutations, seed 20261030) unless a parametric F p is named explicitly; confirmatory tests form one family of seven, Benjamini–Hochberg adjusted, declared in `hypothesis.md`. ## Results ### 1. The ratio carries no signal Robustness against NODF/connectance (median ratio 2.85, range 0.94–9.14; `ratio_test.ratio_describe`) gives Spearman ρ = 0.017, permutation p = 0.77, and a single-predictor R² of 0.0004 (`ratio_test.single_predictor.ratio_NODF_over_C`). The proposal's own prediction fails at the first hurdle: there is no monotone association to explain. Net of log richness the ratio is if anything *negatively* associated with robustness (partial r = −0.31, 95 % CI −0.40 to −0.22; `primary.partial.ratio_given_logS`). Every simpler predictor beats it (`ratio_test.single_predictor`): connectance R² = 0.162, NODF R² = 0.124, log richness R² = 0.073, against the ratio's 0.0004. By the claim's own refute criterion, richness does not "remove the structure" — richness is positively associated with robustness (ρ = 0.327, `ratio_test.single_predictor.logS`) and so is nestedness (ρ = 0.344, `.NODF`) — but the ratio of nestedness to connectance is the weakest of the four, not the strongest. ### 2. Variance partitioning: connectance does the work Nested OLS on the 295 networks, response = mean-direction AUC (`primary.models`): | model | R² | adjusted R² | |---|---|---| | log richness | 0.073 | 0.070 | | + connectance | 0.620 | 0.617 | | + NODF | 0.626 | 0.622 | Connectance adds ΔR² = 0.547 (F = 418.8, p = 2.8 × 10⁻⁵⁸; permutation p < 0.0001; `primary.delta_r2.connectance_given_logS`). NODF then adds ΔR² = 0.006 (`primary.delta_r2.nodf_given_logS_connectance.delta_r2`), which is 1.6 % of the variance left over once connectance is in (`primary.delta_r2.nodf_given_logS_connectance.share_of_residual_variance`) and fails the 0.05 bar by an order of magnitude. Both permutation p-values for that increment are reported (`notes` in `results.json` explain the two nulls): permuting the response gives p = 0.19, while permuting residuals — the same test as the partial correlation, quoted below as a two-sided p = 0.030 — is nominally significant with a *negative* sign. A nominally significant negative coefficient is not support for a mechanism that predicts a positive one. Lindeman–Merenda–Gold shares of the 0.626 total (`primary.lmg.pct_of_r2`): log richness 44.5 %, connectance 42.8 %, NODF 12.7 %. Nestedness is not negligible in that decomposition, but its 12.7 % is mostly variance it shares with connectance: entered last, it adds 0.6 %. The fitted model (`primary.coefficients_M2`) makes the same point in interpretable units: log richness β = +0.035 (t = 18.8), connectance β = +0.480 (t = 16.4), NODF β = −0.0002 (t = −2.2, p = 0.031). Larger and more connected networks are more robust; more nested ones, at fixed size and connectance, are marginally *less* robust. ### 3. Nestedness net of size, and net of connectance NODF is itself size-dependent: regressing NODF on log richness leaves R² = 0.094 (`residual_nodf.r2_nodf_on_logS`), and the raw Spearman of NODF with log richness is −0.251 (`overview.predictor_correlations.spearman_logS_NODF`). The decisive check asked whether residual NODF — nestedness net of size — still predicts robustness. It does: ρ = 0.447 (`residual_nodf.spearman_robustness_residualNODF`), equivalently a partial correlation of 0.474 (95 % CI 0.375–0.568; `residual_nodf.pearson_residual_robustness_residualNODF`). On its own that is the proposal's best evidence, and it is why S3 passes. It does not survive the second control. NODF and connectance correlate at ρ = 0.715 (`overview.predictor_correlations.spearman_connectance_NODF`), and the partial correlation of robustness with NODF given *both* log richness and connectance is −0.126 (95 % CI −0.235 to −0.008, p = 0.030; `primary.partial.nodf_given_logS_connectance`). The positive nestedness association is carried by connectance; what remains of nestedness, once connectance is held fixed, is a slight negative. ### 4. Confirmatory family Seven pre-specified tests, Benjamini–Hochberg within the family (`confirmatory_family`): | id | test | statistic | p | q | |---|---|---|---|---| | C1 | ΔR² connectance \| log S | +0.547 | < 0.0001 | 0.0002 | | C2 | ΔR² NODF \| log S, connectance | +0.006 | 0.188 | 0.219 | | C3 | partial r(robustness, connectance \| log S) | +0.768 | < 0.0001 | 0.0002 | | C4 | partial r(robustness, NODF \| log S) | +0.474 | < 0.0001 | 0.0002 | | C5 | partial r(robustness, NODF \| log S, connectance) | −0.126 | 0.030 | 0.042 | | C6 | Spearman(robustness, NODF/connectance) | +0.017 | 0.773 | 0.773 | | C7 | Spearman(robustness, residual NODF \| log S) | +0.447 | < 0.0001 | 0.0002 | The two tests that support the claim's *direction* (C4, C7) are significant; the two that test its *distinctiveness* (C2, C5) are not supportive — C2 non-significant, C5 significant in the wrong direction — and the test of its central quantity (C6) is null. ### 5. Sensitivity: the verdict does not move - **200 vs 1,000 removal orders** (`sensitivity.SA1_200_orders`): the largest change in any network's AUC is 0.0082, mean 0.0017, and the two estimates correlate at ρ = 0.994. ΔR² for NODF is 0.0061 — unchanged. - **Excluding networks with more than 500 species** (`sensitivity.SA2_exclude_gt500`, n = 292, 3 networks dropped): ΔR² for NODF is 0.0061. - **R50 instead of AUC** (`sensitivity.SA3_R50`): the strongest version of the nestedness story. R² goes 0.122 → 0.713 → 0.727, so NODF adds ΔR² = 0.014 (permutation p = 0.042) — nominally significant, still below the 0.02 partial-support bar, and the sign of the NODF coefficient net of both controls stays negative (partial r = −0.223). - **Aggregated networks instead of local ones** (`sensitivity.SA4_aggregated`, n = 157): R² goes 0.001 → 0.524 → 0.533; ΔR² for NODF is 0.009 (p = 0.23). All four re-runs return the same verdict (`sensitivity.*.verdict_level`), so the result is not an artefact of simulation effort, of the three giant networks, of the robustness index, or of merging sites. ### 6. What survives Half of the claim survives, and it is the half about nestedness, not about the ratio. Nestedness is positively associated with robustness in this compilation (C4, C7), which is consistent with the mechanism the proposal sketches — specialists resting on generalists that persist. What does not survive is the specific and testable part: that nestedness *relative to* connectance is the quantity that sets robustness (C6 is null), and that nestedness is distinguishable from connectance at all (C2, C5). In the LMG decomposition of the 0.626 full-model R², richness and connectance take near-equal shares (44.5 % and 42.8 %) with nestedness at 12.7 % (`primary.lmg.pct_of_r2`) — but that nestedness share is the variance it holds in common with connectance, since its increment when added last is 0.6 %, with a negative coefficient. The incremental order and the LMG order therefore disagree, and the disagreement is the finding: size and connectance are the quantities that carry robustness, and they are entangled with each other (ρ = −0.65 between log richness and connectance, `overview.predictor_correlations.spearman_logS_connectance`) in a way that leaves little room for a separable nestedness effect. ## Figures - `figures/fig1_robustness_vs_nodf.png` — robustness against NODF, points coloured by richness tercile with within-tercile fits. The association is positive inside every tercile (ρ = 0.54, 0.46 and 0.30 from the smallest to the largest tercile; `overview.tercile_fits`), and richer terciles sit higher at any given NODF (intercepts 0.533, 0.559, 0.567). Nestedness and richness therefore both shift robustness, which is the confound the claim denies. The slopes are not homogeneous — the low-richness tercile is steepest at 0.00103 per NODF point, 1.45 times the high-richness tercile (`overview.tercile_fits.slope_ratio_low_over_high`) — but these are bivariate fits, with connectance uncontrolled within each tercile. - `figures/fig2_variance_partition.png` — left, cumulative R² at each model step with the increment annotated; right, the three partial correlations with 95 % bootstrap CIs. ## What this test cannot see These are presence/absence matrices built from presence records, so sampling effort, abundance, interaction frequency and forbidden links are all discarded; robustness is a property of the recorded graph, not of the community that produced it. The co-extinction model is topological and assumes random removal orders and that a species dies when its last recorded partner dies — no rewiring, no abundance refuge, no spatial rescue — and the AUC index is compressed towards 0.5 for large networks because the final primary removal always eliminates the remaining secondaries, which is why R50 is reported alongside it. NODF is sensitive to matrix fill and shape, so residualising on log richness removes only the linear component of size, and the correlation between NODF and connectance (ρ = 0.71) means the two cannot be cleanly separated in a sample like this: the negative partial coefficient for NODF at fixed connectance may be collinearity rather than a real effect. The compilation is a convenience sample of published studies with heterogeneous methods and uneven taxonomic and geographic coverage, so nothing here generalises to pollination networks at large, and nothing here is causal. ## Reproducing ``` MPLCONFIGDIR=[local provenance path] \ [local provenance path] run.py ``` This regenerates `results.json`, `data/network_table.csv`, `data/network_table_aggreg.csv` and both figures from `data/raw/` in a couple of minutes on this machine (numpy 2.5.4, scipy 1.18.1, pandas 3.1.0, matplotlib 3.11.2; `meta.versions`, `meta.runtime_seconds`). Every number quoted above is stored in `results.json` under the key named beside it; `network_table.csv` holds one row per local network, all 435 of them, including the 140 excluded ones with their exclusion reason. ## Disclosure Designed and executed with AI assistance (DeepSeek via its coding agent). Not peer reviewed. The hypothesis is quoted from a published blog post that proposed it without testing it; this test was built against the proposal's own stated prediction.
hypothesis.md
# Nestedness Buffers Loss — pre-specified test
**Posted:** Incoprea Research, Volume XVI #64, 30 October 2026.
`https://incoprea.com/research-library/original-theories-vol16-20261030/`
**Status of the proposal:** posted untested.
## The proposal, verbatim
> **Claim.** "The robustness of a pollination network to species loss is set by its
> nestedness relative to its connectance, not by species richness."
> **Mechanism.** "Nested networks let specialists depend on generalists that persist;
> the ratio of nestedness to connectance sets how much redundancy remains after losses."
> **Prediction.** "Robustness should track the ratio."
> **Refute criterion.** "Robustness tracking richness would remove the structure."
## What the claim would have to look like in data
Three separable assertions, tested in this order:
1. **S1 — structure beats size on the ratio's own terms.** Robustness tracks the ratio
NODF/connectance at least as strongly as it tracks log total richness
(|Spearman| comparison, and single-predictor R²).
2. **S2 — nestedness carries variance that richness does not.** NODF adds a
pre-specified minimum of **ΔR² ≥ 0.05** to a model that already contains
log total richness *and* connectance.
3. **S3 — the nestedness association is positive once size is controlled.** The
partial correlation of robustness with NODF given log richness is **> 0**, with a
95% percentile bootstrap CI (10,000 resamples) excluding zero.
**Supported** = S1 ∧ S2 ∧ S3.
**Partly supported** = S2 or S3 holds (ΔR² ≥ 0.02 and partial r > 0) but S1 fails —
i.e. nestedness is a real but secondary correlate, and richness explains more.
**Refuted** = ΔR²(NODF | log richness, connectance) < 0.02, or partial r ≤ 0, or
richness alone explains robustness as well as the full structure model. The posted
refute criterion ("robustness tracking richness would remove the structure") is
operationalised as the last clause: a richness-only model with R² ≥ the
richness+connectance+NODF model's R² minus 0.02.
The three criteria are fixed here, before any nestedness or robustness value has been
computed. Only the data schema has been inspected at this point.
## Data and unit of analysis
Thebault & Fontaine (2022), *A database of plant-pollinator networks*, Zenodo
`10.5281/zenodo.6630184`, file `network interaction data.txt` (CC-BY-4.0).
87,385 rows; 11 columns; 435 local networks (`id_network`) nested in 185 aggregated
networks (`id_network_aggreg`).
Inspected schema (not assumed): `id_network`, `id_network_aggreg`,
`pollinatororder`, `pollinatorfamily`, `pollinatorgenus`, `pollinatorspecies`,
`plantorder`, `plantfamily`, `plantgenus`, `plantspecies`, `identification_tot`.
Binomials are reconstructed as `genus + " " + species`; the file carries no
pre-joined plant or pollinator name column.
**Unit:** the local network `id_network`. These are observed networks at one site, the
unit to which "a pollination network" in the claim most plausibly refers. The
aggregated networks (`id_network_aggreg`, 157 of 185 large enough) are used as a
sensitivity re-run (SA4), not as the primary unit.
**Inclusion rule (fixed now):**
- keep only rows with `identification_tot == "ok"`, the database's own flag that both
partners are described at species level (61,060 of 87,385 rows). Rows flagged `n.i.`
mix morphospecies and unresolved taxa and cannot support a named-species matrix;
- collapse duplicate plant-pollinator pairs within a network (116 duplicates among the
`ok` rows);
- keep networks with **≥ 10 plant species and ≥ 10 pollinator species** after those
steps.
Expected: 295 of 435 networks kept, 140 dropped for being smaller than 10 on one side.
The exact counts, and the reason for each exclusion, are written to `results.json`
and to `data/network_table.csv`.
## Quantities
Per network, from the binary plant × pollinator matrix `B` (`B[i,j] = 1` if plant *i*
and pollinator *j* were recorded interacting):
- **Richness:** `P` plants, `A` pollinators, `S = P + A`. Models use `log(S)`.
- **Connectance:** `C = links / (P·A)`.
- **NODF:** Almeida-Neto et al. (2008) *Oecologia* 156:657. Rows and columns are
ordered by decreasing marginal total. For every pair of rows whose smaller marginal
total is ≥ 2, the pairwise term is `N_ij / min(N_i, N_j)` where `N_ij` is the number
of columns shared. Columns are treated identically on the transposed matrix. The
reported `nodf` is the pooled ratio
`100 · (Σ row terms + Σ column terms) / (n_row pairs + n_col pairs)`,
which is the standard metric; `nodf_row` and `nodf_col` are reported separately.
NODF is bounded by 100.
- **Robustness:** co-extinction simulation, Memmott-style. One direction at a time.
Primary species are removed one at a time in a random order; a secondary species
goes extinct when its last partner has been removed. With `k` primaries removed,
`S_k = (primaries remaining + secondaries remaining) / (P + A)`.
**AUC** = ∫₀¹ S d(k/P), trapezoid, so 1 = no secondary extinction ever and 0 = every
secondary is lost with the first removal. **R50** = the fraction `k*/P` of primary
species whose removal drives cumulative secondary extinctions to ≥ 50 % of the
secondary pool. Larger AUC and larger R50 both mean more robust.
Both directions are run (plants first, pollinators first) with **1,000 random removal
orders**, seed **20261030**. The primary response is the mean of the two directions;
both are also reported separately.
## Primary test (pre-specified)
Nested OLS on the 295 networks, response = mean-direction AUC:
| model | terms |
|---|---|
| M0 | log S |
| M1 | log S + C |
| M2 | log S + C + NODF |
Report R² for each, ΔR² for each step, the partial correlation of AUC with C and with
NODF controlling log S (and with NODF controlling log S and C), and Lindeman–
Merenda–Gold relative-importance shares for the three predictors. Permutation p-values
(10,000 permutations of the response, seed 20261030) for each ΔR², plus the standard
F-test p.
**Multiplicity family (declared once, BH within it, no second correction):** the seven
confirmatory p-values —
(i) ΔR² for C | log S; (ii) ΔR² for NODF | log S, C; (iii) partial r(AUC, C | log S);
(iv) partial r(AUC, NODF | log S); (v) partial r(AUC, NODF | log S, C);
(vi) Spearman(AUC, NODF/C); (vii) Spearman(AUC, residual NODF after log S).
Sensitivity analyses are reported unadjusted and are not part of this family.
## Decisive secondary check (pre-specified)
NODF and connectance both co-vary with richness, so the raw partial correlation is not
decisive. Regress NODF on log S by OLS and take the residual — nestedness net of size.
Test (a) Spearman(AUC, residual NODF) and (b) the partial correlation of AUC with
residual NODF controlling log S (equivalently, Spearman of the two residuals). If
nestedness survives this, S3 is met on the strictest reading. No label permutation of
networks is used: permuting network labels destroys the plant-pollinator structure
inside each matrix and so cannot test whether structure predicts robustness.
## Sensitivity re-analyses (all pre-specified, verdict re-evaluated for each)
- **SA1 — fewer removal orders:** 200 orders instead of 1,000. Report the maximum
absolute AUC difference; the verdict should not depend on simulation effort.
- **SA2 — remove the giants:** exclude networks with `S > 500` (3 networks, the largest
1,852 species). Re-run the primary partition.
- **SA3 — R50 instead of AUC:** repeat the primary partition with mean-direction R50.
- **SA4 — aggregated networks:** repeat the primary partition on `id_network_aggreg`
(157 networks) instead of local networks.
The verdict is reported as "moved" or "did not move" for each.
## Figures
- **fig1** — mean-direction robustness against NODF, points coloured by richness
tercile, with a fitted line per tercile and the pooled line.
- **fig2** — two panels: variance explained at each model step (bars, with ΔR²
annotated) and the three partial correlations with bootstrap CIs.
## What this design cannot see
Named-species matrices from presence records; sampling effort, abundance and
interaction frequency are dropped, so a network is a binary object and robustness is a
property of that binary graph, not of the community. Robustness here is a topological
co-extinction model with random removal orders, not an observed extinction sequence;
it assumes a species dies when its last recorded partner dies and ignores rewiring,
abundance, forbidden links and spatial rescue. NODF is sensitive to matrix fill and
shape, so a residual-NODF analysis removes the linear component of size only. The
networks are a convenience compilation of published studies with heterogeneous sampling
methods and uneven geographic and taxonomic coverage; they are not a random sample of
the world's pollination networks, so nothing here generalises beyond "in this
compilation".
## Disclosure
Designed and executed with AI assistance (DeepSeek via its coding agent). Not peer
reviewed.