遺漏資料機制

在 R 中以插補處理遺漏值

Michal Oleszak

Machine Learning Engineer

遺漏資料機制:總覽

遺漏資料可分為三類。區分它們很重要,因為每類需要不同處理方式。

  • Missing Completely at Random(MCAR)。
  • Missing at Random(MAR)。
  • Missing not at Random(MNAR)。
在 R 中以插補處理遺漏值

Missing Completely at Random(MCAR)

資料集中遺漏值的位置是完全隨機的,不依賴任何其他資料。

例:

天氣感測器量測溫度並將資料送到資料庫。感測器故障期間,資料庫出現部分遺漏紀錄。

在 R 中以插補處理遺漏值

Missing at Random(MAR)

資料集中遺漏值的位置依賴於其他可觀測的資料。

例:

維修時會關閉感測器,因此資料庫有部分溫度值遺漏。由於維修團隊週末不工作,遺漏值的位置取決於星期幾。

在 R 中以插補處理遺漏值

Missing not at Random(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...