Bundle review table

Test 04 — Eutrophication is a switch (H264)

Supplied working report; original verdicts not validated.

Review status: Needs review. This is an archival source note, not a passed proof.

README.md

# Test 04 — Eutrophication is a switch (H264)

The claim is quoted verbatim in `hypothesis.md`, where the support/refute
criteria were fixed before any model was fitted.

## Result

**The evidence is split: one survey shows a threshold, the other shows none, and
the second prediction fails outright.** Two EPA National Lakes
Assessment surveys — 2007 (n = 1,035 lakes) and 2017 (n = 1,097) — were each
asked whether the chlorophyll–phosphorus relation bends at a threshold.

In 2007 it does not. A smooth quadratic describes the relation as well as a
two-regime hinge: ΔBIC = BIC(quadratic) − BIC(hinge) = **+1.5**, and the version
with a genuine jump is 2.7 BIC units *worse* than the quadratic. That is a
refutation: the best breakpoint sits at 99 µg/L total phosphorus (95 % bootstrap
CI 73–254), but it buys nothing.

In 2017 the hinge wins: ΔBIC = **+18.5** against the quadratic and +13.5 against
the jump model, breakpoint 145 µg/L (CI 74–255). Because the upper confidence
limit grazes the search window edge, the rule returns
**indeterminate**; against the brief's looser wording — ΔBIC > 6 with a CI inside
the observed range — 2017 would count as supportive. The two surveys disagree;
that is the result.

The bimodality prediction is refuted in both. The bimodality coefficient of the
hinge residuals is 0.266 in 2007 and 0.297 in 2017 against a normal null centred
on 0.337 (p = 1.000 and 0.990; Benjamini–Hochberg q = 1.000). Both residual
distributions are *less* bimodal than a normal draw. Two coexisting algal states
at fixed phosphorus are not visible.

P3, the hysteresis prediction, is **not tested — data not assembled**.

## Design

Phosphorus and chlorophyll-a came from the NLA 2007 archive (`PTL`, `CHLA`) and
the 2017 site/visit file the population estimates are computed from
(`PTL_RESULT`, `CHLA_RESULT`). Every field was located in the supplied metadata
first; the discovery is in `SOURCE.md`. One row per lake: primary sample, first
visit, both analytes positive, below-detection rows dropped rather than
substituted (117 in 2007).

Four models, least squares on log10–log10: M0 linear, M1 quadratic, M2 continuous
hinge with free τ (grid search, then refinement), M3 hinge plus jump. Sign
conventions, the τ window and the identifiability gate were fixed first.

## P1 in detail

The decisive comparison is against the quadratic, not the linear model: curvature
alone produces a bend a hinge will mimic. In 2007 the quadratic absorbs the
curvature almost entirely; in 2017 it does not, and the hinge flattens above
roughly 145 µg/L while the quadratic keeps climbing.

The reason for "indeterminate" in 2017: the rule also required the CI on τ to be
interior to the search window. It is not — the upper limit (2.407 in
log10) exceeds the window's top edge (2.394) by 0.012, 2 % of the interval
width. On a 5–95 % window the interval becomes interior but shifts upward, the
signature of a bound limited by the window, not the data. Existence of the kink
is supported; a location above 255 µg/L is not excluded.

## P2 in detail

The test is a Monte-Carlo comparison of the observed coefficient against 1,000
normal draws. The largest-gap statistic agrees (p = 0.379 in 2007, 0.178 in
2017). One clause of P2 survives post hoc: scatter really is larger above the
breakpoint, residual SD 0.602 against 0.365 in 2007 and 0.573 against 0.376 in
2017, permutation p = 0.0002. Heteroscedasticity is not bimodality.

## P3 — not tested, data not assembled

The Water Quality Portal was queried for lakes only in two lake-rich states.
Minnesota returned 342,181 phosphorus results and 14,286 chlorophyll results —
1,882 paired site-years at 553 station IDs, of which only **24** reach 15 paired
years. Wisconsin returned 139,984 and 21,695, giving 473 paired site-years, 244
stations and **5** with 15 years. A national panel needs gigabytes and
would still be dominated by a few intensively monitored waterbodies. It cannot
carry the pre-specified test, and a weaker stand-in is forbidden, so P3 is
dropped.

## Depth, and what would change the answer

Depth moves the breakpoint monotonically: 218 µg/L in lakes shallower than 4 m
(n = 402), 81 µg/L at 4–10 m (n = 378), 58 µg/L at 10 m or more (n = 254).
Within the two deeper classes the hinge also beats the quadratic (ΔBIC +7.4 and
+8.8); in shallow lakes it loses (−1.3). A threshold that tracks depth fits a
depth-confounded smooth relation better than a universal switch.

