BÀI 1: KHÁM BỆNH CHO DỮ LIỆU THÔ
Nhiệm vụ:
#install.packages("pacman")
pacman::p_load(rio,tidyverse)
df <- rio::import("C:/Users/84383/Desktop/R Coursera/raw_health_survey.csv")
summary(df)
## ID Age Gender Heart_Rate
## Min. : 1.00 Min. : 0.00 Length:250 Min. : 50.00
## 1st Qu.: 63.25 1st Qu.: 37.25 Class :character 1st Qu.: 68.50
## Median :125.50 Median : 46.00 Mode :character Median : 76.00
## Mean :125.50 Mean : 56.60 Mean : 75.86
## 3rd Qu.:187.75 3rd Qu.: 53.00 3rd Qu.: 82.50
## Max. :250.00 Max. :999.00 Max. :106.00
## NA's :15
## Weight Income
## Min. : 17.70 Length:250
## 1st Qu.: 54.70 Class :character
## Median : 65.35 Mode :character
## Mean : 66.04
## 3rd Qu.: 76.58
## Max. :103.20
## NA's :20
glimpse(df)
## Rows: 250
## Columns: 6
## $ ID <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, …
## $ Age <int> 51, 32, 47, 44, 37, 15, 36, 33, 46, 39, 40, 999, 42, 42, 14…
## $ Gender <chr> "nam", "nu", "1", "0", "nam", "Female", "F", "0", "M", "nu"…
## $ Heart_Rate <int> 73, 80, 61, 71, 83, 76, 78, 62, 80, 70, 58, 81, 75, 68, 78,…
## $ Weight <dbl> 103.2, NA, 74.3, NA, 75.8, NA, NA, NA, 57.3, NA, NA, NA, NA…
## $ Income <chr> "High", "Medium", "High", NA, "High", "Medium", "Medium", "…
#Từ kết quả summary(), bạn phát hiện ra những điểm bất thường (Outliers) nào vô lí về mặt sinh học? Ở biến Gender, bạn thấy người nhập liệu đã gây ra thảm họa gì?
Trả lời: Trong biến Age, max là 999 vô lí. Trong biến Gender, người nhập liệu không thống nhất cách gọi nam/nữ, 1/0, M/F
BÀI 2: LÀM SẠCH DỮ LIỆU (DATA CLEANING)
Nhiệm vụ:
#Dùng ngữ pháp dplyr (mutate, filter, ifelse, case_when) để dọn dẹp. Đổi các lỗi tuổi vô lí thành NA. Đưa biến Gender về một chuẩn duy nhất là “Male” và “Female”. Lưu tất cả vào một bảng dữ liệu mới tên là df_clean.
library(dplyr)
df_clean <- df %>%
mutate(
Age = ifelse(Age > 100, NA, Age), #đổi lỗi tuổi
Gender = case_when(
Gender %in% c("1","M","nam") ~ "Male",
Gender %in% c("0","F","nu") ~ "Female",
TRUE ~ NA_character_ #đưa biến Gender về 1 kiểu
)
)
#Kiểm tra lại
summary(df_clean)
## ID Age Gender Heart_Rate
## Min. : 1.00 Min. : 0.00 Length:250 Min. : 50.00
## 1st Qu.: 63.25 1st Qu.:37.00 Class :character 1st Qu.: 68.50
## Median :125.50 Median :45.00 Mode :character Median : 76.00
## Mean :125.50 Mean :45.16 Mean : 75.86
## 3rd Qu.:187.75 3rd Qu.:53.00 3rd Qu.: 82.50
## Max. :250.00 Max. :77.00 Max. :106.00
## NA's :3 NA's :15
## Weight Income
## Min. : 17.70 Length:250
## 1st Qu.: 54.70 Class :character
## Median : 65.35 Mode :character
## Mean : 66.04
## 3rd Qu.: 76.58
## Max. :103.20
## NA's :20
#So sánh bảng dữ liệu trước và sau khi làm sạch, bạn cảm thấy thế nào về vai trò của việc mã hóa dữ liệu?
Trả lời: Về biến Age, số liệu hợp lí và đảm bảo không gây nhiễu khi phân tích số liệu. Biến Gender đồng nhất sẽ giúp bộ số liệu rõ ràng và không gây khó khăn khi đọc kết quả sau này.
BÀI 3: KHOẢNG TRỐNG TỬ THẦN (MISSING DATA)
#Dựa vào lý thuyết Buổi 2, hãy áp định nghĩa và phân loại chính xác 3 cơ chế cho 3 cột biến số trên. Giải thích lí do.
Trả lời: MCAR – Missing Completely At Random: Lỗi khách quan ngẫu nhiên khi lấy mẫu, không liên quan đến đặc điểm sinh học của bệnh nhân. MAR – Missing At Random: Mất dữ liệu liên quan đến biến khác MNAR – Missing Not At Random: Mất dữ liệu do chính giá trị đó, không phải ngẫu nhiên mất mà do nguyên nhân chủ quan.