第二章:失效数据收集与预处理

各位工程师朋友,咱们今天聊聊可靠性工程里最基础、也最容易被忽视的一环——数据收集与预处理。

我做了十几年可靠性,见过太多人一上来就建模型、算指标,结果数据本身就有问题。说白了,垃圾进垃圾出,模型再漂亮也没用。今天我就把这块的经验掰开了揉碎了讲给你听。

2.1 数据来源:现场数据 vs 实验室数据

数据从哪来?无非两个地方:现场和实验室。但这两类数据,脾气秉性完全不同。

2.1.1 现场数据

现场数据是产品在实际使用环境中跑出来的。比如汽车跑了多少公里坏了、手机用了多久屏幕不亮了。这类数据最真实,但也是最乱的。

我在项目中遇到过,某款通信设备在北方冬天故障率飙升,现场反馈的数据里却只记录了「设备故障」,没写环境温度。后来我们补了三个月的历史气象数据,才把根因揪出来。

现场数据的特点:

  • 真实性强——反映实际使用条件
  • 噪声大——用户操作习惯、环境差异、记录错误混杂在一起
  • 删失数据多——很多产品还没坏就被换掉了,或者用户懒得报修
  • 样本量大——动辄几千几万台,但有效信息密度低

2.1.2 实验室数据

实验室数据是在受控条件下测出来的。比如高温老化试验、振动试验、加速寿命试验。这类数据干净、完整,但有个致命问题——它不一定代表真实世界。

你想想看,实验室里恒温恒湿,电压稳定,操作规范。但实际用户可能把设备扔在车里暴晒,或者边充电边打游戏。实验室数据再漂亮,也不能完全替代现场数据。

实验室数据的特点:

  • 可控性强——应力水平、测试时间、样本量都能精确控制
  • 数据完整——很少出现缺失值,失效时间记录准确
  • 样本量有限——受成本和时间限制,通常几十到几百个样本
  • 外推风险——从加速条件推正常条件,需要模型假设

我的建议:现场数据和实验室数据要结合使用。实验室数据用来建立基础模型,现场数据用来验证和修正。两条腿走路,才稳当。

2.2 数据清洗:缺失值与异常值处理

数据拿到手,第一件事不是分析,而是洗数据。我见过太多人跳过这步直接算MTBF,结果算出来自己都不信。

2.2.1 缺失值处理

缺失值在可靠性数据里太常见了。比如现场维修记录里「故障时间」一栏空着,或者「失效模式」没填。怎么处理?

常见做法:

  • 删除法——如果缺失比例很小(<5%),直接删掉整条记录。简单粗暴,但有效。
  • 均值/中位数填充——适用于连续变量,比如缺失的故障时间用同类产品的平均时间补上。
  • 模型预测填充——用其他字段建立回归模型来预测缺失值。精度高,但工作量也大。
  • 标记法——把缺失值单独作为一个类别处理。比如「未知失效模式」。

避坑指南:我曾经处理一批航空电子设备的数据,发现「维修日期」缺失了30%。一开始想用均值填充,后来仔细一查,缺失的全是紧急抢修记录——这些设备的故障时间本来就短。用均值填充会严重低估故障率。最后我们通过维修工单编号反查了原始记录,才补全了数据。

2.2.2 异常值处理

异常值就是那些明显不合理的数据点。比如某台设备用了0.1小时就坏了,或者用了10万小时还没坏。前者可能是测试错误,后者可能是记录错误。

怎么识别异常值?

  • 物理约束法——比如电池寿命不可能超过设计寿命的10倍,超出就是异常
  • 统计方法——比如3σ原则、箱线图、Z-score
  • 领域知识——比如某类轴承的典型寿命是5000-8000小时,出现100小时或50000小时就要警惕

处理方式:

  • 确认后删除——如果确认是记录错误,直接删
  • 修正——比如时间单位写错了(小时写成天),修正后保留
  • 保留并标记——如果无法确认,保留数据但标记为可疑点,在后续分析中单独处理

注意:不要机械地删除所有异常值。有时候异常值恰恰是重要信息的载体。比如某批次产品早期失效特别多,可能意味着生产工艺出了问题。删掉异常值,就等于删掉了问题信号。

