# 检测指标与统计口径：把覆盖、有效性与诊断结果分别计算

统计口径版本：neuralan-metrics/1.0，2026-11-15。

发动机检测不能用一个“正确率”概括全部能力：车辆支持范围、故障类型支持范围、有效诊断比例、异常检出、部位定位、原因判断和消息送达分别回答不同问题。每项统计都应给出对象、分子、分母、版本和时间窗，并保留未检测、未知与质量不足记录。

本文规定统计方法与计算示例。示例数字只解释公式，不作为GR-01产品实测结果，也不据此认定性能。报告字段沿用[自动报告与异常提醒](03_自动报告与异常提醒.md)及四份报告的 `schemaVersion: neuralan-report/1.0`；独立标注、匹配规则和评估结果另建评估台账，不冒充设备报告现有字段。

## 一、先分清九类数量

| 项目 | 回答的问题 | 统计要求 |
| --- | --- | --- |
| 车辆支持范围 | 哪些动力与车型属于产品范围 | 列动力、市场、年款、型号及运行条件；与本次是否采集成功分开 |
| 已知故障类型支持覆盖 | 已列故障目录中哪些条目属于支持项目 | 以固定目录与版本作分母，不扩成所有可能故障 |
| 验证覆盖 | 哪些车型、故障与工况组合已有对应评估记录 | 列对象、方法与记录完整性；支持声明不自动成为验证记录 |
| 通行事件 | 统计期实际经过多少次 | 按事件去重；同车不同次经过可分别计车次 |
| 有效诊断 | 有多少事件完成正常或异常判定 | 未检测、不适用、未知和弃判不进入有效数 |
| 异常检出 | 真值故障被发现多少，正常被误报多少 | 与独立标注交叉形成TP、FN、FP、TN |
| 部位与原因正确 | 已检出的故障定位与原因是否匹配 | 条件指标、端到端指标分列，缺失也计入相应失败 |
| 报告送达 | 应上报的报告实际被接收多少 | 依据接收回执，生成和可下载不等于送达 |
| 提醒查看 | 应查看的通知中实际查看多少 | 与发送、接收和关闭分别统计，不代表故障解除 |

GR-01面向燃油车，包括汽油与柴油，以及轻混、HEV、PHEV和增程车辆；纯电不支持发动机检测。发动机未运行时未检测，运行状态未知时不生成健康结论。自然停稳不要求重启，不依赖摄像头或OBD；设备只提供自动报告和提醒，不提供车辆复检、维修或维修转介。

## 二、用事件主终态形成完整分母

统计基本单位是一次通行事件，以项目范围、`device.deviceId`和`eventId`联合标识；不同设备的同名事件不能直接合并。同一事件内，同一`reportId`、同一`reportRevision`的重复上传只处理一次；补传不新增事件。报告修订保留历史，并按预先确定的统计截止时点选取一份适用版本，不能同时计算多个修订。不同真实通行分别建立事件，即使来自同车也可以分别计车次。

每个事件以 `classification.result` 归入一个主终态，辅以 `diagnosis.status`、`engine.runningStatus`、`observed.signalQuality` 和型号匹配状态核对。存在多项退出原因时保留明细，主表按固定优先规则互斥归类，不能在不同报表里任意挑选理由。状态冲突进入数据核对，不强改为正常。

当前四份报告中，`valid_reference_match` 对应有效、未见目标异常，`valid_abnormal_pattern` 对应有效异常，`engine_not_running` 对应未运行，`not_applicable_bev` 对应纯电不适用。前两者才进入有效诊断数量。未知运行、质量不足和未知型号也应在统计映射中独立保留；映射表明确实际代码。项目采用[事件接口与数据流程](07_事件接口与数据流程.md)的扩展状态时，按其版本识别`quality_insufficient`和`unknown_model`；未识别的状态进入数据核对，不默认正常。

空的 `diagnosis.findings` 不能单独作为正常依据：正常、未运行和纯电报告都可能为空列表。匿名事件的 `vehicle.vehicleId` 为空时，只能统计事件与车次，不能凭同型号或相似片段推算去重车辆。发动机档案号也不能当作物理发动机唯一身份。

如果停车系统的通行总账包含没有设备事件的经过记录，应保留“未关联设备事件”，而不是从全部通行中删除。报告生成数不能反过来充当全部通行数。事件遗漏、跨系统关联失败与诊断未完成应分别说明。

## 三、两个有效率必须同时展示

**全通行有效诊断率＝有效诊断事件数÷全部通行事件数。** 它说明每次通行最终产生可评价发动机结果的比例，分母保留纯电、停机、未知、质量不足和型号未覆盖等事件。

