Insolation Null Test — Does Berger Insolation Add Anything to L1+L2+L3?
TL;DR: we tested whether adding the classical Berger 1978 insolation features — obliquity ε(t), eccentricity e(t), and the climatic-precession products e·sin(ϖ) and e·cos(ϖ) — to the canonical climate formula (L1+L2+L3) improves R². Result for classical insolation: null. With the real orbital elements (La2010a on 0–500 kyr, La2004 over the full 5.3-Myr record) the added layer has no cross-window-stable gain in any LR04 regime — ΔR² = +0.00000 on LR04 0–500 kyr, +0.00001 on EPICA CO₂, and a maximum cross-validated +0.0051 anywhere in the record. Classical insolation features alone explain only R² = 0.0544 of post-MPT LR04 (vs L1 alone at R² = 0.870). With the model’s own H/3 eccentricity line in the features, the pre-registered statistic reads max ΔR² = +0.0297 in the pre-iNHG regime and survives cross-validation there (+0.0212) — Laskar’s e(t) does not reproduce it, so this is a sensitivity of the weakest-fit regime to a lattice-family line, recorded as an open L1-attribution item, not adopted as a layer. The 8H gravitational-coupling lattice already encodes the insolation-relevant variance.
Reproducibility: extract_insolation_features.js → milankovitch_insolation_extension.py → milankovitch_insolation_laskar_check.py → milankovitch_insolation_stability.py. Tracked outputs: insolation-extension-results.json, insolation-laskar-check-results.json, insolation-stability-results.json. Every number on this page is bound to those files.
Question
The canonical climate formula (Climate Formula) is C(t) = c₀ + L1(t) + L2(t) + L3(t), where L1 was, for this test, the pre-admission lattice of 32 integer divisors of 8H = 2,682,536 yr (the test’s own result led to admitting n = 24 as the 33rd; orbital-coupling lattice; J2000 anchor — the integer-divisor positions are invariant at any epoch but the literal year counts rescale at geological time, see Expanding Resonance), L2 is 3 carbon-thermostat lines (405 / 202 / 135 kyr), and L3 is 6 Heaviside step components (PETM, EOT, Mi-1, MMCT, iNHG, MPT).
Standard Milankovitch theory (Berger 1978) attributes climate variation to solar insolation, parameterised by three orbital elements — obliquity ε(t), eccentricity e(t), and longitude of perihelion ϖ(t) — combined as climatic-precession products e·sin(ϖ), e·cos(ϖ). So:
Can we improve R² by adding these four classical insolation features to L1+L2+L3?
If yes → adopt them as a 4th canonical layer (L_insol). If no → L1’s lattice integers already encode whatever insolation contributes.
Method
Step 1: extract insolation features at LR04 sample times using the model’s analytical functions (computeObliquityEarth, computeEccentricityEarth, calcEarthPerihelionPredictive from tools/lib/orbital-engine.js).
Step 2: for each regime (post-MPT, iNHG-MPT, pre-iNHG, lr04-full, EPICA CO₂):
- Fit canonical L1+L2+L3 → measure
r2_canon. - Standardise the 4 insolation features (zero-mean, unit-std).
- Fit L_insol to the L1+L2+L3 residual via ridge regression (λ = 0.01).
- Compute ΔR² = R²(L1+L2+L3+L_insol) − R²(L1+L2+L3).
Step 3: pre-registered decision rule:
| Max ΔR² across regimes | Verdict |
|---|---|
| > 0.02 | POSITIVE — adopt L_insol as canonical 4th layer |
| 0.005 – 0.02 | TENTATIVE — investigate cross-window stability before adopting |
| < 0.005 | NULL — L1 already captures insolation-driven variance |
Results
ΔR² when L_insol is added to L1+L2+L3
| Regime | Window (kyr) | L1+L2+L3 | + L_insol | ΔR² |
|---|---|---|---|---|
| post-MPT | 0–1000 | 0.8735 | 0.8774 | +0.0038 |
| iNHG-MPT | 1000–2700 | 0.7289 | 0.7358 | +0.0069 |
| pre-iNHG | 2700–5320 | 0.4298 | 0.4595 | +0.0297 |
| lr04-full | 0–5320 | 0.2553 | 0.2587 | +0.0035 |
| EPICA CO₂ | 0–800 | 0.8452 | 0.8491 | +0.0040 |
Max ΔR² = +0.0297 (pre-iNHG) — inside the pre-registered POSITIVE band, which is why the cross-window stability check below decides the verdict.
L_insol coefficients (post-MPT)
After standardising each feature, the regression coefficients on the canonical-residual:
| Coefficient | Value | Feature |
|---|---|---|
| γ ε−23.45° | −0.0182 | obliquity anomaly |
| γ e | +0.0150 | eccentricity |
| γ e·sin(ϖ) | +0.0487 | climatic precession (sin) |
| γ e·cos(ϖ) | −0.0361 | climatic precession (cos) |
All four coefficients are small (≤ 5% of normalised residual range); their combined contribution to post-MPT R² is +0.0038.
L1 alone vs Berger insolation alone
How much classical insolation explains on its own (no L1, no L2, no L3), pure 4-feature regression vs LR04:
| Regime | R²_L1 | R²_insol_only | L1 / insol ratio |
|---|---|---|---|
| post-MPT | 0.870 | 0.0544 | 16× |
| iNHG-MPT | 0.722 | 0.0105 | 69× |
| pre-iNHG | 0.381 | 0.0298 | 13× |
| lr04-full | 0.239 | 0.0035 | 68× |
The 8H gravitational-coupling lattice (L1) carries an order of magnitude or more explanatory power than the classical Berger insolation features at every LR04 time window tested.
Side-by-side with Laskar 2010 hardening
The model’s e(t) is a single H/3 line, e(t) = base′·(1 + cos θ₃/2), spanning 0.0078–0.0233 over the LR04 record, against Laskar’s multi-mode envelope 0.0002–0.0578. Substituting the real e(t) and ϖ(t) removes the gain rather than adding to it. On the 0–500 kyr La2010a window:
| Test | LR04 (0–500 kyr) | EPICA CO₂ (0–500 kyr) |
|---|---|---|
| L1+L2+L3 (canonical formula) | R² = 0.9424 | R² = 0.9230 |
| Berger insolation alone (model e/ϖ) | R² = 0.191 | R² = 0.118 |
| Berger insolation alone (Laskar e/ϖ) | R² = 0.293 | R² = 0.172 |
| L1+L2+L3 + Berger insolation (model) | R² = 0.9430 → ΔR² = +0.00062 | R² = 0.9245 → +0.00152 |
| L1+L2+L3 + Berger insolation (Laskar) | R² = 0.9424 → +0.00000 | R² = 0.9230 → +0.00001 |
Cross-window stability — La2004 over the full record
The pre-registered rule reserves adoption for gains that are stable across windows. The stability instrument applies that check per LR04 regime with two feature sets — the model’s own e(t), ϖ(t) and La2004’s e(t), ϖ(t) over the whole 5.3-Myr record (obliquity held to the model) — cross-validating the L_insol layer split-half (canonical baseline fitted on the full regime; L_insol coefficients fitted on one half, scored on the other, both directions):
| Regime | Window (kyr) | ΔR² model (in-sample) | ΔR² La2004 (in-sample) | CV ΔR² model | CV ΔR² La2004 |
|---|---|---|---|---|---|
| post-MPT | 0–1000 | +0.0038 | +0.0008 | +0.0032 | −0.0048 |
| iNHG-MPT | 1000–2700 | +0.0069 | +0.0010 | −0.0126 | −0.0134 |
| pre-iNHG | 2700–5320 | +0.0297 | +0.0046 | +0.0212 | −0.0274 |
| lr04-full | 0–5320 | +0.0035 | +0.0245 | −0.0094 | +0.0051 |
Three lines tell the story:
- The 8H lattice (L1) carries the variance. R² = 0.870 on post-MPT LR04 — the lattice alone, 32 sinusoids at fixed gravitational-rhythm frequencies.
- Classical insolation alone explains very little. R² = 0.0544 with the model’s e → R² = 0.293 with Laskar’s full-range e (0–500 kyr). Significant absolute, but a fraction of what L1 captures.
- Real orbital forcing never passes the stability bar. La2004’s one in-sample gain (lr04-full) collapses out of sample to +0.0051; the maximum cross-validated gain with the real elements anywhere is +0.0051, and on 0–500 kyr La2010a adds ΔR² = +0.00000 on LR04 and +0.00001 on EPICA. The lattice already contains all of it.
The one gain that survives cross-validation belongs to the model’s own e(t) in pre-iNHG (+0.0212, both halves positive). Because La2004’s e(t) does not reproduce it, it is not an insolation effect. A follow-up attribution identifies it as the single lattice line n = 24 (8H/24 = H/3, 111.8 kyr), which is not among L1’s 32 divisors (the list runs 22 → 25): a free-phase 8H/24 pair gives the identical cross-validated gain (+0.0144 vs e(t) alone +0.0144), e(t) adds nothing on top of it (+0.0000 in sample), the neighbouring lines n = 23.5 and 24.5 are negative out of sample (−0.0459, −0.0114), and the data’s phase agrees with the model’s fixed H/3 phase to −8.5° (2.7 kyr). Secular theory has no 112-kyr eccentricity line; H/3 is the model’s own prediction, and the pre-iNHG record carries it out of sample at the model’s phase.
Strict mathematical reading: the L1 frequencies (g_j ± g_k, k ± s_j beats at integer divisors of 8H) span the same linear subspace as Berger’s 4-feature decomposition. Once L1 is in the model, Berger features are linearly dependent on L1 features by construction — the empirical ΔR² = 0 result with Laskar substitution confirms this in data. This is not a coincidence; it is a theorem of secular theory expressed in regression form.
Verdict — null for classical insolation; a pre-iNHG sensitivity to the model’s own e(t)
Max ΔR² (model features) = <V k="insolExtMaxDeltaR2" /> pre-iNHG, in-sample → POSITIVE band
Cross-validated, same regime, model features = <V k="insolStabModelCvPreInhg" /> (stable)
Cross-validated, same regime, La2004 features = <V k="insolStabLaskarCvPreInhg" /> (no gain)
Every other regime, cross-validated, either set ≤ +0.005With the real orbital elements, L1’s integer-divisor lattice already encodes the variance that classical Berger insolation features provide — no cross-window-stable gain in any regime. The canonical formula C(t) = c₀ + L1(t) + L2(t) + L3(t) stands; no 4th canonical layer is adopted. The pre-iNHG gain that the model’s single-line e(t) produces is attributed to the lattice line n = 24 (above) — not a climate-formula layer. Whether n = 24 joins L1 is a separate structural decision: added to the lattice it lifts the pre-iNHG fit by ΔR² = +0.0196 at 1.64× the median amplitude, but on the full LR04 record it is 0.79× the median, below the 3× admission rule; the lattice ships as 32.
Discussion
Insolation features are downstream of gravitational coupling. The three quantities ε(t), e(t), ϖ(t) are themselves products of the same gravitational coupling among solar-system bodies that produces the 8H lattice. Berger’s secular theory derives ε(t) and e(t) as sums of beats among Laskar’s fundamental frequencies (g₁..g₈, s₁..s₈); those beats are L1’s 33 integers (see L1 Attribution). Once L1 is in the formula, adding the literally-derived quantities is double-counting.
Classical insolation has very low standalone explanatory power for LR04. R²_insol_only = 0.0544 at post-MPT (and ≤ 0.0298 in the older regimes). LR04 is a record of ice volume, not summer-day insolation.
Consistent with the Climate Summary §4.3 conclusion: climate is forced by the gravitational coupling among solar-system bodies; insolation is one channel through which that coupling reaches Earth; the 8H integer-divisor lattice is a more complete description of the rhythm than the classical Berger insolation parameterisation — strictly more expressive, no information lost.
Caveats
Four features, not the full Berger 1978 expansion. The canonical Berger 1978 insolation formula includes higher-order terms (ε², ε·sin ϖ, e²·sin 2ϖ, etc.) and latitude/season-specific quantities like 65°N June caloric summer insolation W₆₅(t). We tested only the four linear Milankovitch features (ε, e, e·sin ϖ, e·cos ϖ) because they are the standard climatic-precession basis cited in every review of Milankovitch theory, and higher-order terms are products and harmonics of the same primitives — if the linear quartet adds <0.5% R², no realistic higher-order expansion will close the gap to the 0.87 set by L1.
Window/regime dependence. The in-sample ΔR² with the model’s own features is largest where L1+L2+L3 is weakest (pre-iNHG, R² = 0.4298) — headroom that any extra regressor can absorb. That is exactly why the verdict rests on the cross-validated, real-orbital-element check above rather than on the in-sample statistic alone.
Reproducibility
# Step 1 — dump insolation features at LR04 sample times
node scripts/extract_insolation_features.js
# Step 2 — run augmented regression and write results
python3 scripts/milankovitch_insolation_extension.py
# Step 3 — Laskar 2010 hardening on 0–500 kyr
python3 scripts/milankovitch_insolation_laskar_check.py
# Step 4 — cross-window stability with La2004 over the full record
python3 scripts/milankovitch_insolation_stability.pyTotal runtime: a few seconds. Deterministic, no random seeds. The hardening tests use public/input/la2010-orbital-elements.json and data/la2004-earth-51myr-back.asc as inputs. The three tracked output JSONs carry the full per-regime breakdowns, coefficients and verdict strings; every number on this page is a registry value bound to them.
See also
- Climate Summary — the synthesis this test empirically defends
- Climate Formula — canonical L1+L2+L3 architecture (the formula tested here)
- L1 Attribution — per-integer Berger vs Holistic mapping; explains why L1 already encodes Berger insolation beats
- Related Work — position relative to recent peer-reviewed work