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\)\(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