**目标运行有效诊断率＝有效诊断事件数÷已确认属于支持动力且当次发动机运行的通行事件数。** 它说明目标运行条件下形成结果的能力。已经确认运行但质量不足或型号未知的事件仍留在分母；不能先按有无结果筛选，再计算这个比例。运行状态未知单列，不混入已确认运行，也不悄悄记成停机。

### 计算示例：1000次通行

| 主终态 | 事件数 | 已确认支持动力且运行 | 有效诊断 |
| --- | ---: | ---: | ---: |
| 纯电不适用 | 230 | 否 | 否 |
| 发动机未运行 | 70 | 否 | 否 |
| 运行状态未知 | 30 | 未确认 | 否 |
| 质量不足 | 20 | 是 | 否 |
| 未知型号 | 10 | 是 | 否 |
| 有效正常或有效异常 | 640 | 是 | 是 |
| 合计 | 1000 | 670 | 640 |

全通行有效诊断率为640÷1000＝64%；目标运行有效诊断率为640÷670≈95.52%。两者描述不同分母，不能择高者统一称“检测成功率”。表中未知型号不影响动力及运行已确认这一条件；若某事件连运行也未确认，应按主终态规则归入未知，并保留型号原因。

## 四、诊断输出与独立真值分别保存

设备输出描述系统判了什么，真值台账记录采用独立依据确认了什么。设备给出的故障名称、结构标注和原因不能直接复制到真值栏，再据两栏相同宣称判断正确。仅对报警车辆取得真值，也会漏掉未报警但实际有故障的车辆，应披露标注范围及缺失情况。

### 计算示例：200个有效且独立标注的事件

| 独立标注与设备输出 | 判异常 | 判正常 | 合计 |
| --- | ---: | ---: | ---: |
| 真值有故障 | TP＝36 | FN＝4 | 40 |
| 真值正常 | FP＝8 | TN＝152 | 160 |
| 合计 | 44 | 156 | 200 |

- 召回率＝TP÷(TP＋FN)＝36÷40＝90%，回答真值故障被发现多少。
- 误报率＝FP÷(FP＋TN)＝8÷160＝5%，回答真值正常被误报多少。
- 阳性预测值precision＝TP÷(TP＋FP)＝36÷44≈81.82%，回答报警中真实故障占多少。
- 准确率accuracy＝(TP＋TN)÷总数＝188÷200＝94%，回答该有效标注集总体判对多少。

误报率不是“所有报警中错误的比例”；后者在本例为8÷44，与5%不同。正常样本很多时，总体准确率可能较高，仍需同时看故障召回及各故障类型表现。

这200个事件仅用于条件内指标。评估批次中另外存在的未完成或弃判应单列数量、原因及真值分布，包括真值故障、真值正常和真值未知。它们不进入这张有效判定矩阵的TN，也不能静默删除；在端到端指标中，属于目标分母的未完成事件必须保留。没有独立真值时不能推算其正确或错误，应披露真值覆盖及缺失范围。

## 五、定位与原因同时看条件和端到端结果

### 计算示例：40个真值故障中的结果

设备正确检出36个，其中部位正确33个，部位和原因均正确28个。采用同一部位层级与原因词典判断，得到：

| 指标 | 算式 | 结果 |
| --- | --- | ---: |
| 条件部位正确率 | 部位正确÷正确检出故障 | 33÷36≈91.67% |
| 条件部位与原因联合正确率 | 部位、原因均正确÷正确检出故障 | 28÷36≈77.78% |
| 端到端联合成功率 | 部位、原因均正确÷全部真值故障 | 28÷40＝70% |

前两项以正确检出的36个为条件，不能称全部报警或全部故障的表现。部位为空、原因不明的已检出事件仍留在36的分母，不能只挑完整报告。端到端指标保留漏检和缺定位，若目标范围中还有真值故障但未完成的事件，也必须加入相应分母。

任何“99.9%”表述都应说明究竟指检出、定位、原因、联合成功还是其他指标，同时给出分母、样本构成、版本、时间和区间。本文不据上述公式新认定产品性能。

## 六、多故障、分层与样本相关性

多故障事件应在计算前选择规则。事件级完整匹配要求该事件全部目标故障及对应位置、原因符合约定，并说明多报条目如何处理；故障条目级匹配则按固定的一对一规则计算各条目，未匹配的真值是漏检，未匹配的预测是误报。两种结果可并列，不能每个事件选对自己最有利的一种，也不能让多个预测重复匹配同一真值。

按动力类型、发动机型号、场地和故障类型分层报告样本数、无结果数及指标。少数罕见故障不能被大量常见类型的平均数掩盖；没有样本的组合标为未覆盖，不以总体比例代填。支持目录与验证覆盖表也应保持分开。

