Response diversity predicts stability — with the wrong sign
Supplied working report; original verdicts not validated.
Review status: Needs review. This is an archival source note, not a passed proof.
README.md
# Response diversity predicts stability — with the wrong sign **Verdict: not supported.** The posted claim says ecosystem stability is set by response diversity, the variation in how species react to the same environmental driver, and that species richness is a proxy which fails exactly when response diversity is low. In a pre-specified simulation of 8,000 communities, response diversity was the stronger predictor, but it predicted *lower* stability. The standardised coefficient on response diversity was −0.732 against +0.413 for log richness, a difference of −1.145 (95 per cent bootstrap interval −1.158 to −1.132; cell-level permutation p = 0.0002 for response diversity and p = 0.0564 for richness). Forcing sixteen species to share a single sensitivity *raised* stability by 4.166 units (interval −4.393 to −3.933 on the cost scale), while halving richness to eight species cost 0.275 units (0.123 to 0.423; sign-flip p = 5e-05). Adding eight species with identical responses raised stability by a relative 0.403, from 8.386 to 11.767. The same pattern appears under a bounded linear response, so the failure is not an artefact of the exponential form. All three predictions fail. Communities of S species (2, 4, 8, 16 and 32) had lognormal mean biomass, each species responding to a shared driver with sensitivity b_i drawn from a normal distribution whose standard deviation is RD (0, 0.25, 0.5 and 1.0). The driver was a unit-variance AR(1) process with autocorrelation 0.6; biomass was mean_i times exp(b_i d_t + noise), with species-specific noise of standard deviation 0.3. Stability was the mean over 500 steps of total biomass divided by its sample standard deviation, and each of the 20 cells contained 400 replicate communities. The posted design does not fix the mean sensitivity; it was set to zero, so RD = 0 describes a community that does not track the driver. The two predictors explain 0.707 of the variance in stability; response diversity alone accounts for a partial R-squared of 0.646, log richness for 0.368. Richness retains substantial predictive power after response diversity is included, which is the posted refutation condition, but the sharper failure is the sign: the coefficient on response diversity has the opposite sign to the one the insurance argument requires. The cell means show the pattern. At RD = 0 stability climbs steeply with richness, from 4.399 at two species to 16.399 at thirty-two. At RD = 1.0 it falls, from 1.532 to 0.624. In between the richness slope declines monotonically, and a model with an interaction term fits much better (interaction coefficient −4.616, p < 0.001). A single richness coefficient is therefore an average over a real interaction, and the claim that richness is a mere proxy is not supported: richness does structural work of its own. The mechanism explains the sign. Biomass is multiplicative, so each species contributes an exponential of its sensitivity times the driver, and the sum of exponentials is convex in the sensitivities: a community whose sensitivities differ has a more variable total than one whose sensitivities are equal. The realised weighted mean sensitivity also fluctuates more from community to community when sensitivities vary, and that fluctuation is larger relative to the mean when S is small. Response diversity stabilises only through negative covariance between species — asynchrony, opposite signs, offset phenology — which independent draws do not produce. Because the exponential form is the obvious objection, a bounded linear variant was added after the first run at a reviewer's request and is reported alongside it. With biomass = mean_i times max(1 + b_i d_t + noise, 0.05), the same parameters and decompositions give a standardised response-diversity coefficient of −0.489 and a richness coefficient of +0.709, with partial R-squared 0.480 and 0.661. Halving richness costs 2.207 stability units, forcing equal sensitivities costs −0.291 (a gain), and adding eight identical-response species raises stability by 0.394. The sign does not flip. The reason is that zero-mean sensitivities cancel in the *mean* aggregate response but not in its variance: with b_i drawn around zero, the variance of the sum of weighted sensitivities grows with RD squared, so a bounded linear response is variance-increasing in RD just as the exponential one is. The exponential form makes the penalty steeper (−0.732 against −0.489) through its convexity term, but it does not create the sign. Only 4.6 per cent of linear-model observations hit the positivity floor. The P2 decomposition separates the two operations. Dropping eight of sixteen species at random removes half the independent noise averaging and costs 0.275 stability units. Replacing all sixteen sensitivities by their mean keeps the coherent driver response but removes the convexity term, and stability rises by 4.166 units. P3 is also rejected: eight extra species with identical responses raise stability by 0.403 in relative terms, because their noise is independent. That is a portfolio effect, not response diversity. Doubling the noise raises the richness coefficient from 0.413 to 0.520. Sensitivity does not rescue the claim. With a white driver the response diversity coefficient is −0.736 and the richness coefficient 0.420; with AR(1) = 0.9 they are −0.720 and 0.439; with doubled noise −0.678 and 0.520; with balanced antagonistic signs ±RD they are −0.742 and 0.490. Giving every species a mean sensitivity of 0.5 moves the coefficients to −0.514 and −0.147: response diversity is still destabilising and richness changes sign. What this test cannot see matters. It is a simulation with one driver, no competition, no predation, no extinction, no observation error and no between-species correlation except that induced by the shared driver. It cannot speak to the posted P1 clause about existing datasets, and both response forms are variance-increasing in RD by construction, so this is a hard test of the posted operationalisation. A community in which competition generates negative covariances could stabilise with response diversity; this design does not contain that mechanism. The result is a statement about the posted model, not a verdict on the insurance hypothesis in general; no causal language is warranted. | Stability (mean/SD of total biomass), 400 communities per cell | RD 0 | RD 0.25 | RD 0.5 | RD 1.0 | |---|---|---|---|---| | S = 2 | 4.399 | 3.664 | 2.580 | 1.532 | | S = 4 | 6.056 | 4.870 | 3.107 | 1.284 | | S = 8 | 8.424 | 6.450 | 3.543 | 0.989 | | S = 16 | 11.703 | 8.402 | 3.844 | 0.816 | | S = 32 | 16.399 | 11.171 | 4.093 | 0.624 | *Table: exponential-model cell means, two decimal places, from `model_variants.exponential.cell_means` in `results.json`; the linear-model means are in `model_variants.bounded_linear.cell_means`, and the per-community table is `data.csv`.*
hypothesis.md
# Pre-specified hypothesis test — response diversity and stability
Written before `run.py` was executed (2026-10-30, America/Chicago). The design,
the noise convention, the estimator and the decision thresholds below were fixed
in advance. The result is reported in `README.md` whatever it is.
## Posted claim, verbatim
> Ecosystem stability is set by response diversity, the variation in how species
> react to the same environmental driver, rather than by species richness;
> richness is a proxy that fails exactly when response diversity is low.
Posted predictions:
- **P1** Response diversity should predict stability better than richness across
existing datasets, including those where richness failed.
- **P2** Removing response diversity at constant richness should reduce
stability as much as removing species.
- **P3** Adding species with identical responses should add no measurable
stability.
Posted refutation:
> If richness retains predictive power after response diversity is included, the
> proxy is doing real work and the theory is redundant.
## Simulation, frozen before running
Communities of `S` species, `S` in {2, 4, 8, 16, 32}. Each species has a mean
biomass drawn lognormal, `mean_i = exp(N(0, 0.5^2))`, and a sensitivity to the
shared environmental driver drawn `b_i ~ N(0, RD^2)` with `RD` in {0, 0.25, 0.5,
1.0}. The driver is a unit-variance AR(1) process with autocorrelation 0.6,
`d_t = 0.6 d_{t-1} + sqrt(1 - 0.6^2) e_t`, after a 200-step burn-in. Biomass is
```
B_it = mean_i * exp(b_i * d_t + eps_it), eps_it ~ N(0, 0.3^2) iid
```
and stability is the inverse coefficient of variation of total biomass over 500
steps, `mean_t(sum_i B_it) / sd_t(sum_i B_it)` with the sample SD (`ddof = 1`).
`T = 500`, `n = 400` replicate communities per cell, 20 cells, 8,000 simulated
communities. Seeds are fixed per cell (`seed = 20261030 + 97 * cell_index`), so
the run is exactly reproducible.
**Unspecified detail fixed here.** The posted design gives the SD of `b_i` but
not its mean; the neutral choice is mean zero, so `RD = 0` describes a community
that does not track the driver at all. The noise term is taken to be
species-specific and independent, the standard demographic-noise convention. Both
choices are varied in the sensitivity block (mean sensitivity 0.5; balanced
antagonistic signs; noise doubled), because either could in principle change the
sign of the response-diversity effect.
## Estimands and decision rule
**Regression.** OLS of stability on `ln S` and `RD` across the 8,000 communities.
Standardised coefficients are `beta_j * sd(x_j) / sd(y)`. Partial R-squared for a
predictor is `(R2_full - R2_reduced) / (1 - R2_reduced)`; the semipartial
`R2_full - R2_reduced` is also reported. "Substantial" richness partial R-squared
is fixed at **0.10** before the run.
**P2 decomposition.** Paired simulation at `S = 16`, `RD = 0.5`, 400 replicates,
with common random numbers. Arm (a) drops eight species at random, so richness
halves and the remaining sensitivities keep their spread. Arm (b) keeps all
sixteen species and sets every sensitivity to the replicate's mean sensitivity,
so richness is preserved and response diversity is removed. Costs are paired
differences from the same base community: `cost_species = base - arm_a`,
`cost_RD = base - arm_b`.
**P3 decomposition.** Paired simulation at `RD = 0`, 400 replicates: a sixteen-
species community with all sensitivities zero, and the same community restricted
to its first eight species. `gain_identical = stability_16 - stability_8`.
**Decisive comparison, pre-specified.** SUPPORTED if all of:
- **A.** `|beta_RD_std| > |beta_lnS_std|` **and** `beta_RD_std > 0` (the claimed
direction is that more response diversity means more stability);
- **B.** `cost_RD >= cost_species`, with a paired sign-flip permutation p < 0.05
for `cost_RD - cost_species < 0` against the one-sided alternative that
removing response diversity costs less;
- **C.** `gain_identical <= 0.05 * stability_8` (no measurable gain, "measurable"
fixed at 5 per cent relative);
- **D.** richness partial R-squared < 0.10.
If A, B and C hold but D fails, the verdict is **partially supported**, as
instructed by the posted design. Any other combination is **not supported**, and
the failing clause is named. A failed clause is reported as a failed clause, not
reinterpreted.
Inference: stratified permutation tests for the two standardised coefficients
(RD permuted within richness strata, `ln S` permuted within RD strata, 2,000
permutations), percentile bootstrap CIs over the 8,000 communities (4,000
resamples), and exact sign-flip permutation for the paired P2 contrast (20,000
sign flips). One family of three decisive p-values is declared and
Benjamini-Hochberg adjusted once.
## Sensitivity, listed before running
1. AR(1) = 0 (white driver).
2. AR(1) = 0.9.
3. Biomass noise doubled (`sd = 0.6`).
4. Mean sensitivity 0.5 rather than 0 (`b_i ~ N(0.5, RD^2)`), so that `RD = 0`
is a coherently tracking community.
5. Balanced antagonistic signs (`b_i = +/- RD`), the most favourable case for
covariance cancellation.
6. Regression with an `ln S x RD` interaction, to check that the two-predictor
coefficient comparison is not an artefact of misspecification.
Each sensitivity reports the two standardised coefficients and clause A. The
sensitivity runs use the same seeds and 400 replicates per cell.
## What this test cannot see
The design is a simulation, not a meta-analysis of existing datasets, so it
cannot speak to P1's "across existing datasets" clause. It has one driver, one
functional form (multiplicative exponential response), no species interactions,
no extinction, no demographic structure, and no observation error. A real
community can stabilise through negative covariances generated by competition,
predation, or phenological offset, none of which is present here. The
conclusion is about the stated generative model, not about ecology as a whole.
## Addendum, after the first run
A reviewer asked whether the negative response-diversity coefficient is an
artefact of the exponential response form `m_i exp(b_i d)`, which is dominated
by the most sensitive species when RD is large. A co-equal model variant was
therefore added after the first run and is reported alongside the exponential
model, not instead of it: `B_it = m_i max(1 + b_i d_t + eps_it, 0.05)`, the
bounded linear response of the classic portfolio argument, with the same
parameters, seeds and decompositions. The addendum was not used to change the
decision rule; the verdict is decided by the pre-specified rule applied to the
exponential baseline, and the linear result is reported as a robustness check on
the sign of the response-diversity coefficient. If the sign had flipped, the
README was to say that the result is model-dependent; it is reported either way.