/** * NOISE — the replication advisor. Hand-measured scores are NOISY (a lab assay drifts, a taste test is * subjective, a benchmark jitters). No simple optimizer tells you "that reading looks unreliable — * re-measure it" or "your measurements are too noisy to trust this winner yet". NOISE does. * * It estimates the measurement noise σ from DISAGREEMENT between experiments that sit close together in * the variable space: if two near-identical settings gave very different scores, that gap is noise (the * response barely changed, so the difference is the meter wobbling). From σ it reports the signal-to-noise * ratio, flags individual readings that deviate far from their neighbours (likely mis-measurements), and * recommends whether to TRUST the result, RE-CHECK a flagged point, or REPLICATE measurements because the * noise is drowning the signal. * * Honest by construction (DIAKRISIS): σ is estimated from near-neighbour pairs (it slightly over-counts any * real local variation, so it is a conservative upper-ish bound); it needs enough close pairs and abstains * to UNKNOWN otherwise. Decision support, not a guarantee — but the σ estimate is checkable: feed it data * with a known injected noise and it recovers it (see the gauntlet). */ import { type Space, type Experiment } from "./space.js"; import { type Observation, type Goal } from "./engine.js"; export interface NoiseOutlier { experiment: Experiment; value: number; deviation: number; } export interface NoiseReport { n: number; noiseSigma: number; signalRange: number; snr: number; nearPairs: number; outliers: NoiseOutlier[]; recommendation: "trust" | "recheck-flagged" | "replicate" | "unknown"; note: string; } /** Estimate measurement noise + flag unreliable readings from near-neighbour disagreement. */ export declare function analyzeNoise(obs: ReadonlyArray, space: Space, _goal?: Goal, neighborFrac?: number): NoiseReport; export declare function noiseGauntlet(): { score: 0 | 100; checks: Array<{ name: string; pass: boolean; detail: string; }>; }; //# sourceMappingURL=noise.d.ts.map