Bài 1: KHÁM BỆNH CHO DỮ LIỆU THÔ

1. Cài đặt pacman nếu máy chưa có

if(!require("pacman"))install.packages("pacman")

2. Tải các thư viện cần thiết

pacman::p_load(rio,tidyverse)

3. Nạp dữ liệu từ file

df <- rio::import("E:/Tung/BaitapR/messy_clinical_data.csv")

4. Kiểm tra tổng quan

glimpse(df)
## Rows: 1,000
## Columns: 7
## $ Patient_ID  <chr> "PT0001", "PT0002", "PT0003", "PT0004", "PT0005", "PT0006"…
## $ Age         <int> 61, 42, 57, 54, 47, 25, 46, 43, 56, 49, 50, 46, 52, 52, 24…
## $ Gender      <int> 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0…
## $ BMI         <dbl> 18.0, 23.1, 21.0, 25.2, 26.6, 25.4, 25.0, 27.8, 23.1, 14.2…
## $ Cholesterol <dbl> 4.14, 5.65, 6.06, 5.98, 4.47, 4.26, 3.98, 5.55, 5.51, 4.99…
## $ Treatment   <chr> "Drug_A", "Drug_A", "Drug_A", "Drug_A", "Drug_B", "Drug_B"…
## $ Outcome     <int> 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1…
summary(df)
##   Patient_ID             Age            Gender          BMI       
##  Length:1000        Min.   :18.00   Min.   :0.00   Min.   :10.30  
##  Class :character   1st Qu.:47.00   1st Qu.:0.00   1st Qu.:22.50  
##  Mode  :character   Median :55.00   Median :0.00   Median :25.00  
##                     Mean   :55.16   Mean   :0.48   Mean   :24.96  
##                     3rd Qu.:62.00   3rd Qu.:1.00   3rd Qu.:27.50  
##                     Max.   :96.00   Max.   :1.00   Max.   :35.10  
##                                                    NA's   :60     
##   Cholesterol     Treatment            Outcome     
##  Min.   :1.860   Length:1000        Min.   :0.000  
##  1st Qu.:4.350   Class :character   1st Qu.:0.000  
##  Median :5.090   Mode  :character   Median :1.000  
##  Mean   :5.114                      Mean   :0.595  
##  3rd Qu.:5.860                      3rd Qu.:1.000  
##  Max.   :8.390                      Max.   :1.000  
##  NA's   :80

Câu hỏi: 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: Mình không phát hiện gì bất thường

BÀI 2: LÀM SẠCH DỮ LIỆU (DATA CLEANING)

1. Đổi lỗi tuổi vô lý thành NA và chuẩn hóa biến Gender về Male và Female

df_clean <- df %>%
  mutate(
    Age = case_when(
      Age < 0 ~ NA_real_,
      Age > 120 ~ NA_real_,
      TRUE ~ as.numeric(Age)
    ),
    Gender = case_when(
      Gender %in% c("1") ~ "Male",
      Gender %in% c("0") ~ "Female",
      TRUE ~ NA_character_
    )
  )

2. Kiểm tra cho chắc

summary(df_clean)
##   Patient_ID             Age           Gender               BMI       
##  Length:1000        Min.   :18.00   Length:1000        Min.   :10.30  
##  Class :character   1st Qu.:47.00   Class :character   1st Qu.:22.50  
##  Mode  :character   Median :55.00   Mode  :character   Median :25.00  
##                     Mean   :55.16                      Mean   :24.96  
##                     3rd Qu.:62.00                      3rd Qu.:27.50  
##                     Max.   :96.00                      Max.   :35.10  
##                                                        NA's   :60     
##   Cholesterol     Treatment            Outcome     
##  Min.   :1.860   Length:1000        Min.   :0.000  
##  1st Qu.:4.350   Class :character   1st Qu.:0.000  
##  Median :5.090   Mode  :character   Median :1.000  
##  Mean   :5.114                      Mean   :0.595  
##  3rd Qu.:5.860                      3rd Qu.:1.000  
##  Max.   :8.390                      Max.   :1.000  
##  NA's   :80
table(df_clean$Gender, useNA = "always")
## 
## Female   Male   <NA> 
##    520    480      0

Câu hỏi: 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: Mình thấy mã hóa xong dữ liệu dễ đọc hơn

Bài 3: KHOẢNG TRỐNG TỬ THẦN (MISSING DATA)

Câu hỏi: 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: Theo mình hiểu từ buổi dạy 2 thì mình có câu trả lời như sau:

-MCAR: Là thiếu hoàn toàn ngẫu nhiên không phụ thuộc vào biến khác ví dụ như huyết áp đo thiếu do máy hết pin.

-MAR: Là thiếu phụ thuộc vào biến khác ví dụ như cân nặng thiếu do nữ không muốn khai cân nặng.

-MNAR: Thiếu do chính biến đó ví dụ như người nào có hoạt động tình dục không lành mạnh người ta từ chối khai báo.