2.3 数据分类:完全数据、删失数据、截尾数据

可靠性数据有个独特的地方——不是所有数据都能看到「完整寿命」。这就引出了三种数据类型。

2.3.1 完全数据

完全数据就是你知道产品从开始使用到失效的完整时间。比如你测试10个灯泡,每个都一直亮到烧坏,记录下每个灯泡的寿命。这就是完全数据。

完全数据最理想,分析起来也最简单。但现实中,完全数据很少见。为什么?因为等所有产品都失效再分析,黄花菜都凉了。

2.3.2 删失数据

删失数据是可靠性分析中最常见的数据类型。说白了,就是你知道产品「至少用了多久还没坏」,或者「在某个时间点之后坏了」,但不知道确切寿命。

删失数据分三种:

  • 右删失——最常见。比如测试到1000小时停止,还有5个产品没坏。你知道它们寿命>1000小时,但不知道具体多少。
  • 左删失——你知道产品在某个时间点之前已经坏了,但不知道具体什么时候坏的。比如巡检发现设备坏了,但上次巡检是3个月前。
  • 区间删失——你知道产品在某个时间区间内坏了,但不知道确切时间。比如两次巡检之间坏了。

关键点:删失数据不是无效数据!很多新手以为「没坏」的数据没用,直接扔掉。这是大错特错。右删失数据包含了「产品存活了这么久」的信息,对估计可靠性指标至关重要。

2.3.3 截尾数据

截尾数据和删失数据容易搞混,我简单说下区别。

截尾数据是指:你只观察了某个范围内的数据,范围之外的数据你根本看不到。比如你只统计了保修期内的故障数据,保修期外的故障你压根没记录。这就是截尾。

截尾 vs 删失:

特征 删失数据 截尾数据
数据存在性 数据存在,但值不完整 数据根本不存在
信息量 部分信息(如寿命>1000h) 无信息
处理方式 可用极大似然估计等方法处理 需要修正抽样偏差
常见场景 定时截尾试验、用户失访 保修期数据、筛选试验

2.4 知识体系总览

下面这张图把本章的核心逻辑串起来了。我建议你保存下来,做项目时对照着看。

失效数据收集与预处理知识体系 数据来源 数据清洗 数据分类 现场数据 实验室数据 缺失值处理 异常值处理 完全数据 删失数据 右删失 左删失 区间删失 截尾数据 核心原则 1. 现场数据与实验室数据互补,不可偏废 2. 数据清洗要谨慎,异常值可能是重要信号 3. 删失数据不是垃圾,正确利用能提升分析精度

2.5 实战要点总结

最后,我把自己这些年踩过的坑总结成几条实战要点,你直接拿去用:

  1. 数据收集阶段就要设计好字段——至少包括:产品ID、开始使用时间、失效时间(或最后观察时间)、失效模式、使用环境。缺一个字段,后面分析就多一分困难。
  2. 现场数据一定要做溯源——不要直接拿原始数据用。我习惯先抽10%的数据做人工核查,看看记录是否合理。
  3. 删失数据要标记清楚——在数据表中单独加一列「数据状态」,标注是「完全」「右删失」「左删失」还是「区间删失」。后面分析时直接筛选。
  4. 异常值先问业务,再动数据——不要凭感觉删数据。我曾经觉得一个「寿命0.5小时」的数据是异常值,差点删掉。后来一问,那是生产线上的早期失效,恰恰反映了某个批次的质量问题。
  5. 保留原始数据——所有清洗操作都要在副本上进行,原始数据永远不动。这是数据工作的基本素养。

一个小工具推荐:如果你用Python做可靠性数据分析,推荐lifelines库。它对删失数据的处理非常友好,内置了Kaplan-Meier估计、Cox比例风险模型等常用方法。数据清洗阶段配合pandas,基本够用了。

好了,数据收集和预处理这块就聊到这儿。记住一句话:数据质量决定了分析的天花板。花80%的时间把数据搞干净,后面20%的分析工作才能出真东西。

专注资料整理