#Việc 1. Đọc dữ liệu vào R
ob=read.csv("/Users/daodanglinh/Desktop/Màn hình nền - ĐÀO ĐĂNG LINH/Phân tích số liệu/obesity data.csv")
dim(ob)
## [1] 1217 13
library(table1)
##
## Attaching package: 'table1'
## The following objects are masked from 'package:base':
##
## units, units<-
table1(~ age + gender + bmi + WBBMC + wbbmd + fat + lean + hypertension + diabetes, data = ob)
| Overall (N=1217) |
|
|---|---|
| age | |
| Mean (SD) | 47.2 (17.3) |
| Median [Min, Max] | 48.0 [13.0, 88.0] |
| gender | |
| F | 862 (70.8%) |
| M | 355 (29.2%) |
| bmi | |
| Mean (SD) | 22.4 (3.06) |
| Median [Min, Max] | 22.2 [14.5, 37.1] |
| WBBMC | |
| Mean (SD) | 1720 (363) |
| Median [Min, Max] | 1710 [695, 3040] |
| wbbmd | |
| Mean (SD) | 1.01 (0.113) |
| Median [Min, Max] | 1.01 [0.650, 1.35] |
| fat | |
| Mean (SD) | 17300 (5210) |
| Median [Min, Max] | 17000 [4280, 40800] |
| lean | |
| Mean (SD) | 35500 (7030) |
| Median [Min, Max] | 33600 [19100, 63100] |
| hypertension | |
| Mean (SD) | 0.507 (0.500) |
| Median [Min, Max] | 1.00 [0, 1.00] |
| diabetes | |
| Mean (SD) | 0.111 (0.314) |
| Median [Min, Max] | 0 [0, 1.00] |
table1(~ age + bmi + WBBMC + wbbmd + fat + lean + as.factor(hypertension) + as.factor(diabetes) | gender, data = ob)
| F (N=862) |
M (N=355) |
Overall (N=1217) |
|
|---|---|---|---|
| age | |||
| Mean (SD) | 48.6 (16.4) | 43.7 (18.8) | 47.2 (17.3) |
| Median [Min, Max] | 49.0 [14.0, 85.0] | 44.0 [13.0, 88.0] | 48.0 [13.0, 88.0] |
| bmi | |||
| Mean (SD) | 22.3 (3.05) | 22.7 (3.04) | 22.4 (3.06) |
| Median [Min, Max] | 22.1 [15.2, 37.1] | 22.5 [14.5, 34.7] | 22.2 [14.5, 37.1] |
| WBBMC | |||
| Mean (SD) | 1600 (293) | 2030 (336) | 1720 (363) |
| Median [Min, Max] | 1610 [695, 2660] | 2030 [1190, 3040] | 1710 [695, 3040] |
| wbbmd | |||
| Mean (SD) | 0.988 (0.111) | 1.06 (0.101) | 1.01 (0.113) |
| Median [Min, Max] | 0.990 [0.650, 1.35] | 1.06 [0.780, 1.34] | 1.01 [0.650, 1.35] |
| fat | |||
| Mean (SD) | 18200 (4950) | 15000 (5110) | 17300 (5210) |
| Median [Min, Max] | 17700 [6220, 40800] | 15100 [4280, 29900] | 17000 [4280, 40800] |
| lean | |||
| Mean (SD) | 32000 (3970) | 43800 (5820) | 35500 (7030) |
| Median [Min, Max] | 31500 [19100, 53400] | 43400 [28600, 63100] | 33600 [19100, 63100] |
| as.factor(hypertension) | |||
| 0 | 430 (49.9%) | 170 (47.9%) | 600 (49.3%) |
| 1 | 432 (50.1%) | 185 (52.1%) | 617 (50.7%) |
| as.factor(diabetes) | |||
| 0 | 760 (88.2%) | 322 (90.7%) | 1082 (88.9%) |
| 1 | 102 (11.8%) | 33 (9.3%) | 135 (11.1%) |
#Việc 4. So sánh đặc điểm mẫu nghiên cứu giữa nam và nữ:
library(compareGroups)
createTable(compareGroups(gender ~ age + bmi + WBBMC + wbbmd + fat + lean + hypertension + diabetes, data = ob))
##
## --------Summary descriptives table by 'gender'---------
##
## ________________________________________________
## F M p.overall
## N=862 N=355
## ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
## age 48.6 (16.4) 43.7 (18.8) <0.001
## bmi 22.3 (3.05) 22.7 (3.04) 0.013
## WBBMC 1599 (293) 2030 (336) <0.001
## wbbmd 0.99 (0.11) 1.06 (0.10) <0.001
## fat 18240 (4954) 14978 (5113) <0.001
## lean 32045 (3966) 43762 (5819) <0.001
## hypertension 0.50 (0.50) 0.52 (0.50) 0.527
## diabetes 0.12 (0.32) 0.09 (0.29) 0.181
## ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ob$hypert = as.factor(ob$hypertension)
ob$dm = as.factor(ob$diabetes)
createTable(compareGroups(gender ~ age + bmi + WBBMC + wbbmd + fat + lean + hypert + dm, data = ob))
##
## --------Summary descriptives table by 'gender'---------
##
## ___________________________________________
## F M p.overall
## N=862 N=355
## ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
## age 48.6 (16.4) 43.7 (18.8) <0.001
## bmi 22.3 (3.05) 22.7 (3.04) 0.013
## WBBMC 1599 (293) 2030 (336) <0.001
## wbbmd 0.99 (0.11) 1.06 (0.10) <0.001
## fat 18240 (4954) 14978 (5113) <0.001
## lean 32045 (3966) 43762 (5819) <0.001
## hypert: 0.569
## 0 430 (49.9%) 170 (47.9%)
## 1 432 (50.1%) 185 (52.1%)
## dm: 0.238
## 0 760 (88.2%) 322 (90.7%)
## 1 102 (11.8%) 33 (9.30%)
## ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
#Việc 4. Biểu đồ histogram ##4.1 Phân bố tỉ trọng mỡ ### phai goi cac package #### library(ggplot2) #### library(gridExtra)
library(ggplot2)
library(gridExtra)
p = ggplot(data = ob, aes(x = pcfat))
p1 = p + geom_histogram()
p2 = p + geom_histogram(fill = "blue", col = "white") + labs(x = "Tỉ trọng mỡ (%)", y = "Số người", title = "Phân bố tỉ trọng mỡ")
grid.arrange(p1, p2, ncol = 2)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## 4.2 Phân bố tỉ trọng mỡ theo giới tính
p = ggplot(data = ob, aes(x = pcfat, fill = gender))
p1 = p + geom_histogram(col="white") + labs(x = "Tỉ trọng mỡ", y = "Số người", title = "Phân bố tỉ trọng mỡ")
p2 = p + geom_density(alpha = 0.5) + labs(x = "Tỉ trọng mỡ", y = "Tỉ lệ phần trăm", title = "Phân bố tỉ trọng mỡ")
grid.arrange(p1, p2, ncol = 2)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
#Việc 5. Biểu đồ thanh ## 5.1 Tạo biến số OB từ biến bmi
ob$OB[ob$bmi< 18.5] = "Underweight"
ob$OB[ob$bmi>= 18.5 & ob$bmi< 25] = "Normal"
ob$OB[ob$bmi>= 25 & ob$bmi< 30] = "Overweight"
ob$OB[ob$bmi>= 30] = "Obese"
##5.2 Phân bố của tình trạng béo phì
p = ggplot(data = ob, aes(x = OB, fill = OB, col = OB))
p + geom_bar(position = "dodge")
ob$OB = factor(ob$OB, levels=c("Underweight",
"Normal", "Overweight", "Obese"))
p = ggplot(data = ob, aes(x = OB, y = pcfat, fill = gender, group = gender))
p + geom_bar(stat = "identity", position = "dodge")
#Việc 6. Soạn biểu đồ hộp ## 6.1 So sánh phân bố của tỉ trọng mỡ giữa
các nhóm béo phì ở nữ ### Tạo tập dữ liệu chỉ gồm nữ
women = subset(ob, gender == "F")
dim(women)
## [1] 862 16
p = ggplot(data = women, aes(x = OB, y = pcfat, fill = OB, col = OB))
p1 = p + geom_boxplot(col = "black") + geom_jitter(alpha = 0.05) + labs(x = "Tình trạng béo phì", y = "Tỉ trọng mỡ (%)") + ggtitle("Tỉ trọng mỡ theo tình trạng béo phì ở nữ")
p1
## Mô tả: 1.Tình trạng béo phì hình như tỉ lệ với tỷ trọng mỡ. 2.Càng
rộng, số liệu dao động càng nhiều. 3. Đường trung vị lệch lên trên hay
xuống dưới. 4.Để biết chính xác cần thêm thuật toán
ob$OB.n = factor(ob$OB, levels = c("Underweight", "Normal", "Overweight", "Obese"))
p = ggplot(data = ob, aes(x = OB.n, y = pcfat, fill = gender, col = gender))
p1 = p + geom_boxplot(col = "black") + geom_jitter(alpha = 0.05) + labs(x = "Tình trạng béo phì", y = "Tỉ trọng mỡ (%)") + ggtitle("Tỉ trọng mỡ theo tình trạng béo phì và giới tính")
p1
# nhận xét: có mối liên quan tăng dần. Trong nhóm nào thì tỉ lệ mỡ nam
nhỏ hơn nữ. Độ rộng của cột giữa cũng cần lưu ý. # Khi phân tích hồi
quy, các giá trị ngoại vi (Cực) có thể ảnh hưởng kết quả # dấu đen:
potential outlineers: nếu do kỹ thuật, do đo lường –> chọn sai –>
loại bỏ. Nếu là thực tế lâm sàng –> áp dụng phương pháp phân tích
khác dành cho các trường hợp như này. #Việc 7. Soạn biểu đồ tương quan
## 7.1 Mối liên quan giữa chỉ số khối cơ thể và tỉ trọng mỡ
p = ggplot(data = ob, aes(x = bmi, y = pcfat))
p1 = p + geom_point()
p2 = p + geom_point() + geom_smooth()
grid.arrange(p1, p2, ncol = 2)
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
### Mô tả 1 câu: Mối liên quan thuận giữa bmi và pcfat. Do độ tập trung
các số liệu không cao (phân tán nhiều), ý nghĩa không cao. ### Đường
xanh: giá trị trung bình ### Diện xám: khoảng tin cậy 95%. Tại sao đoạn
giữa hẹp và 2 đầu rộng: tại liên quan tới cỡ mẫu, càng trung tâm số liệu
càng nhiều, số liệu ngoại vi càng ít –>rộng.
p = ggplot(data = ob, aes(x = bmi, y = pcfat, fill = gender, col = gender))
p1 = p + geom_point() + geom_smooth() + labs(x = "Chỉ số khối cơ thể (kg/m2)", y = "Tỉ trọng mỡ (%)") + ggtitle("Liên quan giữa chỉ số khối cơ thể và tỉ trọng mỡ theo giới tính")
p1
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
### Nhận xét: ở bất kỳ chỉ số khối cơ thể nào, đa số tỉ trọng mỡ cao hơn
nam. BMI tăng thì tỷ trọng mỡ cao. Mối liên quan này thống nhất giữa nam
và nữ. ### Luôn cân bằng giữa sự chi tiết ### 2 mô hình parabol.