Cơ chế dữ liệu thiếu

Xử lý dữ liệu khuyết bằng Imputation trong R

Michal Oleszak

Machine Learning Engineer

Tổng quan cơ chế dữ liệu thiếu

Vấn đề dữ liệu thiếu có thể chia thành ba loại. Phân biệt chúng rất quan trọng vì mỗi loại cần cách xử lý khác nhau.

  • Thiếu hoàn toàn ngẫu nhiên (MCAR).
  • Thiếu ngẫu nhiên có điều kiện (MAR).
  • Thiếu không ngẫu nhiên (MNAR).
Xử lý dữ liệu khuyết bằng Imputation trong R

Thiếu hoàn toàn ngẫu nhiên (MCAR)

Vị trí giá trị thiếu là ngẫu nhiên hoàn toàn, không phụ thuộc dữ liệu nào khác.

Ví dụ:

Một cảm biến thời tiết đo nhiệt độ và gửi về cơ sở dữ liệu. Có một số bản ghi thiếu khi cảm biến bị hỏng.

Xử lý dữ liệu khuyết bằng Imputation trong R

Thiếu ngẫu nhiên có điều kiện (MAR)

Vị trí giá trị thiếu phụ thuộc vào dữ liệu quan sát được khác.

Ví dụ:

Có một số nhiệt độ bị thiếu khi cảm biến tắt để bảo trì. Đội bảo trì không làm việc cuối tuần, nên vị trí giá trị thiếu phụ thuộc vào ngày trong tuần.

Xử lý dữ liệu khuyết bằng Imputation trong R

Thiếu không ngẫu nhiên (MNAR)

Vị trí giá trị thiếu phụ thuộc chính vào các giá trị bị thiếu.

Ví dụ:

Khi cực lạnh, cảm biến bị đóng băng và ngừng hoạt động, nên không ghi nhiệt độ rất thấp. Do đó, vị trí giá trị thiếu của biến nhiệt độ phụ thuộc vào chính giá trị của biến này.

Xử lý dữ liệu khuyết bằng Imputation trong R

Xử lý theo cơ chế

Nếu ta đơn giản loại các quan sát thiếu thì sao?

  • Nếu dữ liệu là MCAR, loại bỏ làm mất thông tin.
  • Nếu dữ liệu là MAR hoặc MNAR, loại bỏ sẽ gây thiên lệch cho các mô hình xây dựng trên dữ liệu này.
  • Khi đó, cần nội suy/điền giá trị thiếu.
  • Nhiều phương pháp điền giả định MAR, nên cần phát hiện nó.
Xử lý dữ liệu khuyết bằng Imputation trong R

Kiểm định thống kê

Ví dụ: t-test cho chênh lệch trung bình

  1. Đặt giả định (giả thuyết không): các trung bình bằng nhau.
  2. Tính thống kê kiểm định từ dữ liệu.
  3. Tính p-value: xác suất thu được thống kê kiểm định như vậy, giả sử giả thuyết không đúng?

p-value nhỏ → bác bỏ giả thuyết không → trung bình khác nhau


p-value lớn → không bác bỏ giả thuyết không → trung bình bằng nhau

Xử lý dữ liệu khuyết bằng Imputation trong R

Kiểm tra MAR

Mục tiêu: kiểm tra tỷ lệ giá trị thiếu ở một biến có khác nhau theo giá trị của biến khác không.

Ví dụ: tỷ lệ thiếu ở PhysActive có khác giữa nam và nữ không?

Quy trình kiểm định:

  1. Tạo biến giả cho biết PhysActive có thiếu hay không.
  2. Dùng t-test để kiểm tra trung bình biến giả này có khác giữa nam và nữ không.
  3. Nếu p-value nhỏ (ví dụ < 0,05), trung bình khác nhau → dữ liệu là MAR.
Xử lý dữ liệu khuyết bằng Imputation trong R

Kiểm tra trong thực tế

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)
Xử lý dữ liệu khuyết bằng Imputation trong R

Diễn giải kết quả kiểm định

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
Xử lý dữ liệu khuyết bằng Imputation trong R

Hãy luyện tập nhận diện cơ chế dữ liệu thiếu!

Xử lý dữ liệu khuyết bằng Imputation trong R

Preparing Video For Download...