Skip to content

Density-dependent bridge correction v31: capped linear, holdout validated#45

Merged
holoros merged 1 commit into
mainfrom
density-correction-v31-2026-05-28
May 28, 2026
Merged

Density-dependent bridge correction v31: capped linear, holdout validated#45
holoros merged 1 commit into
mainfrom
density-correction-v31-2026-05-28

Conversation

@holoros
Copy link
Copy Markdown
Owner

@holoros holoros commented May 28, 2026

v30 identified BA_t1 as the strongest single predictor of per-plot residual on 12.3.9 production posture (R^2=0.188, p=1.4e-5). v31 implements the post-projection correction as a ready-to-ship bridge helper with 200-iter 50/50 holdout validation.

Production formula

raw_residual = 40.6345 + (-0.334383) * BA_t1
capped       = max(-25, min(25, raw_residual))
BA_corrected = BA_pred - capped

Holdout validation (200 iter, 50/50 splits, n=93)

config test raw bias test corr bias test R^2 corr
Linear no cap +10.86 ± 4.45 +0.41 ± 7.10 0.481 ± 0.116
Linear ±25 cap +10.86 +2.11 0.479
Linear ±20 cap +10.86 +3.14 0.471
Quadratic ±25 +10.86 +3.85 0.489

Selected: linear ±25 cap. Near-zero mean test bias, near-best test R^2, protection against extreme corrections.

Deliverable

apply_density_correction.R provides:

  • apply_density_correction(BA_pred, BA_t1, cap=25) -> corrected vector
  • apply_density_correction_verbose(...) -> diagnostic data frame
  • ACD_DENSITY_CORRECTION named list of coefficients + provenance

Smoke test verified on Cardinal R 4.4.0.

Caveats

  • Calibration on n=93 ME FIA, 10-yr remeasurement, 12.3.9 production posture
  • Do NOT apply to Canadian MAGPlot (v17 showed +0.4% baseline; no residual to close)
  • Structural fix (BAL coefficient refit) still pending as paper-sized work

…ated

v30 identified BA_t1 as the strongest single predictor of per-plot
residual on 12.3.9 production posture (R^2=0.188, p=1.4e-5). v31
implements the post-projection correction as a ready-to-ship bridge
helper with 200-iter 50/50 holdout validation.

Formula:
  raw_residual = 40.6345 + (-0.334383) * BA_t1
  capped       = max(-25, min(25, raw_residual))
  BA_corrected = BA_pred - capped

Holdout results (200 random 50/50 splits, n=93):
  config          test_raw_bias  test_corr_bias  test_R^2_corr
  Linear no cap   +10.86%        +0.41%          0.481
  Linear +/-25    +10.86%        +2.11%          0.479  <- production
  Linear +/-20    +10.86%        +3.14%          0.471
  Quadratic +/-25 +10.86%        +3.85%          0.489

Selected: linear +/-25 cap. Near-zero mean test bias (+2.1%), near-best
test R^2 (0.479), protection against extreme corrections (+/-25 ft^2/ac
is roughly +/- 26% of mean observed BA).

Deliverable: apply_density_correction.R provides:
  apply_density_correction(BA_pred, BA_t1, cap=25) -> corrected
  apply_density_correction_verbose(BA_pred, BA_t1) -> diagnostic df
  ACD_DENSITY_CORRECTION named list of coefficients + provenance

Smoke test verified on Cardinal R 4.4.0: cap activates at extremes
(BA_t1=20 -> +25 capped from +33.9; BA_t1=220 -> -25 capped from -32.9),
crossover at BA_t1=121.5 gives correction ~0.

Caveats:
  - Calibration on n=93 ME FIA, 10-yr remeasurement, 12.3.9 production
  - Do NOT apply to Canadian MAGPlot (v17 showed +0.4% baseline)
  - Not validated on non-ME FIA conditions
  - Structural fix (BAL coefficient refit) still pending as paper-sized
@holoros holoros merged commit 8155545 into main May 28, 2026
4 checks passed
@holoros holoros deleted the density-correction-v31-2026-05-28 branch May 28, 2026 23:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant