# Listening for structural change

This reproducible software study asks when two noisy measurements might detect a prescribed loss of stiffness. A bending measurement rises while a vibration frequency falls. Combining them can make a large change conspicuous, but smaller changes can remain hidden. No beam, sensor or physical crack was tested; these are independent synthetic windows, not recorded hours of equipment operation.

## Model and units

Let k be retained stiffness divided by baseline stiffness, with unchanged load, mass and boundary conditions. The illustrative single-degree-of-freedom model uses strain proportional to 1/k and natural frequency proportional to sqrt(k). Baseline strain is 500 microstrain. Strain read noise is 11 microstrain standard deviation; residual temperature error is 0.5 degrees C with coefficient 12 microstrain/degree C. Their independent combination gives sigma_e=sqrt(11^2+(12*0.5)^2)=sqrt(157) microstrain. Relative frequency noise has standard deviation 0.01.

The standardized mean changes are a=500*(1/k-1)/sqrt(157) and b=(1-sqrt(k))/0.01. Independent unit normal errors are added. The score S=(z_strain+z_frequency_drop)/sqrt(2) has unit variance. An alarm occurs for S>=4.6866024649925215. This threshold corresponds to a nominal one-sided tail probability 1.388888888888889e-6 per window, or 0.5 alarms per 100 hours at one independent window/second. Detection probability is Q(threshold-(a+b)/sqrt(2)), where Q(x)=0.5*erfc(x/sqrt(2)).

## All original observations and uncertainty

Seed 690304 is retained. The reproduction asserts the original counts, without seed selection or parameter tuning.

| Scenario | Count | Point estimate | One-sided 95% bound |
|---|---:|---:|---:|
| Healthy, 3,600,000 windows / 1,000 synthetic hours | 5 alarms | 0.5 alarms/100 h | Poisson upper: 1.05130349/100 h |
| 10% stiffness loss | 19,652 detections / 20,000 | 98.26% recall | Wilson lower: 98.10126155% |
| 4% stiffness loss | 364 detections / 20,000 | 1.82% recall | Wilson lower: 1.67091616% |

The 10% scenario clears a 95% recall lower-bound gate; the 4% scenario does not. The healthy result does **not** clear a less-than-1-alarm/100 h upper-bound gate, even though its point estimate is below that limit. This is insufficient evidence to satisfy that confidence criterion, not proof that the true synthetic alarm rate exceeds the limit. Original benchmark Boolean fields use point estimates; checks.json separately records the stronger confidence criteria.

Wilson lower bounds use z=1.6448536269514722. The Poisson upper mean solves exp(-mu)*sum(mu^j/j!, j=0..5)=0.05, then divides by 1,000 hours and multiplies by 100. This is exact for a Poisson count model and a rare-event approximation to the independent-window binomial model. Neither calculation establishes coverage for clustered physical measurements.

## Sensitivity rather than a deployment claim

The right-hand figure is a new analytical calculation, not additional experimental observations. If the standardized channel errors have within-window correlation rho, Var(S)=1+rho. Holding the original threshold fixed gives 360000*Q(threshold/sqrt(1+rho)) expected false alarms/100 h. Temporal independence remains assumed. This exposes why shared temperature, load, mounting or timing errors cannot be ignored. It does not estimate real correlation.

The continuous detection curve is also an analytical extension of the same Gaussian model. Only two damage severities have original sampled counts. No crack geometry, minimum detectable crack size, localization accuracy, detection delay, precision under field prevalence, energy budget, sensor failure response or safety certification follows from this study. Use it to teach calibration, thresholds and tradeoffs, or to plan a conventional monitoring experiment; it is not an operational structural safety alarm.

## Reproduce and files

Run `python reproduce.py` with Python and matplotlib. It regenerates benchmark.json, checks.json, detection-curve.csv (151 rows), correlation-sensitivity.csv (91 rows), damage-observations.csv (2 rows), healthy-observations.csv (1 row), and monitoring-study.png/svg/pdf. Parameters and assumptions are in benchmark.json and the generator. PNG was visually inspected for labels and clipping.

## Verified primary references

- [NIST normal distribution](https://www.itl.nist.gov/div898/handbook/eda/section3/eda3661.htm): normal density, cumulative probability and numerical quantiles; the normal noise assumption must be assessed for physical data.
- [NIST proportion confidence intervals](https://itl.nist.gov/div898/handbook/prc/section2/prc241.htm): Wilson bounds and replacing the two-sided quantile with the one-sided quantile.
- [NIST constant-rate count model](https://www.itl.nist.gov/div898/handbook/apr/section4/apr451.htm): count/exposure confidence limits under a homogeneous Poisson process.
- [Liu et al., 2019, Structural Health Monitoring](https://laro.lanl.gov/esploro/outputs/journalArticle/Robust-structural-health-monitoring-under-environmental/9916369267403761): primary research showing why environmental and operational variation matters. The repository abstract describes a laboratory study; its findings are not validation of our synthetic model.

References checked 27 September 2026. External research supplies methods and context; all numerical results above come from this project's explicit synthetic model.