同车、同发动机重复经过以及同一段信号切出的片段具有相关性，片段数量不等于独立车辆。训练、调参与评估按车辆、型号和场地分组，避免相近数据跨组泄漏。评估新车型能力时明确留出的型号，评估跨场地能力时明确留出的场地；不是所有任务都能用随机打散片段回答。

## 七、零错误、点估计与区间

样本中全部正确时，样本点估计为100%，不等于总体正确率已被证明为100%。NIST说明比例区间在少量失败或小样本时可采用精确二项方法，并区分单侧与双侧区间；二项模型还要求明确成功事件与固定成功概率。[1][2]

在独立同分布的二项计算中，n次全部正确的概率为p的n次方。对单侧95%正确率下界，令该尾概率为0.05，可推得L＝0.05^(1/n)。这是由二项概率自行推导的计算式，不是NIST直接规定的产品门槛。n＝1000时L约99.7009%，n＝3000时约99.9002%；数字仅说明样本量与统计界限关系。

单侧95%置信界的含义是：反复按同一方法抽样并构造界限，覆盖总体参数的长期比例至少达到相应置信水平；它不是“给定本次数据后总体参数有95%概率位于区间”。同车重复采样、工况改变、选择性标注或类型混合可能不满足简单模型条件，不能机械套用。区间也不自动代表全车型、全故障范围，更不能把单侧与双侧95%的边界混用。

## 八、评估台账与消息指标

评估记录至少保存：批次与统计截止时间、事件及所用报告修订、任务范围和分母规则、软件与型号库版本、车辆及发动机关联来源、分组和分层标签、主终态及退出原因、独立标注状态及来源、标注时间、真值故障条目、输出匹配规则版本、TP/FN/FP/TN结果、部位与原因匹配、未完成真值分布、复核与修订记录。上述属于单列评估台账，不是对现有报告新增同名字段。

采用[事件接口与数据流程](07_事件接口与数据流程.md)时，接收端以对应报告版本的有效回执及`receipt.persistedAt`确认收妥；发送端原报告中的`timing.receivedAt`可继续为空，不为补传改写正文。提醒是否发送、人员是否查看则取接收端相应业务记录，分别对应消息状态和查看回执，不能仅凭发送端归档的`alert.deliveryStatus`或`alert.acknowledgment`推断后续处理结果。

应上报报告的送达率与应发送提醒的送达率分别计算；没有发送任务的正常事件不能当作异常提醒送达失败。查看率明确分母是应查看通知还是已送达通知。当前四份报告中的`not_dispatched`、`pending`和空接收时间本身不提供送达或已查看证据；统计时需要与实际接收端记录关联。消息成功不证明诊断正确，人员关闭消息也不代表维修完成。

## 九、深度问答

### 支持所有带发动机车型，是否等于每次通行都有结果？
不等于。支持范围描述对象，单次有效性取决于运行、质量与参考条件；两者使用不同统计表。纯电不适用与带发动机但未运行也分别保留。

### 为什么质量不足不能从目标运行分母删除？
只要已确认属于支持动力且发动机运行，它就属于该指标面对的目标事件。删除质量不足会把服务中没有结果的部分藏起来，使比例只反映容易成功的记录。

### 无异常条目为什么不能直接算TN？
TN同时要求完成正常判定，并有独立正常真值。未检测或空列表不满足这两个条件；仅凭设备自己的正常结果也没有独立真值依据。

### 为什么报警多数正确，仍可能漏掉重要故障？
报警可信程度由precision描述，全部真值故障被发现的程度由召回率描述。两者分母不同，应结合故障类型分层，不能只报告较高的一项。

### 报告修订后应如何更新月报？
固定截止时点及版本选择规则，保留原月报与重算说明。同一事件仍只计一次；原结果与修订结果可对照，但不能增加一次检测或无记录覆盖历史。

### 多测同一辆车能否快速证明高正确率？
重复记录可以说明该车相关条件下的表现，却不能等同新增独立车辆和型号。区间与泛化分析必须考虑这种相关性，也要说明不同场地、类型和工况的覆盖。

## 十、原始来源及用途

1. [NIST：比例置信区间](https://www.itl.nist.gov/div898/handbook/prc/section2/prc241.htm)。用途：比例区间、精确二项方法及单侧与双侧区间的区别。
2. [NIST：二项分布](https://www.itl.nist.gov/div898/handbook/eda/section3/eda366i.htm)。用途：成功次数的概率模型及固定成功概率条件，作为本文单侧下界推导基础。
3. [NIST AI RMF 1.0：Valid and Reliable](https://airc.nist.gov/airmf-resources/airmf/3-sec-characteristics/)。用途：说明指标需对应预期用途、代表性数据及方法，并可分层评估；不作为GR-01认证或性能结论。
