Bội suy nội suy bằng bootstrapping

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

Michal Oleszak

Machine Learning Engineer

Bất định do nội suy

  • Nội suy thường là bước đầu trước phân tích hoặc mô hình hóa.
  • Giá trị thiếu được ước lượng có kèm bất định.
  • Cần tính đến bất định này trong mọi phân tích trên dữ liệu đã nội suy.

Tiêu đề bài báo của Ranjit Lall, "How Multiple Imputation Makes a Difference."

Trong gần một nửa nghiên cứu, kết quả chính biến mất

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

Bootstrap

Bootstrapping = lấy mẫu hàng có hoàn lại để có dữ liệu cùng kích thước

Hai khung dữ liệu minh họa. Bên trái, "dữ liệu gốc" có mỗi hàng màu khác nhau, biểu thị giá trị khác nhau. Bên phải, "mẫu bootstrap" lặp lại một số hàng màu từ "dữ liệu gốc", và thiếu một số hàng khác.

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

Bội suy bằng bootstrapping

Sơ đồ 5 bước nội suy bằng bootstrapping. Từ "dữ liệu gốc", ba mũi tên tới các "mẫu bootstrap khác nhau". Từ mỗi mẫu, mũi tên tới bước "Nội suy". Tiếp theo tới "Mô hình/ phân tích". Cuối cùng hợp về một nút "Phân phối kết quả".

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

Nội suy bootstrapped: ưu & nhược

Ưu:

  • Dùng với mọi phương pháp nội suy.
  • Xấp xỉ được đại lượng khó tính giải tích.
  • Hoạt động với dữ liệu MCAR và MAR.

Nhược:

  • Chậm khi nhiều bản lặp hoặc tính toán tốn thời gian.
Xử lý dữ liệu khuyết bằng Imputation trong R

Bootstrapping trong thực tế

calc_correlation <- function(data, indices) {






  # Trả về hệ số tương quan
  return(corr_coeff)
}
Xử lý dữ liệu khuyết bằng Imputation trong R

Bootstrapping trong thực tế

calc_correlation <- function(data, indices) {
  # Lấy mẫu bootstrap
  data_boot <- data[indices, ]




  # Trả về hệ số tương quan
  return(corr_coeff)
}
Xử lý dữ liệu khuyết bằng Imputation trong R

Bootstrapping trong thực tế

calc_correlation <- function(data, indices) {
  # Lấy mẫu bootstrap
  data_boot <- data[indices, ]
  # Nội suy bằng kNN
  data_imp <- kNN(data_boot)


  # Trả về hệ số tương quan
  return(corr_coeff)
}
Xử lý dữ liệu khuyết bằng Imputation trong R

Bootstrapping trong thực tế

calc_correlation <- function(data, indices) {
  # Lấy mẫu bootstrap
  data_boot <- data[indices, ]
  # Nội suy bằng kNN
  data_imp <- kNN(data_boot)
  # Tính tương quan giữa Weight và TotChol
  corr_coeff <- cor(data_imp$Weight, data_imp$TotChol)
  # Trả về hệ số tương quan
  return(corr_coeff)
}
Xử lý dữ liệu khuyết bằng Imputation trong R

Bootstrapping trong thực tế

library(boot)
boot_results <- boot(nhanes, statistic = calc_correlation, R = 50)
print(boot_results)
ORDINARY NONPARAMETRIC BOOTSTRAP

Call:
boot(data = nhanes, statistic = calc_correlation, R = 50)

Bootstrap Statistics :
      original      bias    std. error
t1* 0.03028306 0.007385452  0.04207152
Xử lý dữ liệu khuyết bằng Imputation trong R

Vẽ kết quả bootstrap

plot(boot_results)

Biểu đồ histogram và Q-Q cho phân phối kết quả bootstrap. Cả hai cho thấy phân phối gần chuẩn.

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

Khoảng tin cậy bằng bootstrapping

boot_ci <- boot.ci(boot_results, conf = 0.95, type = "norm")
print(boot_ci)
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 50 bootstrap replicates

CALL : 
boot.ci(boot.out = boot_results, conf = 0.95, type = "norm")

Intervals : 
Level      Normal        
95%   (-0.0596,  0.1054 )  
Calculations and Intervals on Original Scale
Xử lý dữ liệu khuyết bằng Imputation trong R

Let's practice bootstrapping!

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

Preparing Video For Download...