Ngày 1: Giới thiệu ngôn ngữ R

Việc 2. Cài đặt các gói phân tích (packages)

#install.packages(c("tidyverse", "dplyr", "lessR",  "table1", "compareGroups", "ggplot2", "gridExtra", "ggthemes", "ggfortify", "simpleboot", "boot", "relaimpo", "carData", "caret", "BMA", "glmnet", "epiDisplay"), dependencies = T)

Việc 3. Đọc dữ liệu vào R

PROMPT: Đọc dữ liệu birthwt.csv vừa được uploaded vào R và đặt tên là bw.

# Đọc trực tiếp:
  # Tìm đường dẫn với file.choose()
  # t = file.choose()
  # t
bw = read.csv("C:\\Thach\\VN trips\\2025_3Jun\\VNUHCM\\Datasets\\birthwt.csv")

# Đọc dữ liệu bằng lệnh "Import Dataset"

Việc 4. Thông tin về dữ liệu bw

4.1 Có bao nhiêu biến số và quan sát

PROMPT: Có bao nhiêu biến số và quan sát trong dữ liệu bw

dim(bw)
## [1] 189  11

4.2 Liệt kê 6 quan sát đầu tiên

PROMPT: Liệt kê 6 quan sát đầu tiên

head(bw)
##   id low age lwt race smoke ptl ht ui ftv  bwt
## 1 85   0  19 182    2     0   0  0  1   0 2523
## 2 86   0  33 155    3     0   0  0  0   3 2551
## 3 87   0  20 105    1     1   0  0  0   1 2557
## 4 88   0  21 108    1     1   0  0  1   2 2594
## 5 89   0  18 107    1     1   0  0  1   0 2600
## 6 91   0  21 124    3     0   0  0  0   0 2622

Việc 5. Biên tập dữ liệu:

5.1 Tạo biến số mới mwt

PROMPT: Tạo biến số mới mwt là cân nặng của mẹ tính bằng kg từ biến số lwt tính bằng pound

bw$mwt = bw$lwt*0.453592
head(bw)
##   id low age lwt race smoke ptl ht ui ftv  bwt      mwt
## 1 85   0  19 182    2     0   0  0  1   0 2523 82.55374
## 2 86   0  33 155    3     0   0  0  0   3 2551 70.30676
## 3 87   0  20 105    1     1   0  0  0   1 2557 47.62716
## 4 88   0  21 108    1     1   0  0  1   2 2594 48.98794
## 5 89   0  18 107    1     1   0  0  1   0 2600 48.53434
## 6 91   0  21 124    3     0   0  0  0   0 2622 56.24541

5.2 Tạo biến số mới ethnicity

PROMPT: Tạo biến số mới ethnicity là biến factor với điều kiện sau: Nếu race = 1 thì ethnicity = “White” Nếu race = 2 thì ethnicity = “Black” Nếu race = 3 thì ethnicity = “Other”

bw$ethnicity <- factor(bw$race,
                        levels = c(1, 2, 3),
                        labels = c("White","Black", "Other"))
# hoặc
bw$ethnicity <- factor(
  ifelse(bw$race == 1, "White",
         ifelse(bw$race == 2, "Black", "Other"))
)

head(bw)
##   id low age lwt race smoke ptl ht ui ftv  bwt      mwt ethnicity
## 1 85   0  19 182    2     0   0  0  1   0 2523 82.55374     Black
## 2 86   0  33 155    3     0   0  0  0   3 2551 70.30676     Other
## 3 87   0  20 105    1     1   0  0  0   1 2557 47.62716     White
## 4 88   0  21 108    1     1   0  0  1   2 2594 48.98794     White
## 5 89   0  18 107    1     1   0  0  1   0 2600 48.53434     White
## 6 91   0  21 124    3     0   0  0  0   0 2622 56.24541     Other

5.3 Tạo tập dữ liệu bw1

PROMPT: Tạo 1 tập dữ liệu bw1 chỉ gồm 3 biến số id, low và bwt. Dữ liệu này có bao nhiêu biến số và quan sát?

bw1 = bw[, c("id", "low", "bwt")]
dim(bw1)
## [1] 189   3
head(bw1)
##   id low  bwt
## 1 85   0 2523
## 2 86   0 2551
## 3 87   0 2557
## 4 88   0 2594
## 5 89   0 2600
## 6 91   0 2622

5.4 Tạo tập dữ liệu bw2

PROMPT: Tạo 1 tập dữ liệu bw2 chỉ gồm những thai phụ có cân nặng thấp (low = 1). Dữ liệu này có bao nhiêu biến số và quan sát

bw2 = subset(bw, low == 1)
# hoặc
bw2 <- bw[bw$low == 1, ]