The 2007 refutation is not robust. Substituting RL/√2 for below-detection values
instead of dropping them moves ΔBIC from 1.5 to 18.7; weighting by the design
weight — which also drops the 98 hand-picked reference lakes — moves it to 41.5;
keeping repeat visits moves it to −4.1. The first is a known artefact, 117 values
stacked at one artificial concentration; the second changes both weighting and
sample. The 2017 result is steadier (8.3 weighted, 14.5 probability sites only,
20.4 all visits).

## What this test cannot see

A single sampling of a lake cannot observe a shift or its irreversibility. P1 and
P2 test a signature the claim implies, not its mechanism. Nor is τ inference
regular: a grid search inflates the apparent evidence for a change point against
a χ² benchmark, hence the stricter gate. Nitrogen, colour,
turbidity and mixing regime are uncontrolled beyond depth.

*Designed and executed with AI assistance (DeepSeek); not peer reviewed.
Observational data: associations only.*

hypothesis.md

# Hypothesis 264 — Eutrophication is a switch

## The claim, verbatim

> "A lake shifts abruptly to algal dominance above a phosphorus threshold, and
> returning to the same phosphorus concentration does not reverse the shift."

Published at https://incoprea.com/research-library/original-theories-vol16-20261030/
(Original Theories, Volume XVI, 30 October 2026), hypothesis H264.

## The three predictions

- **P1** — the chlorophyll-a to total-phosphorus relation is better described by
  a two-regime (change-point) model than by a smooth monotone curve.
- **P2** — above the breakpoint the scatter of chlorophyll at fixed phosphorus is
  larger, i.e. two algal states coexist (bimodality conditional on phosphorus).
- **P3** — *(only if long-term paired series are actually obtainable)* the
  descending branch sits above the ascending branch at matched phosphorus.

P3 is conditional in the brief itself. It will be attempted and, if the data
cannot be assembled, dropped explicitly and labelled "not tested — data not
assembled". No weaker substitute will be run in its place.

## What was inspected before this file was written

Only the shape of the data, never a model fit. Specifically: the zip contents of
the NLA 2007 archive; the field names, units and flag semantics in the two
metadata `.txt` files; the counts of missing and below-detection values; the
number of sites with both TP and CHLA; the observed ranges of TP (5–4,679 µg/L),
CHLA (0.108–936 µg/L) and maximum depth (0.5–97 m); and the Pearson correlation
of log TP with log CHLA (r = 0.67). No change-point model, ΔBIC, tau estimate or
bimodality statistic had been computed when the criteria below were fixed.

## Data and sample

Two independent survey basins, analysed separately and never pooled:

- **2007** — EPA National Lakes Assessment 2007, `nla2007_alldata.zip`:
  `NLA2007_WaterQuality_20091123.csv` (chemistry and chlorophyll on one row per
  site-visit) joined to `NLA2007_SampledLakeInformation_20091113.csv` (maximum
  depth, site type, design weight) on `SITE_ID` + `VISIT_NO`.
  Fields: `PTL` = total phosphorus (µg/L); `CHLA` = chlorophyll-a (µg/L);
  `DEPTHMAX` = maximum observed lake depth (m).
- **2017** — EPA NLA 2017 report data files,
  `nla2017_all_sites-visits_data_for_population_estimates_220705_0.csv`.
  Fields: `PTL_RESULT` = total phosphorus (µg/L); `CHLA_RESULT` =
  chlorophyll-a (µg/L). This is the site/visit-level file that the population
  estimates are computed *from*; it carries `WGT_TP`, the design weight.

**Inclusion rule (fixed in advance).** One row per lake: `SAMPLE_CATEGORY == 'P'`
(primary sample, field duplicates excluded), `VISIT_NO == 1` (repeat visits
excluded), both TP and CHLA present and strictly positive.

**Below-detection rule (fixed in advance).** A value is treated as
below detection when the file flags it, and only then: for 2007,
`PTL_FLAG == '<RL (4)'` or `PTL_RL_ALERT == 'Y'`, or `CHLA_RL_ALERT == 'Y'` or
`FLAG_LAB_CHLA == 'B'`; for 2017, `PTL_NARS_FLAG` or `CHLA_NARS_FLAG` equal to
`ND`. Flagged rows are **dropped**, not substituted, because a change-point
estimate at the low end of the phosphorus range is exactly what a substitution
rule would distort. (A sensitivity re-run substitutes RL/√2 for flagged values;
it is labelled post-hoc.)

## Models (all on log10 scale, x = log10 TP, y = log10 CHLA)

| id | form | parameters counted in BIC |
|---|---|---|
| M0 | y = a + b·x | 2 + σ |
| M1 | y = a + b·x + c·x² | 3 + σ |
| M2 | continuous two-regime: y = a + b₁(x−τ) for x≤τ, a + b₂(x−τ) for x>τ | 4 + σ |
| M3 | two-regime with a jump: separate intercept **and** slope on each side | 5 + σ |

