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
visdatXem đượ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)
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)
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
Trường hợp cột bị khuyết rất nặng, không thể xử lý
head(select(airquality, -Ozone))
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)
Chỉ xử lý giá trị khuyết khi biến đó có trong phân tích
# gói tidyr
drop_na(airquality, Solar.R)