1. Kiểm tra cơ chế khuyết

1.1. Sử dụng hàm có sẵn

library(visdat)
library(naniar)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)


Thực hành data attenu (data có sẵn trong R)

head(attenu)


Vì có sẵn trong R, có thể dùng help() để hiểu hơn và dataset này

help(attenu)


Kiểm tra dataset có bị khuyết hay không?

anyNA(attenu)
## [1] TRUE


Tính số ô bị khuyết trên từng cột, thấy được dataset này chỉ bị khuyết trên cột station

colSums(is.na(attenu))
##   event     mag station    dist   accel 
##       0       0      16       0       0


Đếm số quan sát bị khuyết có trong dataset

sum(!complete.cases(attenu))
## [1] 16

1.2. Package visdat

Xem được tổng quan về dataset:

  • Thông tin các cột, kiểu dữ liệu từng cột

  • Phân bố của giá trị khuyết trên dataset

vis_dat(attenu)


1.3. Little’s Test

  • H0: dataset có cơ chế khuyết theo MCAR

  • H1: không phải MCAR

So sánh p.value với mức ý nghĩa (alpha) đề ra:

  • 10%

  • 5%

  • 1%

p.value < alpha -> bác bỏ H0

p.value > alpha -> chưa có cơ sở bác bỏ H0

Kết luận: vì p-value = 0.0004953635 nên bác bỏ H0 hay dataset này không theo cơ chế MCAR

mcar_test(attenu)


2. Xử lý giá trị khuyết

2.1. Xoá giá trị khuyết

Sử dụng dataset airquality về thông tin chất lượng không khí theo ngày, thấy được bị khuyết tại cột Ozone và Solar.R

colSums(is.na(airquality))
##   Ozone Solar.R    Wind    Temp   Month     Day 
##      37       7       0       0       0       0


2.1.1. Xoá theo cột

Trường hợp cột bị khuyết rất nặng, không thể xử lý

head(select(airquality, -Ozone))


2.1.2. Xoá theo dòng (xoá quan sát) (listwise deletion)

  • Nhiều quan sát khuyết cùng trên nhiều cột

  • Số quan sát khuyết chiếm tỷ lệ ít

nrow(airquality)
## [1] 153
na.omit(airquality)


2.1.3. Xoá theo cặp (pairwise deletion)

Chỉ xử lý giá trị khuyết khi biến đó có trong phân tích

# gói tidyr
drop_na(airquality, Solar.R)

2.2. Nhập giá trị khuyết (imputation)