Fitted by ordinary least squares. For a fixed τ, M2 and M3 are linear in their
remaining parameters, so τ is found by a coarse grid of 240 interior values
followed by a fine refinement of 240 values inside the best coarse cell. **τ is
restricted to percentiles 10–90 of the observed x**, and every candidate must
leave at least 10 % of the observations on each side; a breakpoint outside the
central 80 % of the data is not identifiable from these data and pretending
otherwise would manufacture a spurious switch.

BIC = n·ln(RSS/n) + k·ln(n). **ΔBIC is reported as BIC(M1) − BIC(M_better-model),
so that a positive value favours the two-regime model.** (The brief's phrase
"Delta BIC(M2 or M3 vs M1) > 6" does not fix a sign; this file fixes it here,
before any model was fitted.)

## Pre-specified support / refute criteria

**P1 is SUPPORTED** if **both**:
1. max(ΔBIC₂₁, ΔBIC₃₁) > 6 in the same basin; and
2. the 95 % percentile bootstrap CI on τ (1,000 paired resamples of the
   observations, seed 20261030) satisfies **all** of:
   - a. its lower bound is strictly above the 10th-percentile grid edge and its
     upper bound strictly below the 90th-percentile grid edge (the estimate is
     not pinned at the search boundary);
   - b. its width is less than 50 % of the log10 TP range (the breakpoint is
     located, not merely bounded); and
   - c. the resample distribution places at least 90 % of its mass inside
     [percentile 10, percentile 90] of x.

**P1 is REFUTED** if ΔBIC₂₁ < 2 **and** ΔBIC₃₁ < 2 (the smooth quadratic is
within 2 BIC units of both two-regime models). Anything in between is reported
as "indeterminate".

**P2 is SUPPORTED** if the observed bimodality coefficient of the M2 residuals
exceeds the 1,000-draw normal null at p < 0.05. **P2 is REFUTED** if p > 0.10.

The bimodality coefficient is BC = (g₁² + 1) / (g₂ + 3(n−1)²/((n−2)(n−3))),
where g₁ is sample skewness and g₂ excess kurtosis; BC > 5/9 = 0.556 is the
conventional rule-of-thumb threshold for bimodality. The null distribution is
1,000 samples of size n drawn from a normal with the observed residual mean and
SD, seeded at 20261030; p = (#{BC_null ≥ BC_obs} + 1)/1001. A largest-gap
statistic (biggest gap between consecutive order statistics, in units of the
residual SD) is reported as a secondary statistic against the same null but is
**not** part of the decisive criterion.

**Correction family (declared here, once).** The only p-values entering the
decisive criteria are the two bimodality p-values — 2007 and 2017. Those two are
adjusted by Benjamini–Hochberg. No second correction is applied afterwards.
ΔBIC is a model-selection criterion, not a p-value, so it is not in a family.

**Basin agreement.** P1 and P2 are evaluated separately in 2007 and 2017 and the
result is reported as "both basins", "one basin" or "neither". No pooling. If the
two basins disagree, that disagreement is the result and is reported as such.

**P3.** Attempted via the Water Quality Portal for lakes with ≥ 15 years of
paired TP/CHLA. Pre-specified test if, and only if, a qualifying panel is
assembled: label each lake-year by whether TP rose or fell since the previous
sampled year, then fit log CHLA ~ log TP + direction with lake fixed effects and
test the direction coefficient by permuting direction labels within lake
(10,000 permutations, seeded). One-sided: descending years higher than ascending
years at matched TP. If the panel cannot be assembled, P3 is reported as
"not tested — data not assembled" and nothing else is substituted for it.

## Sensitivity analyses (declared here; each labelled post-hoc in the README)

- S1 below-detection values substituted at RL/√2 instead of dropped;
- S2 all site-visit rows kept (repeat visits and field duplicates included);
- S3 weighted least squares using the NLA design weight (`WGT`, 2007; `WGT_TP`,
  2017);
- S4 τ grid widened to percentiles 5–95;
- S5 depth stratification (design item 5): M2 refitted within shallow (< 4 m),
  medium (4–10 m) and deep (≥ 10 m) classes, and the three τ estimates compared.

## What this design cannot see

A cross-section of lakes measured once cannot distinguish a threshold in a
lake's *response* from a threshold in the *distribution of lakes across the
landscape*. It also cannot see time: the claim is about a shift and its
irreversibility, and neither is observable in a single survey. P1 and P2 are
therefore tests of a *signature* the claim implies, not of the claim's mechanism.
The known confounding — shallow, turbid, nitrogen-rich or coloured lakes sit off
the chlorophyll–phosphorus line for reasons unrelated to phosphorus — is not
controlled here beyond the depth stratification in S5.

Included code and results