4. 竞争失效模式的数据结构与收集

竞争失效分析的第一步不是套模型,而是把现场和试验中产生的失效记录整理成“可被似然函数直接消费”的结构化数据。竞争风险数据的本质是:每个样本在观测窗口内可能经历多种失效模式中的一种,也可能什么都没发生;我们既要记录“什么时候失效”,也要记录“因为什么失效”,还要记录“我们究竟看到了多少”。这三类信息分别对应失效时间、失效模式和删失类型,缺一不可。

一、单条记录的最小字段集

一条竞争风险记录至少应包含以下字段:样本标识、起始时间、终止时间、事件状态、失效模式、删失类型、数据来源。其中“终止时间”是观测结束时刻,“事件状态”区分是否发生失效,“失效模式”仅在发生失效时有效。若把时间轴定义为从样本投入使用的时刻起算(t=0),则右删失样本的终止时间就是其退出观测的时刻,而左删失与区间删失需要额外记录边界信息。

删失类型的判定直接决定似然贡献的形式。右删失表示只知道失效时间大于观测终止时间,贡献为生存函数 S(t);左删失表示只知道失效时间小于某时刻,贡献为分布函数 F(t);区间删失表示失效发生在 (L, R] 之间,贡献为 F(R)−F(L)。若把删失类型记错,即使失效模式完全正确,参数估计也会系统性偏移。

二、竞争风险数据的编码方式

工程上常用两种编码:长表(long format)与宽表(wide format)。长表每行一个“样本—风险”组合,适合多模式竞争;宽表每行一个样本,用多列表示各模式是否发生。对于竞争失效,推荐长表,因为它能自然表达“同一时刻只有一个模式胜出”的排他性。

一种可直接落地的编码约定是:用 status 表示事件状态(1=失效,0=删失),用 mode 表示失效模式编号(1…K),用 censor_type 表示删失类型(0=精确失效,1=右删失,2=左删失,3=区间删失),并配合 t_start、t_end、L、R 四个时间字段。下面给出一个示例数据片段(示例数据,非实测):

id  t_start  t_end   status  mode  censor_type  L     R
S01 0        1250    1       1     0            -     -
S02 0        980     1       2     0            -     -
S03 0        1500    0       -     1            -     -
S04 0        760     1       1     0            -     -
S05 0        1100    0       -     3            900   1100
S06 0        640     1       3     0            -     -
S07 0        1320    0       -     2            -     -
S08 0        870     1       2     0            -     -

其中 S05 为区间删失:只知道失效发生在 900 至 1100 小时之间,但未观测到确切时刻;S03、S07 为右删失,分别因试验终止和提前退出而失去观测。注意 mode 在删失样本中留空,避免把“未发生”误编码为某个模式。

三、现场数据与试验数据的整合

现场数据与试验数据往往来自不同总体:现场样本使用工况分散、维护记录不完整、删失比例高;试验样本工况受控、失效模式清晰、样本量小。直接合并会引入异质性,因此整合的关键是“先对齐口径,再分层建模”。

对齐口径包括:统一时间单位(小时/循环/公里)、统一失效判据(功能失效还是性能退化超限)、统一模式命名(把现场口语化描述映射到标准模式字典)、统一删失定义。完成对齐后,可用一个 source 字段区分来源,并在模型中引入来源效应或分层参数,而不是简单地把两批数据堆在一起。

建议在数据收集阶段就建立“模式字典 + 删失判定规则 + 时间基准”三件套,否则后期清洗成本会远高于建模本身。

四、数据结构与似然贡献的对应关系

下图把一条记录从字段到似然贡献的映射关系画出来,帮助理解“编码方式如何决定模型输入”。图中左侧是原始记录字段,中间是删失类型判定,右侧是该记录对总似然的贡献形式。

竞争风险记录字段 → 删失判定 → 似然贡献 记录字段 id / source t_start / t_end status / mode censor_type L / R(区间边界) 时间基准:t=0 为投入观测 删失类型判定 精确失效 status=1, censor_type=0 右删失 status=0, censor_type=1 左删失 status=0, censor_type=2 区间删失 status=0, censor_type=3 模式仅在 status=1 时有效 似然贡献 f_k(t) · S_other(t) 模式 k 在 t 时刻胜出 S(t_end) 所有模式均未发生 F(t_end) 失效早于观测起点 F(R) − F(L) 失效落在区间内 总似然 = 各记录贡献之积

从图中可以看出,censor_type 是连接“原始记录”和“似然函数”的枢纽字段。实际工程中,建议在数据采集表里就把删失类型作为必填项,而不是事后根据 status 反推,因为“右删失”和“左删失”在 status=0 时无法自动区分。

五、一个可执行的整合流程

把上述内容落成可操作步骤,可以按以下顺序推进:

  1. 建立模式字典:列出本产品全部已知失效模式(如轴承磨损、密封泄漏、电路短路、腐蚀穿孔),给每个模式分配唯一编号,并写明判定依据。
  2. 统一时间基准:现场数据以“首次投用”为 t=0,试验数据以“试验开始”为 t=0;若现场样本经历过维修,需记录维修时刻并考虑是否作为新样本处理。
  3. 逐条判定删失类型:能确定失效时刻的记为精确失效;只知道“到某时刻仍未失效”的记为右删失;只知道“在观测开始前已失效”的记为左删失;只能确定失效落在某区间内的记为区间删失。
  4. 填写长表:每行一个样本,字段包括 id、source、t_start、t_end、status、mode、censor_type、L、R。
  5. 一致性检查:检查 status=1 时 mode 是否非空、censor_type 是否为 0;检查区间删失样本的 L 与 R 是否满足 L < R 且 R ≤ t_end;检查是否存在 t_start ≥ t_end 的非法记录。
  6. 分层标记:用 source 字段区分现场/试验,必要时增加 batch 或工况字段,供后续分层建模使用。
常见错误:把“未失效但已退出观测”的样本误记为精确失效,或把区间删失样本的 R 直接当作失效时间。这两种错误都会让寿命估计偏短,且难以通过残差诊断发现。

完成上述整理后,竞争风险数据就具备了进入似然计算的条件。后续建模时,无论采用哪种参数分布或半参数方法,输入都应当是这张结构一致的长表,而不是散落在多个表格中的原始记录。数据结构的规范性,直接决定了竞争失效模型能否稳定收敛、参数是否可解释。