Các thư viện sử dụng
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
library(datawizard)# dùng gộp khoảng dữ liệu
library(tidyverse)# dùng %>%
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✔ tibble 3.2.1 ✔ dplyr 1.1.4
## ✔ tidyr 1.2.0 ✔ stringr 1.4.0
## ✔ readr 2.1.3 ✔ forcats 0.5.1
## ✔ purrr 0.3.4
## Warning: package 'tibble' was built under R version 4.2.3
## Warning: package 'dplyr' was built under R version 4.2.3
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
Nhâp dữ liệu
dt <- read.csv('https://math.ued.udn.vn/wp-content/uploads/2024/10/So_lieu.csv')
dt$Phuong_phap_phau_thuat_tai_vu<-replace(dt$Phuong_phap_phau_thuat_tai_vu,dt$Phuong_phap_phau_thuat_tai_vu=="Cắt vú triệt căn","cắt vú")
dt$Phuong_phap_phau_thuat_tai_vu<-replace(dt$Phuong_phap_phau_thuat_tai_vu,dt$Phuong_phap_phau_thuat_tai_vu=="Cắt vú + tái tạo","cắt vú")
Bài toán 1 (2 tỉ lệ của 2 nhóm). So sánh tỉ lệ bảo tồn vú của 2 nhóm Có điều trị tân bổ trợ và Không điều trị tân bổ trợ.
dt %>% count(Dieu_tri_tan_bo_tro,Phuong_phap_phau_thuat_tai_vu)->sl_theo_tan_bo_tro #Đếm số lượng
group_by(sl_theo_tan_bo_tro,Dieu_tri_tan_bo_tro)%>% mutate(ti_le = 100*round(n/sum(n),3))->sl_theo_tan_bo_tro # Tính tỉ lệ theo nhóm
sl_theo_tan_bo_tro
## # A tibble: 4 × 4
## # Groups: Dieu_tri_tan_bo_tro [2]
## Dieu_tri_tan_bo_tro Phuong_phap_phau_thuat_tai_vu n ti_le
## <chr> <chr> <int> <dbl>
## 1 có bảo tồn 49 33.1
## 2 có cắt vú 99 66.9
## 3 không bảo tồn 208 28.8
## 4 không cắt vú 513 71.2
ggplot(sl_theo_tan_bo_tro)+
aes(x=Dieu_tri_tan_bo_tro,y=ti_le, fill=Phuong_phap_phau_thuat_tai_vu)+
geom_bar(position="dodge", stat="identity") +
geom_text(aes(label=ti_le), position = position_dodge(0.90),vjust=-0.5)+
labs(y = "Tỉ lệ (%)", x="Điều trị tân bổ trợ", fill="Phương pháp phẫu thuật tại vú") # Vẽ biểu đồ
Nhóm “Có điều trị tân bổ trợ” có 49 trường hợp bảo tồn vú trong số 49+99=148 trường hợp.
Nhóm “Không điều trị tân bổ trợ” có 208 trường hợp bảo tồn vú trong số 208+513=721 trường hợp.
Gọi \(p_1\) và \(p_2\) lần lượt là tỉ lệ bảo tồn vú trong nhóm “Có điều trị tân bổ trợ” và “Không điều trị tân bổ trợ”
Bài toán kiểm định giả thuyết: \(H_0:p_1=p_2\) với đối thuyết \(H_1:p_1\neq p_2\)
prop.test(x=c(49,208),n=c(148, 721))
##
## 2-sample test for equality of proportions with continuity correction
##
## data: c(49, 208) out of c(148, 721)
## X-squared = 0.87484, df = 1, p-value = 0.3496
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.04419519 0.12938093
## sample estimates:
## prop 1 prop 2
## 0.3310811 0.2884882
Bài toán 2 (So sánh tỉ lệ của nhiều nhóm). So sánh tỉ lệ bảo tồn vú trong 3 phân nhóm sinh học
dt2<-subset(dt,dt$Phan_nhom_sinh_hoc !="")
dt2 %>% count(Phan_nhom_sinh_hoc,Phuong_phap_phau_thuat_tai_vu)->sl_theo_phan_nhom_sinh_hoc #Đếm số lượng đưa vào biến st_theo_nam
group_by(sl_theo_phan_nhom_sinh_hoc,Phan_nhom_sinh_hoc)%>% mutate(ti_le = 100*round(n/sum(n),3))->sl_theo_phan_nhom_sinh_hoc
sl_theo_phan_nhom_sinh_hoc
## # A tibble: 8 × 4
## # Groups: Phan_nhom_sinh_hoc [4]
## Phan_nhom_sinh_hoc Phuong_phap_phau_thuat_tai_vu n ti_le
## <chr> <chr> <int> <dbl>
## 1 Her2 (+) bảo tồn 51 22.9
## 2 Her2 (+) cắt vú 172 77.1
## 3 Luminal A bảo tồn 34 36.6
## 4 Luminal A cắt vú 59 63.4
## 5 Luminal B bảo tồn 126 30.1
## 6 Luminal B cắt vú 292 69.9
## 7 Tam âm bảo tồn 46 34.8
## 8 Tam âm cắt vú 86 65.2
ggplot(sl_theo_phan_nhom_sinh_hoc)+
aes(x=Phan_nhom_sinh_hoc,y=ti_le, fill=Phuong_phap_phau_thuat_tai_vu)+
geom_bar(position="dodge", stat="identity") +
geom_text(aes(label=ti_le), position = position_dodge(0.90),vjust=-0.5)+
labs(y = "Tỉ lệ (%)", x="Phân nhóm sinh học", fill="Phương pháp phẫu thuật tại vú") # Vẽ biểu đồ
Kiểm định giả thuyết: \(H_0\): tỉ lệ bảo tồn vú của các phân nhóm sinh học bằng nhau, \(H1\): có ít nhất 2 phân nhóm sinh học có tỉ lệ bảo tồn khác nhau.
Để kiểm định dạng bài toán so sánh tỉ lệ theo cột ta sử dụng kiểm định khi-bình phương:
x<-matrix(sl_theo_phan_nhom_sinh_hoc$n,ncol=2,byrow = T)# chuyển số liệu thành 2 cột ("bảo tồn vú" và "cắt vú")
x
## [,1] [,2]
## [1,] 51 172
## [2,] 34 59
## [3,] 126 292
## [4,] 46 86
chisq.test(x)
##
## Pearson's Chi-squared test
##
## data: x
## X-squared = 8.797, df = 3, p-value = 0.03212