dim(bw2)
## [1] 59 13
head(bw2)
##     id low age lwt race smoke ptl ht ui ftv  bwt      mwt ethnicity
## 131  4   1  28 120    3     1   1  0  1   0  709 54.43104     Other
## 132 10   1  29 130    1     0   0  0  1   2 1021 58.96696     White
## 133 11   1  34 187    2     1   0  1  0   0 1135 84.82170     Black
## 134 13   1  25 105    3     0   1  1  0   0 1330 47.62716     Other
## 135 15   1  25  85    3     0   0  0  1   0 1474 38.55532     Other
## 136 16   1  27 150    3     0   0  0  0   0 1588 68.03880     Other

5.5 Tạo tập dữ liệu bw4

PROMPT: Tạo 1 tập dữ liệu bw3 chỉ gồm những thai phụ có cân nặng thấp (low = 1) và có hút thuốc trong lúc mang thai (smoke = 1). Dữ liệu này có bao nhiêu biến số và quan sát?

bw3 = subset(bw, low == 1 & smoke == 1)
# hoặc
bw3 <- bw[bw$low == 1 & bw$smoke == 1, ]

dim(bw3)
## [1] 30 13
head(bw3)
##     id low age lwt race smoke ptl ht ui ftv  bwt      mwt ethnicity
## 131  4   1  28 120    3     1   1  0  1   0  709 54.43104     Other
## 133 11   1  34 187    2     1   0  1  0   0 1135 84.82170     Black
## 140 20   1  21 165    1     1   0  1  0   1 1790 74.84268     White
## 141 22   1  32 105    1     1   0  0  0   0 1818 47.62716     White
## 142 23   1  19  91    1     1   2  0  1   0 1885 41.27687     White
## 145 26   1  25  92    1     1   0  0  0   0 1928 41.73046     White

Việc 6. Phân tích mô tả

6.1 Mô tả đặc điểm tuổi mẹ, cân nặng mẹ và cân nặng con

PROMPT: Sử dụng gói lệnh ‘table1’ mô tả đặc điểm tuổi của mẹ (age), cân nặng của mẹ (lwt) và cân nặng của con (bwt)

library(table1)
## 
## Attaching package: 'table1'
## The following objects are masked from 'package:base':
## 
##     units, units<-
table1(~ age + lwt + bwt, data = bw)
Overall
(N=189)
age
Mean (SD) 23.2 (5.30)
Median [Min, Max] 23.0 [14.0, 45.0]
lwt
Mean (SD) 130 (30.6)
Median [Min, Max] 121 [80.0, 250]
bwt
Mean (SD) 2940 (729)
Median [Min, Max] 2980 [709, 4990]

table1(~ age + lwt + bwt, data = bw, render.continuous = c(. = “Mean (SD)”, . = “Median [Q1, Q3]”, . = “Median [min, max]” ))

6.2 Mô tả đặc điểm tuổi mẹ, cân nặng mẹ, tình trạng hút thuốc trong thai kỳ, chủng tộc và cân nặng con theo tình trạng trẻ sanh thiếu cân

PROMPT: Sử dụng gói lệnh ‘table1’ mô tả đặc điểm tuổi mẹ, cân nặng mẹ, tình trạng hút thuốc trong thai kỳ, chủng tộc và cân nặng con theo tình trạng trẻ sanh thiếu cân

# Chuyển thành biến factor
bw$low <- factor(bw$low, levels = c(0, 1), labels = c("Normal weight", "Low birth weight"))
bw$smoke <- factor(bw$smoke, levels = c(0, 1), labels = c("Non-smoker", "Smoker"))
bw$race <- factor(bw$race, levels = c(1, 2, 3), labels = c("White", "Black", "Other"))

table1(~ age + lwt + smoke + race + bwt | low, data = bw)
Normal weight
(N=130)
Low birth weight
(N=59)
Overall
(N=189)
age
Mean (SD) 23.7 (5.58) 22.3 (4.51) 23.2 (5.30)
Median [Min, Max] 23.0 [14.0, 45.0] 22.0 [14.0, 34.0] 23.0 [14.0, 45.0]
lwt
Mean (SD) 133 (31.7) 122 (26.6) 130 (30.6)
Median [Min, Max] 124 [85.0, 250] 120 [80.0, 200] 121 [80.0, 250]
smoke
Non-smoker 86 (66.2%) 29 (49.2%) 115 (60.8%)
Smoker 44 (33.8%) 30 (50.8%) 74 (39.2%)
race
White 73 (56.2%) 23 (39.0%) 96 (50.8%)
Black 15 (11.5%) 11 (18.6%) 26 (13.8%)
Other 42 (32.3%) 25 (42.4%) 67 (35.4%)
bwt
Mean (SD) 3330 (478) 2100 (391) 2940 (729)
Median [Min, Max] 3270 [2520, 4990] 2210 [709, 2500] 2980 [709, 4990]

Việc 7. Ghi lại tất cả các hàm/lệnh trên và chia sẻ lên tài khoản rpubs