缺失数据机制

R 中的缺失值填补处理

Michal Oleszak

Machine Learning Engineer

缺失数据机制:概览

缺失数据问题可分三类。区分它们很重要,因为解决方案不同。

  • 完全随机缺失(MCAR)。
  • 随机缺失(MAR)。
  • 非随机缺失(MNAR)。
R 中的缺失值填补处理

完全随机缺失(MCAR)

数据集中缺失位置完全随机,不依赖任何其他数据。

示例:

一个气象传感器测温并把数据发送到数据库。传感器故障时,数据库出现缺失记录。

R 中的缺失值填补处理

随机缺失(MAR)

缺失位置依赖于其他可观测数据。

示例:

维护时传感器被关闭,数据库出现缺失温度。因维护团队周末不工作,缺失位置取决于星期几。

R 中的缺失值填补处理

非随机缺失(MNAR)

缺失位置取决于其自身的缺失值。

示例:

极寒时传感器结冰停工,无法记录极低温。因此温度变量的缺失位置取决于该变量本身的取值。

R 中的缺失值填补处理

处理这些机制

若直接丢弃不完整观测会怎样?

  • 若为 MCAR,只是信息损失。
  • 若为 MAR 或 MNAR,会给基于该数据的模型引入偏差。
  • 此时应进行缺失值插补。
  • 许多插补方法假设 MAR,因此识别它很重要。
R 中的缺失值填补处理

统计检验

示例:均值差异的 t 检验

  1. 设定假设(原假设):均值相等。
  2. 用数据计算检验统计量。
  3. 计算 p 值:在原假设为真时,得到该检验统计量的概率有多大?

p 值小 → 拒绝原假设 → 均值不同


p 值大 → 不拒绝原假设 → 均值相等

R 中的缺失值填补处理

MAR 的检验

目标:检验一个变量的缺失比例在另一个变量的不同取值下是否不同。

示例:PhysActive 的缺失比例在男性与女性间是否不同?

检验流程:

  1. 创建指示 PhysActive 是否缺失的虚拟变量。
  2. 用 t 检验比较该虚拟变量在男性与女性间的均值是否不同。
  3. 若 p 值很小(如 < 0.05),均值不同,数据为 MAR。
R 中的缺失值填补处理

实操检验

nhanes <- nhanes %>% 
  mutate(missing_phys_active = is.na(PhysActive))
missing_phys_active_male <- nhanes %>% 
  filter(Gender == "male") %>% 
  pull(missing_phys_active)

missing_phys_active_female <- nhanes %>% 
  filter(Gender == "female") %>% 
  pull(missing_phys_active)
R 中的缺失值填补处理

结果解读

t.test(missing_phys_active_female, missing_phys_active_male)
    Welch Two Sample t-test

data:  missing_phys_active_female and missing_phys_active_male
t = -1.7192, df = 781.18, p-value = 0.08597
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -0.044414688  0.002940477
sample estimates:
 mean of x  mean of y 
0.02083333 0.04157044
R 中的缺失值填补处理

让我们来识别缺失数据机制!

R 中的缺失值填补处理

Preparing Video For Download...