# GNSS 第三周:闭合差阈值可靠性验证(独立 PoC) **结论:统计阈值校准未通过;数值计算与真实异常场景的空间一致性告警有证据支持。** 本次验证已经闭环完成,不应把目前任意一个数字阈值表述为“1% 误报率”的生产参数。 ## 1. 固定实验合同 - 解算:单独编译的 RTKLIB demo5 b34k;GPS L1/L2、静态、15° 仰角、广播星历、Ratio=3、ECEF、坐标与六个协方差根字段输出 8 位小数。与生产二进制隔离。 - NOAA CORS:ANC2(A)、TBON(B)、ZAN1(R) 公开 2024 RINEX v2 30 秒观测与 TEQC QC;每日期独立求解 00–05、18–23 共 12 个非重叠 1 小时窗口,每窗口 AB/AR/BR 三条基线,共 9 日期 ×12 窗 ×3 条=324 次基线处理。 - **阈值拟合**(提前确定):2024-05-01/03/05/08,对应 DOY 122/124/126/129,48 小时窗。 - **留出验证**(未参与阈值拟合):2024-05-17/19/21/23,对应 DOY 138/140/142/144,48 小时窗。 - **真实扰动**:2024-05-10,DOY 131,12 小时窗;该日期强地磁扰动已在前轮以真实 TEQC 数据和 FIX 占比下降得到观测证据。 - 对每个窗口,排除独立静态求解的前 10 分钟;从剩余约 100 个历元中,仅当三条基线同步 FIX 且 Q 可逆时计算闭合差。 - “可以给出网络判断”的实验性覆盖门槛是:一个小时至少拥有 20 个三边同步 FIX 历元。达不到则标记 **UNVERIFIED/无法检验**,绝不当作通过。 - 比较闭合差长度 |c|(mm)与形式 χ²=cᵀ(Q_AB+Q_AR+Q_BR)⁻¹c。后者假设三基线独立,只是对照基线,非统计校准真值。 - 时间序列连续三个 30 秒超阈值只用来衡量**告警持续性**,不意味着三个独立观测。 ## 2. 数据覆盖情况 | 分组 | 全部独立小时窗 | 可检验的小时窗 | 三边 FIX 不足的小时窗 | |---|---:|---:|---:| | 拟合日期 | 48 | 46 | 2 | | 留出日期 | 48 | 47 | 1 | | 地磁暴日期 | 12 | 7 | 5 | 仅普通日期合计 96 个小时窗,93 个可检验;地磁暴期间 5/12 个小时窗三边同步 FIX 不足,不能当成“没有发现异常”。 ## 3. 预先列举的规则在独立留出数据上的表现 下面为 **每小时出现告警的窗口数/可检验窗口数**,不能叫误报率(普通日期不等于已确认零异常);也不是每个历元的独立错误概率。 | 检验策略 | 拟合组 | 留出组 | 地磁暴组 | |---|---:|---:|---:| | 名义 χ²(3) 99%(>11.3449),任一历元 | 18/46 | 12/47 | 5/7 | | 名义 χ²(3) 99%,连续 3 历元 | 14/46 | 8/47 | 5/7 | | |c| >10mm,连续 3 历元 | 16/46 | 9/47 | 6/7 | | |c| >20mm,连续 3 历元 | 10/46 | 7/47 | 5/7 | | |c| >50mm,连续 3 历元 | 7/46 | 5/47 | 3/7 | | **拟合组每窗最大闭合差 p95=90.342mm**,任一历元 | 3/46 | 2/47 | 2/7 | 最后一行说明:未经真实健康标签而将“普通日期所有峰值”当正常噪声去拟合,阈值会高到放过不少真实扰动。这不能作为校准方案。 ## 4. 为什么没有通过统计可靠性验收 1. **缺少同会话三基线之间的交叉协方差**。demo5 的单独 POS 只有每边 3×3 条件协方差;真正闭合差协方差应为 CΣ_bCᵀ,而非简单相加。 2. **误固定/多路径/周跳尾部分布不是理想正态模型**。即使是普通日期,有小时窗处于 FIX 但闭合持续达到几十毫米;不可擅自称它们都是误报。 3. **重复检验的多重比较与时间相关**:一个 1 小时窗检查数十至 100 个相关历元,“该小时至少一次告警”的概率不可直接使用单历元 1%。 4. **参考标签不足**:NOAA 公开观测及日级 TEQC QC 不是每个 30 秒历元经过独立精密定位确认的误固定真值;4 个独立留出日期不足以证明 1% 生产误报率。 5. **环境与系统误差分布变化**:同一组三基线不同日期存在异常时窗,其他站网的相关性和观测质量也不同。 6. **前 10 分钟只能作为实验性初始化隔离**。将 20mm 连续3次的规则由10分钟改为20分钟后,留出组触发从7/47变为5/47,但地磁暴组也从5/7降为3/7;不能通过加长等待简单“修复”阈值。 ## 5. 跨站网对照与错误归因边界 2026-09-27 P532/P539/P602 另一个站网 24 个小时窗,各窗最终 FIX 的闭合差中位数为 0.105mm;但若检查各小时**中间**的稳定期 FIX 历元,全部 2,400 个历元的最大闭合差约 32.94mm,且属于未持续三历元的尖峰。说明仅报告小时末结果会漏掉过程中的异常。 此前这个站网的 24 个小时末 FIX 闭合协方差:X/Y/Z 经验标准差 0.230/0.271/0.614mm,而假设三边独立求和形式标准差 1.464/2.008/1.680mm。两者明显不一致,提示统计模型失配,**但不能全部归因于交叉协方差**,还存在时间变化与模型等因素。 即使三边一致(很小的闭合),也无法保证所有三边都无共同误差;单闭环不能定位哪一边错,也不能替代测站位移独立核验。 ## 6. 阶段决策及最小的后续实施方案 - **通过:** 计算三维闭合差;记录 demo5 完整 3×3 协方差;验证多个真实 GNSS 自然扰动场景中存在显著闭合异常;验证“连续三个历元”降低孤立告警的现象。 - **未通过:** χ²=11.3449 的真实 1% 误报率;适用不同基线/环境的统一毫米阈值;对被标记为 FIX 的某条基线进行独立错误归因。 - **本轮不产生生产级阈值配置,不修改 RTKLIB / NetworkAdjustment 正式代码。** 建议仅在独立 PoC 中保留两层**待校准的示例告警合同**: 1. 三基线同时 FIX 且单历元闭合超过候选低阈值(例如 10mm),标记 **SUSPECT**;这一单点不应自动视为可信解,但也不能仅凭单点无条件剔除真正的 R 位移。 2. 同一会话连续 3 个同步 FIX 历元超过候选高阈值(例如 20mm),标记 **NETWORK_INCONSISTENT**;它只代表空间几何解之间不一致,**不声称是哪条边误固定**。 3. 同步 FIX 不足、协方差非正定、初始化未稳定,标记 **UNVERIFIED**;绝不能隐式当 PASS。 4. 无触发只能标识 **NO_INCONSISTENCY_DETECTED**,不能解释为“已验证高精度”。 以上 10/20mm 是可观测性探索用的数量级示例,**不是推荐生产设置**,不能以 7/47 普通日触发断言其“误报率 14.9%”。 要把阈值升级为生产规则,下一步仅需补充具有独立真实性依据的多日保留数据、正确联合/经验随机模型、并按“窗口及异常事件”而非连续单历元检验检出/漏检;若数据仍无法辨识,继续保留不确定状态,不强行报出 1% 置信度。 ## 7. 来源、复现、文件 官方 NOAA NCN 数据和 QC 文件说明: https://geodesy.noaa.gov/CORS/data/ https://noaa-cors-pds.s3.amazonaws.com/rinex/2024/131/anc2/anc21310.24S - 实验目录:/opt/gnss/network-adjustment-poc - 下载与检查:tools/fetch_quiet_days.sh 122 124 126 138 140 142 144;129/131 复用已有 storm-20240510 公开数据文件。 - 重算:./run_threshold_days.sh 122 124 126 129 138 140 142 144 131 - 分析:python3 src/threshold_calibration.py - 连续触发敏感性:python3 src/threshold_persistence.py - 会话级统计:results/threshold-calibration/threshold_calibration.json - 连续触发分析:results/threshold-calibration/persistence_sensitivity.json - 逐 FIX 历元观测评分:results/threshold-calibration/stable_allfix_epochs.csv - 未更改生产程序、数据库、Redis、既有 stage-replay 环境。 **验收:研究验证已完成;结果是“统计可靠性未通过”,并明确了所需的下一项数据与算法条件。**