Thư viện sử dụng

library(survival)
library(survminer)
## Loading required package: ggplot2
## Loading required package: ggpubr
## 
## Attaching package: 'survminer'
## The following object is masked from 'package:survival':
## 
##     myeloma

Nhâp dữ liệu

df <- read.csv('https://math.ued.udn.vn/wp-content/uploads/2024/10/So_lieu.csv')

Xử lỹ dữ liệu thô. Gộp 2 giá trị “Cắt vú triệt căn” và “Cắt vú + tái tạo” thành giá trị 2, “bảo tồn” thành giá trị 1

df$Phuong_phap_phau_thuat_tai_vu<-replace(df$Phuong_phap_phau_thuat_tai_vu,df$Phuong_phap_phau_thuat_tai_vu=="Cắt vú triệt căn",2)
df$Phuong_phap_phau_thuat_tai_vu<-replace(df$Phuong_phap_phau_thuat_tai_vu,df$Phuong_phap_phau_thuat_tai_vu=="Cắt vú + tái tạo",2)
df$Phuong_phap_phau_thuat_tai_vu<-replace(df$Phuong_phap_phau_thuat_tai_vu,df$Phuong_phap_phau_thuat_tai_vu=="bảo tồn",1)
df$Phuong_phap_phau_thuat_tai_vu<-as.numeric(df$Phuong_phap_phau_thuat_tai_vu)

df$Phuong_phap_phau_thuat_tai_hach<-replace(df$Phuong_phap_phau_thuat_tai_hach,df$Phuong_phap_phau_thuat_tai_hach=="Nạo hạch nách",2)
df$Phuong_phap_phau_thuat_tai_hach<-replace(df$Phuong_phap_phau_thuat_tai_hach,df$Phuong_phap_phau_thuat_tai_hach=="Sinh thiết hạch cửa",1)
df$Phuong_phap_phau_thuat_tai_hach<-as.numeric(df$Phuong_phap_phau_thuat_tai_hach)

Sửa lỗi các giá trị biến Thời gian tái phẫu thuật sau điều trị.

df$Thoi_gian_tai_phat_sau_dieu_tri<-replace(df$Thoi_gian_tai_phat_sau_dieu_tri,df$Thoi_gian_tai_phat_sau_dieu_tri=="không",0)
df$Thoi_gian_tai_phat_sau_dieu_tri<-replace(df$Thoi_gian_tai_phat_sau_dieu_tri,df$Thoi_gian_tai_phat_sau_dieu_tri=="",0)

df$Thoi_gian_tai_phat_sau_dieu_tri<-as.numeric(df$Thoi_gian_tai_phat_sau_dieu_tri)

Bổ sung biến tái phát. Ta cần quan tâm bệnh nhân không tái phát sau phẫu thuật, do đó nếu bệnh nhân không tái phát thì biến tái phát nhận giá trị 1, ngược lại nhận giá trị 2.

n<-nrow(df)
df$Tai_phat=rep(0,n)
df$Tai_phat=replace(df$Tai_phat,df$Thoi_gian_tai_phat_sau_dieu_tri==0,1)
df$Tai_phat=replace(df$Tai_phat,df$Thoi_gian_tai_phat_sau_dieu_tri>0,2)

Thay đổi giá trị biến Thời gian tái phẫu thuật sau điều trị đối với bệnh nhân không tái phát sau điều trị

for (i in 1:n)
  { if (df$Thoi_gian_tai_phat_sau_dieu_tri[i]==0)
  {df$Thoi_gian_tai_phat_sau_dieu_tri[i]=12*(2024-df$Nam_phau_thuat[i])}}

Thực hiện

fit <- survfit(Surv(df$Thoi_gian_tai_phat_sau_dieu_tri, df$Tai_phat) ~ df$Phuong_phap_phau_thuat_tai_vu, data = df)

ggsurvplot(fit,
           pval = TRUE, conf.int = TRUE,
           risk.table = TRUE, # Add risk table
           risk.table.col = "strata", # Change risk table color by groups
           linetype = "strata", # Change line type by groups
           surv.median.line = "hv", # Specify median survival
           ggtheme = theme_bw(), # Change ggplot2 theme
           palette = c("#E7B800", "#2E9FDF"),
           legend.labs = 
             c("Bảo tồn", "Cắt vú"),
           xlim = c(0, 77), break.x.by = 12,
           xlab = "Thời gian (tháng)",
           ylab = "Xác suất không tái phát"
           )
## Warning in .add_surv_median(p, fit, type = surv.median.line, fun = fun, :
## Median survival not reached.

summary(fit)
## Call: survfit(formula = Surv(df$Thoi_gian_tai_phat_sau_dieu_tri, df$Tai_phat) ~ 
##     df$Phuong_phap_phau_thuat_tai_vu, data = df)
## 
##                 df$Phuong_phap_phau_thuat_tai_vu=1 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     5    257       1    0.996 0.00388        0.989        1.000
##     6    256       1    0.992 0.00548        0.982        1.000
##     7    255       1    0.988 0.00670        0.975        1.000
##     8    254       1    0.984 0.00772        0.969        1.000
##    12    253       2    0.977 0.00942        0.958        0.995
##    14    251       2    0.969 0.01083        0.948        0.990
##    15    249       1    0.965 0.01147        0.943        0.988
##    17    248       1    0.961 0.01206        0.938        0.985
##    19    247       1    0.957 0.01263        0.933        0.982
##    21    246       1    0.953 0.01316        0.928        0.979
##    22    245       1    0.949 0.01367        0.923        0.977
##    23    244       1    0.946 0.01416        0.918        0.974
##    24    243       2    0.938 0.01507        0.909        0.968
##    25    199       1    0.933 0.01572        0.903        0.964
##    29    198       1    0.928 0.01633        0.897        0.961
##    30    197       1    0.924 0.01691        0.891        0.957
##    48    136       1    0.917 0.01810        0.882        0.953
##    54     89       1    0.907 0.02062        0.867        0.948
## 
##                 df$Phuong_phap_phau_thuat_tai_vu=2 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     3    612       1    0.998 0.00163        0.995        1.000
##     4    611       1    0.997 0.00231        0.992        1.000
##     6    610       5    0.989 0.00430        0.980        0.997
##     8    605       1    0.987 0.00459        0.978        0.996
##    10    604       2    0.984 0.00512        0.974        0.994
##    13    602       1    0.982 0.00537        0.972        0.993
##    16    601       2    0.979 0.00583        0.967        0.990
##    17    599       3    0.974 0.00645        0.961        0.987
##    20    596       2    0.971 0.00683        0.957        0.984
##    21    594       1    0.969 0.00701        0.955        0.983
##    22    593       1    0.967 0.00719        0.953        0.982
##    23    592       1    0.966 0.00736        0.951        0.980
##    24    591       2    0.962 0.00769        0.947        0.978
##    26    491       3    0.957 0.00836        0.940        0.973
##    29    488       1    0.955 0.00857        0.938        0.972
##    30    487       2    0.951 0.00897        0.933        0.968
##    32    485       1    0.949 0.00916        0.931        0.967
##    34    484       1    0.947 0.00935        0.929        0.965
##    35    483       1    0.945 0.00953        0.926        0.964
##    36    482       2    0.941 0.00989        0.922        0.960
##    37    355       1    0.938 0.01021        0.918        0.958
##    40    354       1    0.936 0.01052        0.915        0.956
##    48    353       1    0.933 0.01082        0.912        0.954
##    52    196       1    0.928 0.01176        0.905        0.951
##    54    195       1    0.923 0.01263        0.899        0.948
##    65     70       2    0.897 0.02210        0.855        0.941