Phân tích các yếu tố cơ bản

Đặc điểm đối tượng nghiên cứu

Vì chúng ta quên không không nhập biến giới, em sẽ random 400 giá trị giới với tỷ lệ nam > nữ. Tuy nhiên sẽ không phân tích liên quan giữa giới và nguy cơ tim mạch ở đây vì các giá trị được tạo random, không có quy luật gì cả.

gioi <- c(0, 1)
tyle <- c(0.32, 0.68) ##Chọn tỷ lệ nam là 68% cho phát lộc anh nhé
gender <- sample(gioi, 400, replace = TRUE, prob = (tyle))
ninhdaca$gender=gender

Đặc điểm về tuổi-giới

##Đặc điểm chung của tuổi
(tuoi <- ninhdaca %>% 
  summarize(trungbinh = mean(age),
            sd = sd(age)))
## # A tibble: 1 x 2
##   trungbinh       sd
##       <dbl>    <dbl>
## 1   66.9825 11.10543
hist(ninhdaca$age, main = "Phân b\u1ED1 tu\u1ED5i",
     xlab = "Tu\u1ED1i",
     ylab = "T\u1EF7 l\u1EC7")

##Đặt điểm chung của giới
ninhdaca$gender <- factor(ninhdaca$gender, labels = c("N\u1eef", "Nam"))
(gioitinh <- ninhdaca %>%
  group_by(gender) %>%
  summarise(soluong = n(),
            tylephantram = n()/4))
## # A tibble: 2 x 3
##      gender soluong tylephantram
##      <fctr>   <int>        <dbl>
## 1 N<U+1EEF>     114         28.5
## 2       Nam     286         71.5
pie(c(32.5, 67.5), labels = c("N\u1eef", "Nam"),
    main = "T\u1EF7 l\u1EC7 gi\u1edbi")

##Phân nhóm tuổi
ninhdaca$age_group <- ifelse(ninhdaca$age < 65, "<65",                              ifelse(ninhdaca$age >75, ">75", "65-75"))
ninhdaca$age_group <- as.factor(ninhdaca$age_group)
ninhdaca$age_group <- ordered(ninhdaca$age_group,levels = c("<65", "65-75", ">75"))
ninhdaca %>% 
  group_by(age_group) %>%
  summarise(trungbinh = mean(age), soluong = n(), tyle = n()/4)
## # A tibble: 3 x 4
##   age_group trungbinh soluong  tyle
##       <ord>     <dbl>   <int> <dbl>
## 1       <65  56.45062     162 40.50
## 2     65-75  69.34043     141 35.25
## 3       >75  81.14433      97 24.25
ninhdaca[c(13, 62), 62] <- 0

Phân tích so sánh

Phần này sẽ tiến hành so sánh các “biến cố” giữa các nhóm đối tượng. Các biến cố ở đây bao gồm:

#Tập hợp các biến so sánh
all_cvars <- c("htn", "stent", "smk", "lipid", "dm", "insulin", "ckd", "dialysis", "cabg", "vein", "mi", "alcoh", "hf", "pad", "aspirin", "bleed", "ulcer", "tbmn", "stroke", "ich", "chf", "acs", "stemi", "st", "ac", "lm", "type", "femo", "lysis", "adh", "thrombo", "dead", "acutehf", "gusto", "transf", "istroke", "angina",colnames(ninhdaca[, c(66, 67, 69:77, 79:85)]))
ninhdaca[all_cvars] <- lapply(ninhdaca[all_cvars], factor)
cat_vars <- c("thrombo","dead", "acutehf", "gusto", "transf", "istroke", "angina", "oneevent", "threeeven")
comp_vars <- c("tstemi", "timi", "grace", "crusade", "parismi", "parisbld", "dapt", "hasbld", "thrombo", "dead", "acutehf", "gusto", "transf", "istroke", "angina", "oneevent", "threeeven")

So sánh giữa các nhóm tuổi

Đầu tiên ta lập một bảng mô tả tóm tắt + kiểm định tính chuẩn của các biến bằng Saphiro-Wilks test. Có thể thấy các biến thang điểm đều không chuẩn, còn các biến định tính khác đều cảnh báo kiểm định Chi-squared có thể không đúng. Do vậy sẽ kiểm định sự khác biệt bằng các test phi tham số. Chú ý vì các biến thang điểm ko chuẩn nên giá trị mô tả là trung vị và khoảng tứ phân vị

mytable(age_group ~ tstemi + timi + grace + crusade +
          parismi + parisbld + dapt + hasbld +
          thrombo + dead + acutehf + gusto + transf +
          istroke + angina + oneevent + threeeven, data = ninhdaca, method = 3)
## 
##                   Descriptive Statistics by 'age_group'                 
## _________________________________________________________________________ 
##                   <65              65-75                >75           p  
##                 (N=162)           (N=141)             (N=97)       
## ------------------------------------------------------------------------- 
##  tstemi     4.0 [ 3.0; 6.0]    5.5 [ 5.0; 7.0]    8.0 [ 7.0;10.0]   0.000
##  timi       3.0 [ 2.0; 3.0]    4.0 [ 3.0; 4.0]    4.0 [ 3.0; 4.0]   0.000
##  grace     87.0 [77.0;102.0] 107.0 [94.0;128.0] 135.5 [121.5;155.0] 0.000
##  crusade   25.0 [22.0;32.0]   35.0 [29.0;43.0]   44.0 [38.0;51.0]   0.000
##  parismi    3.0 [ 2.0; 4.0]    3.0 [ 2.0; 5.0]    4.0 [ 3.0; 5.0]   0.000
##  parisbld   4.0 [ 2.0; 5.0]    5.0 [ 4.0; 6.0]    7.0 [ 5.0; 8.0]   0.000
##  dapt       2.0 [ 1.0; 2.0]    1.0 [ 0.0; 2.0]    0.0 [-1.0; 1.0]   0.000
##  hasbld     1.0 [ 1.0; 2.0]    2.0 [ 2.0; 3.0]    3.0 [ 2.0; 3.0]   0.000
##  thrombo                                                            0.424
##    - 0        159 (98.1%)       138 (98.6%)         96 (100.0%)          
##    - 1         3 ( 1.9%)         2 ( 1.4%)           0 ( 0.0%)           
##  dead                                                               0.584
##    - 0        161 (99.4%)       138 (98.6%)         95 (97.9%)           
##    - 1         1 ( 0.6%)         2 ( 1.4%)           2 ( 2.1%)           
##  acutehf                                                            0.313
##    - 0       154 (100.0%)       123 (98.4%)         90 (98.9%)           
##    - 1         0 ( 0.0%)         2 ( 1.6%)           1 ( 1.1%)           
##  gusto                                                              0.004
##    - 0       162 (100.0%)       133 (94.3%)         91 (93.8%)           
##    - 1         0 ( 0.0%)         0 ( 0.0%)           3 ( 3.1%)           
##    - 2         0 ( 0.0%)         4 ( 2.8%)           1 ( 1.0%)           
##    - 3         0 ( 0.0%)         4 ( 2.8%)           2 ( 2.1%)           
##  transf                                                             0.104
##    - 0       161 (100.0%)       136 (97.8%)         93 (96.9%)           
##    - 1         0 ( 0.0%)         3 ( 2.2%)           3 ( 3.1%)           
##  istroke                                                            0.523
##    - 0        161 (99.4%)       140 (100.0%)        96 (99.0%)           
##    - 1         1 ( 0.6%)         0 ( 0.0%)           1 ( 1.0%)           
##  angina                                                             0.231
##    - 0        160 (98.8%)       140 (100.0%)        96 (100.0%)          
##    - 1         2 ( 1.2%)         0 ( 0.0%)           0 ( 0.0%)           
##  oneevent                                                           0.174
##    - 0        155 (96.3%)       128 (91.4%)         89 (91.8%)           
##    - 1         6 ( 3.7%)         12 ( 8.6%)          8 ( 8.2%)           
##  threeeven                                                          0.316
##    - 0        152 (94.4%)       125 (89.9%)         87 (90.6%)           
##    - 1         9 ( 5.6%)         14 (10.1%)          9 ( 9.4%)           
## -------------------------------------------------------------------------
thangdiem <- c("tstemi", "timi", "grace", "crusade", "parismi", "parisbld", "dapt", "hasbld", "gusto")

Nếu anh vẫn mún có trung bình và sd thì xem bảng này

mytable(age_group ~ tstemi + timi + grace + crusade +
          parismi + parisbld + dapt + hasbld, data = ninhdaca)
## 
##         Descriptive Statistics by 'age_group'       
## _____________________________________________________ 
##               <65        65-75         >75        p  
##             (N=162)     (N=141)       (N=97)   
## ----------------------------------------------------- 
##  tstemi    4.8 ±  2.1  6.4 ±  2.6   8.2 ±  2.3  0.000
##  timi      2.7 ±  1.2  3.5 ±  1.1   3.7 ±  0.9  0.000
##  grace    90.8 ± 20.2 113.0 ± 26.1 137.7 ± 24.6 0.000
##  crusade  27.1 ±  7.9 36.2 ±  9.6  43.8 ± 10.8  0.000
##  parismi   3.0 ±  1.4  3.4 ±  1.8   4.4 ±  1.9  0.000
##  parisbld  3.5 ±  1.6  5.0 ±  2.0   7.0 ±  2.1  0.000
##  dapt      1.8 ±  1.0  1.2 ±  1.1   0.2 ±  1.3  0.000
##  hasbld    1.5 ±  0.8  2.4 ±  0.8   2.8 ±  0.8  0.000
## -----------------------------------------------------

Bảng kiểm định khác biệt

tab1 <- CreateTableOne(vars = comp_vars , strata = "age_group", data = ninhdaca)
print(tab1, showAllLevels = TRUE, noSpaces = TRUE, 
      nonnormal = thangdiem, exact = comp_vars[-c(1:8, 10)])
##                          Stratified by age_group
##                           level <65                  
##   n                             162                  
##   tstemi (median [IQR])         4.00 [3.00, 6.00]    
##   timi (median [IQR])           3.00 [2.00, 3.00]    
##   grace (median [IQR])          87.00 [77.00, 102.00]
##   crusade (median [IQR])        25.00 [22.00, 32.00] 
##   parismi (median [IQR])        3.00 [2.00, 4.00]    
##   parisbld (median [IQR])       4.00 [2.00, 5.00]    
##   dapt (median [IQR])           2.00 [1.00, 2.00]    
##   hasbld (median [IQR])         1.00 [1.00, 2.00]    
##   thrombo (%)             0     159 (98.1)           
##                           1     3 (1.9)              
##   dead (%)                0     161 (99.4)           
##                           1     1 (0.6)              
##   acutehf (%)             0     154 (100.0)          
##                           1     0 (0.0)              
##   gusto (%)               0     162 (100.0)          
##                           1     0 (0.0)              
##                           2     0 (0.0)              
##                           3     0 (0.0)              
##   transf (%)              0     161 (100.0)          
##                           1     0 (0.0)              
##   istroke (%)             0     161 (99.4)           
##                           1     1 (0.6)              
##   angina (%)              0     160 (98.8)           
##                           1     2 (1.2)              
##   oneevent (%)            0     155 (96.3)           
##                           1     6 (3.7)              
##   threeeven (%)           0     152 (94.4)           
##                           1     9 (5.6)              
##                          Stratified by age_group
##                           65-75                  >75                    
##   n                       141                    97                     
##   tstemi (median [IQR])   5.50 [5.00, 7.00]      8.00 [7.00, 9.75]      
##   timi (median [IQR])     4.00 [3.00, 4.00]      4.00 [3.00, 4.00]      
##   grace (median [IQR])    107.00 [94.00, 128.00] 135.50 [121.75, 155.00]
##   crusade (median [IQR])  35.00 [29.00, 43.00]   44.00 [38.00, 51.00]   
##   parismi (median [IQR])  3.00 [2.00, 5.00]      4.00 [3.00, 5.00]      
##   parisbld (median [IQR]) 5.00 [4.00, 6.00]      7.00 [5.00, 8.00]      
##   dapt (median [IQR])     1.00 [0.00, 2.00]      0.00 [-1.00, 1.00]     
##   hasbld (median [IQR])   2.00 [2.00, 3.00]      3.00 [2.00, 3.00]      
##   thrombo (%)             138 (98.6)             96 (100.0)             
##                           2 (1.4)                0 (0.0)                
##   dead (%)                138 (98.6)             95 (97.9)              
##                           2 (1.4)                2 (2.1)                
##   acutehf (%)             123 (98.4)             90 (98.9)              
##                           2 (1.6)                1 (1.1)                
##   gusto (%)               133 (94.3)             91 (93.8)              
##                           0 (0.0)                3 (3.1)                
##                           4 (2.8)                1 (1.0)                
##                           4 (2.8)                2 (2.1)                
##   transf (%)              136 (97.8)             93 (96.9)              
##                           3 (2.2)                3 (3.1)                
##   istroke (%)             140 (100.0)            96 (99.0)              
##                           0 (0.0)                1 (1.0)                
##   angina (%)              140 (100.0)            96 (100.0)             
##                           0 (0.0)                0 (0.0)                
##   oneevent (%)            128 (91.4)             89 (91.8)              
##                           12 (8.6)               8 (8.2)                
##   threeeven (%)           125 (89.9)             87 (90.6)              
##                           14 (10.1)              9 (9.4)                
##                          Stratified by age_group
##                           p      test   
##   n                                     
##   tstemi (median [IQR])   <0.001 nonnorm
##   timi (median [IQR])     <0.001 nonnorm
##   grace (median [IQR])    <0.001 nonnorm
##   crusade (median [IQR])  <0.001 nonnorm
##   parismi (median [IQR])  <0.001 nonnorm
##   parisbld (median [IQR]) <0.001 nonnorm
##   dapt (median [IQR])     <0.001 nonnorm
##   hasbld (median [IQR])   <0.001 nonnorm
##   thrombo (%)             0.458  exact  
##                                         
##   dead (%)                0.584         
##                                         
##   acutehf (%)             0.344  exact  
##                                         
##   gusto (%)               0.001  exact  
##                                         
##                                         
##                                         
##   transf (%)              0.044  exact  
##                                         
##   istroke (%)             0.714  exact  
##                                         
##   angina (%)              0.346  exact  
##                                         
##   oneevent (%)            0.154  exact  
##                                         
##   threeeven (%)           0.297  exact  
## 

So sánh giữa nhóm có biến cố và không có biến cố

Mục tiêu là xem tỷ lệ yếu tố nguy cơ giữa các nhóm này có khác nhau không

#Nhóm "no event" là nhóm không có bất kì biến cố gì ngay sau ct, sau 1 tháng và 3 tháng. Nhóm "thrombo" là nhóm có các biến cố NMCT, nhồi máu não, tia, tái hẹp lại stent và tử vong. Nhóm "bleeding" có các biến cố chảy máu từ trung bình trở lên sau can thiệp và 1-3 tháng
ninhdaca[is.na(ninhdaca)] <- 0

ninhdaca$event <- with(ninhdaca, {
  ifelse(thrombo == 0 & dead == 0 & acutehf == 0 & gusto == 0 & istroke == 0 & transf == 0 & angina ==0 & oneevent == 0 & threeeven == 0, "no event", 
         ifelse(thrombo ==1|dead ==1|istroke ==1|onedead ==1|onemi ==1|oness == 1|onestroke ==1|threedead ==1|threemi ==1|threess==1|threestro==1, "thrombo", 
                ifelse(gusto == 2|gusto==3|onegusto==2|onegusto==3|threegust==2|threegust==3, "bleeding", "other")))})
ninhdaca$event <- factor(ninhdaca$event, 
                         levels = c("no event", "thrombo", "bleeding", "other"))
#Tỷ lệ các biến cố sau can thiệp
CreateCatTable(vars = c("event"), data = ninhdaca)
##              
##               Overall    
##   n           400        
##   event (%)              
##      no event 328 (82.0) 
##      thrombo   26 ( 6.5) 
##      bleeding  22 ( 5.5) 
##      other     24 ( 6.0)

So sánh giữa nhóm tắc mạch vs không biến cố

#Chọn ra nhóm tắc mạch và không biến có
comp1 <- filter(ninhdaca, event %in% c("no event", "thrombo"))
#So sánh đặc điểm nhóm tắc mạch vs không biến cố
comp1$event <- droplevels(comp1$event, exclude = c("bleeding", "other"))
tab2 <- CreateTableOne(vars = c(all_cvars, thangdiem), strata = "event", data = comp1)
print(tab2, noSpaces = TRUE, nonnormal = thangdiem)
## Warning in nthElt == vecVarToRow: longer object length is not a multiple of
## shorter object length

## Warning in nthElt == vecVarToRow: longer object length is not a multiple of
## shorter object length
##                          Stratified by event
##                           no event               thrombo                
##   n                       328                    26                     
##   htn = 1 (%)             227 (69.2)             19 (73.1)              
##   stent = 1 (%)           100 (30.5)             8 (30.8)               
##   smk = 1 (%)             108 (32.9)             8 (30.8)               
##   lipid = 1 (%)           69 (21.0)              8 (30.8)               
##   dm = 1 (%)              93 (28.4)              10 (38.5)              
##   insulin = 1 (%)         45 (13.7)              6 (23.1)               
##   ckd = 1 (%)             9 (2.7)                3 (11.5)               
##   dialysis = 0 (%)        328 (100.0)            26 (100.0)             
##   cabg = 1 (%)            4 (1.2)                0 (0.0)                
##   vein = 1 (%)            3 (0.9)                0 (0.0)                
##   mi = 1 (%)              56 (17.1)              4 (15.4)               
##   alcoh = 1 (%)           24 (7.3)               5 (19.2)               
##   hf = 1 (%)              21 (6.4)               4 (15.4)               
##   pad = 1 (%)             6 (1.8)                0 (0.0)                
##   aspirin = 1 (%)         97 (29.6)              10 (38.5)              
##   bleed = 1 (%)           10 (3.0)               1 (3.8)                
##   ulcer = 1 (%)           61 (18.6)              7 (26.9)               
##   tbmn = 1 (%)            24 (7.3)               5 (19.2)               
##   stroke = 1 (%)          17 (5.2)               5 (19.2)               
##   ich = 1 (%)             4 (1.2)                0 (0.0)                
##   chf = 1 (%)             37 (11.3)              13 (50.0)              
##   acs = 1 (%)             199 (60.7)             22 (84.6)              
##   stemi = 1 (%)           86 (26.2)              9 (34.6)               
##   st = 1 (%)              178 (54.3)             19 (73.1)              
##   ac = 1 (%)              7 (2.1)                3 (11.5)               
##   lm = 1 (%)              34 (10.4)              1 (3.8)                
##   type = 2 (%)            327 (99.7)             26 (100.0)             
##   femo = 1 (%)            44 (13.4)              6 (23.1)               
##   lysis = 1 (%)           0 (0.0)                0 (0.0)                
##   adh = 1 (%)             300 (91.5)             22 (84.6)              
##   thrombo = 1 (%)         0 (0.0)                5 (19.2)               
##   dead = 1 (%)            0 (0.0)                5 (19.2)               
##   acutehf = 1 (%)         0 (0.0)                3 (11.5)               
##   gusto (%)                                                             
##      1                    0 (0.0)                1 (3.8)                
##      3                    0 (0.0)                1 (3.8)                
##      0                    328 (100.0)            24 (92.3)              
##      2                    0 (0.0)                0 (0.0)                
##   transf = 1 (%)          0 (0.0)                1 (3.8)                
##   istroke = 1 (%)         0 (0.0)                2 (7.7)                
##   angina = 1 (%)          0 (0.0)                1 (3.8)                
##   oneevent = 1 (%)        0 (0.0)                10 (38.5)              
##   onedead = 1 (%)         0 (0.0)                7 (26.9)               
##   oneheart = 1 (%)        0 (0.0)                6 (23.1)               
##   onehf = 1 (%)           0 (0.0)                2 (7.7)                
##   oneangina = 1 (%)       0 (0.0)                5 (19.2)               
##   onemi = 1 (%)           0 (0.0)                5 (19.2)               
##   oness = 1 (%)           0 (0.0)                1 (3.8)                
##   onestroke = 0 (%)       328 (100.0)            26 (100.0)             
##   onegusto (%)                                                          
##      0                    1 (0.3)                9 (34.6)               
##      1                    0 (0.0)                1 (3.8)                
##      2                    0 (0.0)                0 (0.0)                
##      3                    0 (0.0)                0 (0.0)                
##      NaN                  327 (99.7)             16 (61.5)              
##   threeeven = 1 (%)       0 (0.0)                7 (26.9)               
##   threedead = 1 (%)       0 (0.0)                2 (7.7)                
##   threehear = 1 (%)       0 (0.0)                1 (3.8)                
##   onehf1 = 1 (%)          0 (0.0)                2 (7.7)                
##   threeangi = 1 (%)       0 (0.0)                2 (7.7)                
##   threemi = 0 (%)         328 (100.0)            26 (100.0)             
##   threess = 1 (%)         0 (0.0)                1 (3.8)                
##   threestro = 1 (%)       0 (0.0)                3 (11.5)               
##   threegust (%)                                                         
##      0                    2 (0.6)                7 (26.9)               
##      1                    0 (0.0)                0 (0.0)                
##      2                    0 (0.0)                0 (0.0)                
##      3                    0 (0.0)                1 (3.8)                
##      NaN                  326 (99.4)             18 (69.2)              
##   tstemi (median [IQR])   0.00 [0.00, 3.00]      0.00 [0.00, 6.75]      
##   timi (median [IQR])     3.00 [0.00, 4.00]      2.50 [0.00, 5.00]      
##   grace (median [IQR])    102.00 [87.00, 122.00] 140.50 [110.25, 176.25]
##   crusade (median [IQR])  32.00 [24.00, 40.00]   45.00 [35.00, 52.75]   
##   parismi (median [IQR])  3.00 [2.00, 4.00]      5.00 [3.00, 5.75]      
##   parisbld (median [IQR]) 4.00 [3.00, 6.00]      5.50 [4.00, 7.00]      
##   dapt (median [IQR])     1.00 [0.00, 2.00]      2.00 [1.00, 3.00]      
##   hasbld (median [IQR])   2.00 [1.00, 3.00]      2.50 [2.00, 3.00]      
##   gusto (%)                                                             
##      1                    0 (0.0)                1 (3.8)                
##      3                    0 (0.0)                1 (3.8)                
##      0                    328 (100.0)            24 (92.3)              
##      2                    0 (0.0)                0 (0.0)                
##                          Stratified by event
##                           p      test   
##   n                                     
##   htn = 1 (%)             0.848         
##   stent = 1 (%)           1.000         
##   smk = 1 (%)             0.993         
##   lipid = 1 (%)           0.362         
##   dm = 1 (%)              0.385         
##   insulin = 1 (%)         0.309         
##   ckd = 1 (%)             0.068         
##   dialysis = 0 (%)        NA            
##   cabg = 1 (%)            1.000         
##   vein = 1 (%)            1.000         
##   mi = 1 (%)              1.000         
##   alcoh = 1 (%)           0.078         
##   hf = 1 (%)              0.186         
##   pad = 1 (%)             1.000         
##   aspirin = 1 (%)         0.467         
##   bleed = 1 (%)           1.000         
##   ulcer = 1 (%)           0.436         
##   tbmn = 1 (%)            0.078         
##   stroke = 1 (%)          0.015         
##   ich = 1 (%)             1.000         
##   chf = 1 (%)             <0.001        
##   acs = 1 (%)             0.027         
##   stemi = 1 (%)           0.484         
##   st = 1 (%)              0.098         
##   ac = 1 (%)              0.030         
##   lm = 1 (%)              0.465         
##   type = 2 (%)            1.000         
##   femo = 1 (%)            0.285         
##   lysis = 1 (%)           NaN           
##   adh = 1 (%)             0.414         
##   thrombo = 1 (%)         <0.001        
##   dead = 1 (%)            <0.001        
##   acutehf = 1 (%)         <0.001        
##   gusto (%)               NaN           
##      1                                  
##      3                                  
##      0                                  
##      2                                  
##   transf = 1 (%)          0.102         
##   istroke = 1 (%)         <0.001        
##   angina = 1 (%)          0.102         
##   oneevent = 1 (%)        <0.001        
##   onedead = 1 (%)         <0.001        
##   oneheart = 1 (%)        <0.001        
##   onehf = 1 (%)           <0.001        
##   oneangina = 1 (%)       <0.001        
##   onemi = 1 (%)           <0.001        
##   oness = 1 (%)           0.102         
##   onestroke = 0 (%)       NA            
##   onegusto (%)            NaN           
##      0                                  
##      1                                  
##      2                                  
##      3                                  
##      NaN                                
##   threeeven = 1 (%)       <0.001        
##   threedead = 1 (%)       <0.001        
##   threehear = 1 (%)       0.102         
##   onehf1 = 1 (%)          <0.001        
##   threeangi = 1 (%)       <0.001        
##   threemi = 0 (%)         NA            
##   threess = 1 (%)         0.102         
##   threestro = 1 (%)       <0.001        
##   threegust (%)           NaN           
##      0                                  
##      1                                  
##      2                                  
##      3                                  
##      NaN                                
##   tstemi (median [IQR])   0.051  nonnorm
##   timi (median [IQR])     0.384  nonnorm
##   grace (median [IQR])    <0.001 nonnorm
##   crusade (median [IQR])  <0.001 nonnorm
##   parismi (median [IQR])  0.003  nonnorm
##   parisbld (median [IQR]) 0.153  nonnorm
##   dapt (median [IQR])     0.001  nonnorm
##   hasbld (median [IQR])   0.030  nonnorm
##   gusto (%)               NaN           
##      1                                  
##      3                                  
##      0                                  
##      2

Kết quả xuất ra khá dị,nhóm tắc mạch có điểm HASBLED vs CRUSADE cao hơn nhóm không biến cố 8-}

So sánh nhóm chảy máu vs nhóm không biến cố

#Chọn ra nhóm chảy máu và không biến có
comp2 <- filter(ninhdaca, event %in% c("no event", "bleeding"))
#So sánh đặc điểm nhóm chảy máu vs không biến cố
comp2$event <- droplevels(comp2$event, exclude = c("thrombo", "other"))
tab3 <- CreateTableOne(vars = c(all_cvars, thangdiem), strata = "event", data = comp2)
print(tab3, noSpaces = TRUE, nonnormal = thangdiem)
## Warning in nthElt == vecVarToRow: longer object length is not a multiple of
## shorter object length

## Warning in nthElt == vecVarToRow: longer object length is not a multiple of
## shorter object length
##                          Stratified by event
##                           no event               bleeding               
##   n                       328                    22                     
##   htn = 1 (%)             227 (69.2)             18 (81.8)              
##   stent = 1 (%)           100 (30.5)             10 (45.5)              
##   smk = 1 (%)             108 (32.9)             5 (22.7)               
##   lipid = 1 (%)           69 (21.0)              3 (13.6)               
##   dm = 1 (%)              93 (28.4)              7 (31.8)               
##   insulin = 1 (%)         45 (13.7)              7 (31.8)               
##   ckd = 1 (%)             9 (2.7)                3 (13.6)               
##   dialysis = 0 (%)        328 (100.0)            22 (100.0)             
##   cabg = 1 (%)            4 (1.2)                0 (0.0)                
##   vein = 1 (%)            3 (0.9)                0 (0.0)                
##   mi = 1 (%)              56 (17.1)              4 (18.2)               
##   alcoh = 1 (%)           24 (7.3)               2 (9.1)                
##   hf = 1 (%)              21 (6.4)               1 (4.5)                
##   pad = 1 (%)             6 (1.8)                3 (13.6)               
##   aspirin = 1 (%)         97 (29.6)              12 (54.5)              
##   bleed = 1 (%)           10 (3.0)               1 (4.5)                
##   ulcer = 1 (%)           61 (18.6)              8 (36.4)               
##   tbmn = 1 (%)            24 (7.3)               3 (13.6)               
##   stroke = 1 (%)          17 (5.2)               3 (13.6)               
##   ich = 1 (%)             4 (1.2)                0 (0.0)                
##   chf = 1 (%)             37 (11.3)              5 (22.7)               
##   acs = 1 (%)             199 (60.7)             17 (77.3)              
##   stemi = 1 (%)           86 (26.2)              8 (36.4)               
##   st = 1 (%)              178 (54.3)             12 (54.5)              
##   ac = 1 (%)              7 (2.1)                1 (4.5)                
##   lm = 1 (%)              34 (10.4)              3 (13.6)               
##   type = 2 (%)            327 (99.7)             22 (100.0)             
##   femo = 1 (%)            44 (13.4)              9 (40.9)               
##   lysis = 1 (%)           0 (0.0)                1 (4.5)                
##   adh = 1 (%)             300 (91.5)             19 (86.4)              
##   thrombo = 1 (%)         0 (0.0)                0 (0.0)                
##   dead = 1 (%)            0 (0.0)                0 (0.0)                
##   acutehf = 1 (%)         0 (0.0)                0 (0.0)                
##   gusto (%)                                                             
##      1                    0 (0.0)                0 (0.0)                
##      3                    0 (0.0)                5 (22.7)               
##      0                    328 (100.0)            12 (54.5)              
##      2                    0 (0.0)                5 (22.7)               
##   transf = 1 (%)          0 (0.0)                4 (18.2)               
##   istroke = 1 (%)         0 (0.0)                0 (0.0)                
##   angina = 1 (%)          0 (0.0)                0 (0.0)                
##   oneevent = 1 (%)        0 (0.0)                6 (27.3)               
##   onedead = 1 (%)         0 (0.0)                0 (0.0)                
##   oneheart = 1 (%)        0 (0.0)                0 (0.0)                
##   onehf = 1 (%)           0 (0.0)                0 (0.0)                
##   oneangina = 1 (%)       0 (0.0)                1 (4.5)                
##   onemi = 1 (%)           0 (0.0)                0 (0.0)                
##   oness = 1 (%)           0 (0.0)                0 (0.0)                
##   onestroke = 0 (%)       328 (100.0)            22 (100.0)             
##   onegusto (%)                                                          
##      0                    1 (0.3)                2 (9.1)                
##      1                    0 (0.0)                0 (0.0)                
##      2                    0 (0.0)                2 (9.1)                
##      3                    0 (0.0)                3 (13.6)               
##      NaN                  327 (99.7)             15 (68.2)              
##   threeeven = 1 (%)       0 (0.0)                8 (36.4)               
##   threedead = 1 (%)       0 (0.0)                0 (0.0)                
##   threehear = 1 (%)       0 (0.0)                0 (0.0)                
##   onehf1 = 1 (%)          0 (0.0)                0 (0.0)                
##   threeangi = 1 (%)       0 (0.0)                0 (0.0)                
##   threemi = 0 (%)         328 (100.0)            22 (100.0)             
##   threess = 1 (%)         0 (0.0)                0 (0.0)                
##   threestro = 1 (%)       0 (0.0)                0 (0.0)                
##   threegust (%)                                                         
##      0                    2 (0.6)                0 (0.0)                
##      1                    0 (0.0)                0 (0.0)                
##      2                    0 (0.0)                4 (18.2)               
##      3                    0 (0.0)                4 (18.2)               
##      NaN                  326 (99.4)             14 (63.6)              
##   tstemi (median [IQR])   0.00 [0.00, 3.00]      0.00 [0.00, 5.00]      
##   timi (median [IQR])     3.00 [0.00, 4.00]      3.00 [0.00, 4.00]      
##   grace (median [IQR])    102.00 [87.00, 122.00] 133.00 [102.25, 142.25]
##   crusade (median [IQR])  32.00 [24.00, 40.00]   42.50 [33.75, 51.00]   
##   parismi (median [IQR])  3.00 [2.00, 4.00]      4.00 [3.00, 5.00]      
##   parisbld (median [IQR]) 4.00 [3.00, 6.00]      6.00 [4.25, 9.00]      
##   dapt (median [IQR])     1.00 [0.00, 2.00]      1.00 [0.00, 1.75]      
##   hasbld (median [IQR])   2.00 [1.00, 3.00]      3.00 [2.00, 3.00]      
##   gusto (%)                                                             
##      1                    0 (0.0)                0 (0.0)                
##      3                    0 (0.0)                5 (22.7)               
##      0                    328 (100.0)            12 (54.5)              
##      2                    0 (0.0)                5 (22.7)               
##                          Stratified by event
##                           p      test   
##   n                                     
##   htn = 1 (%)             0.313         
##   stent = 1 (%)           0.220         
##   smk = 1 (%)             0.450         
##   lipid = 1 (%)           0.576         
##   dm = 1 (%)              0.917         
##   insulin = 1 (%)         0.045         
##   ckd = 1 (%)             0.035         
##   dialysis = 0 (%)        NA            
##   cabg = 1 (%)            1.000         
##   vein = 1 (%)            1.000         
##   mi = 1 (%)              1.000         
##   alcoh = 1 (%)           1.000         
##   hf = 1 (%)              1.000         
##   pad = 1 (%)             0.007         
##   aspirin = 1 (%)         0.027         
##   bleed = 1 (%)           1.000         
##   ulcer = 1 (%)           0.080         
##   tbmn = 1 (%)            0.508         
##   stroke = 1 (%)          0.238         
##   ich = 1 (%)             1.000         
##   chf = 1 (%)             0.207         
##   acs = 1 (%)             0.185         
##   stemi = 1 (%)           0.429         
##   st = 1 (%)              1.000         
##   ac = 1 (%)              1.000         
##   lm = 1 (%)              0.901         
##   type = 2 (%)            1.000         
##   femo = 1 (%)            0.001         
##   lysis = 1 (%)           0.071         
##   adh = 1 (%)             0.669         
##   thrombo = 1 (%)         NaN           
##   dead = 1 (%)            NaN           
##   acutehf = 1 (%)         NaN           
##   gusto (%)               NaN           
##      1                                  
##      3                                  
##      0                                  
##      2                                  
##   transf = 1 (%)          <0.001        
##   istroke = 1 (%)         NaN           
##   angina = 1 (%)          NaN           
##   oneevent = 1 (%)        <0.001        
##   onedead = 1 (%)         NaN           
##   oneheart = 1 (%)        NaN           
##   onehf = 1 (%)           NaN           
##   oneangina = 1 (%)       0.071         
##   onemi = 1 (%)           NaN           
##   oness = 1 (%)           NaN           
##   onestroke = 0 (%)       NA            
##   onegusto (%)            NaN           
##      0                                  
##      1                                  
##      2                                  
##      3                                  
##      NaN                                
##   threeeven = 1 (%)       <0.001        
##   threedead = 1 (%)       NaN           
##   threehear = 1 (%)       NaN           
##   onehf1 = 1 (%)          NaN           
##   threeangi = 1 (%)       NaN           
##   threemi = 0 (%)         NA            
##   threess = 1 (%)         NaN           
##   threestro = 1 (%)       NaN           
##   threegust (%)           NaN           
##      0                                  
##      1                                  
##      2                                  
##      3                                  
##      NaN                                
##   tstemi (median [IQR])   0.217  nonnorm
##   timi (median [IQR])     0.376  nonnorm
##   grace (median [IQR])    0.003  nonnorm
##   crusade (median [IQR])  <0.001 nonnorm
##   parismi (median [IQR])  0.048  nonnorm
##   parisbld (median [IQR]) <0.001 nonnorm
##   dapt (median [IQR])     0.564  nonnorm
##   hasbld (median [IQR])   <0.001 nonnorm
##   gusto (%)               NaN           
##      1                                  
##      3                                  
##      0                                  
##      2

Bên này KQ có vẻ đỡ dị hơn, đúng như anh dự đoán nhóm can thiệp đường đùi có tỷ lệ chảy máu cao hơn :<

So sánh nhóm DAPT >= 2 và DAPT <2

#Chia nhóm
hist(ninhdaca$dapt, main = "Phân b\u1ed1 thang \u0111i\u1ec3m DAPT", 
     xlab = "DAPT", ylab ="T\u1EF7 l\u1EC7" )

ninhdaca$d_group <- ifelse(ninhdaca$dapt >=2, ">=2", "<2")
#So sánh
tab4 <- CreateTableOne(vars = c(all_cvars, thangdiem), strata = "d_group", data = ninhdaca)
print(tab4, noSpaces = TRUE, nonnormal = thangdiem, exact = "all_cvars")
## Warning in nthElt == vecVarToRow: longer object length is not a multiple of
## shorter object length

## Warning in nthElt == vecVarToRow: longer object length is not a multiple of
## shorter object length
##                          Stratified by d_group
##                           <2                     >=2                   
##   n                       238                    162                   
##   htn = 1 (%)             174 (73.1)             106 (65.4)            
##   stent = 1 (%)           56 (23.5)              67 (41.4)             
##   smk = 1 (%)             54 (22.7)              76 (46.9)             
##   lipid = 1 (%)           37 (15.5)              46 (28.4)             
##   dm = 1 (%)              62 (26.1)              50 (30.9)             
##   insulin = 1 (%)         32 (13.4)              26 (16.0)             
##   ckd = 1 (%)             9 (3.8)                6 (3.7)               
##   dialysis = 0 (%)        238 (100.0)            162 (100.0)           
##   cabg = 1 (%)            1 (0.4)                3 (1.9)               
##   vein = 1 (%)            0 (0.0)                3 (1.9)               
##   mi = 1 (%)              27 (11.3)              41 (25.3)             
##   alcoh = 1 (%)           18 (7.6)               18 (11.1)             
##   hf = 1 (%)              8 (3.4)                20 (12.3)             
##   pad = 1 (%)             5 (2.1)                4 (2.5)               
##   aspirin = 1 (%)         58 (24.4)              68 (42.0)             
##   bleed = 1 (%)           7 (2.9)                5 (3.1)               
##   ulcer = 1 (%)           46 (19.3)              36 (22.2)             
##   tbmn = 1 (%)            20 (8.4)               14 (8.6)              
##   stroke = 1 (%)          15 (6.3)               13 (8.0)              
##   ich = 1 (%)             2 (0.8)                2 (1.2)               
##   chf = 1 (%)             26 (10.9)              41 (25.3)             
##   acs = 1 (%)             142 (59.7)             116 (71.6)            
##   stemi = 1 (%)           46 (19.3)              68 (42.0)             
##   st = 1 (%)              117 (49.2)             111 (68.5)            
##   ac = 1 (%)              3 (1.3)                8 (4.9)               
##   lm = 1 (%)              23 (9.7)               18 (11.1)             
##   type = 2 (%)            237 (99.6)             162 (100.0)           
##   femo = 1 (%)            34 (14.3)              32 (19.8)             
##   lysis = 1 (%)           0 (0.0)                1 (0.6)               
##   adh = 1 (%)             224 (94.1)             140 (86.4)            
##   thrombo = 1 (%)         1 (0.4)                4 (2.5)               
##   dead = 1 (%)            1 (0.4)                4 (2.5)               
##   acutehf = 1 (%)         0 (0.0)                3 (1.9)               
##   gusto (%)                                                            
##      1                    2 (0.8)                1 (0.6)               
##      3                    4 (1.7)                2 (1.2)               
##      0                    229 (96.2)             157 (96.9)            
##      2                    3 (1.3)                2 (1.2)               
##   transf = 1 (%)          4 (1.7)                2 (1.2)               
##   istroke = 1 (%)         0 (0.0)                2 (1.2)               
##   angina = 1 (%)          0 (0.0)                2 (1.2)               
##   oneevent = 1 (%)        10 (4.2)               16 (9.9)              
##   onedead = 1 (%)         4 (1.7)                3 (1.9)               
##   oneheart = 1 (%)        3 (1.3)                3 (1.9)               
##   onehf = 1 (%)           0 (0.0)                7 (4.3)               
##   oneangina = 1 (%)       6 (2.5)                5 (3.1)               
##   onemi = 1 (%)           3 (1.3)                2 (1.2)               
##   oness = 1 (%)           1 (0.4)                0 (0.0)               
##   onestroke = 0 (%)       238 (100.0)            162 (100.0)           
##   onegusto (%)                                                         
##      0                    6 (2.5)                15 (9.3)              
##      1                    1 (0.4)                0 (0.0)               
##      2                    1 (0.4)                1 (0.6)               
##      3                    2 (0.8)                1 (0.6)               
##      NaN                  228 (95.8)             145 (89.5)            
##   threeeven = 1 (%)       19 (8.0)               13 (8.0)              
##   threedead = 1 (%)       2 (0.8)                0 (0.0)               
##   threehear = 1 (%)       2 (0.8)                0 (0.0)               
##   onehf1 = 1 (%)          2 (0.8)                7 (4.3)               
##   threeangi = 1 (%)       5 (2.1)                5 (3.1)               
##   threemi = 0 (%)         238 (100.0)            162 (100.0)           
##   threess = 1 (%)         0 (0.0)                1 (0.6)               
##   threestro = 1 (%)       1 (0.4)                2 (1.2)               
##   threegust (%)                                                        
##      0                    10 (4.2)               10 (6.2)              
##      1                    3 (1.3)                0 (0.0)               
##      2                    3 (1.3)                1 (0.6)               
##      3                    4 (1.7)                1 (0.6)               
##      NaN                  218 (91.6)             150 (92.6)            
##   tstemi (median [IQR])   0.00 [0.00, 0.00]      0.00 [0.00, 5.00]     
##   timi (median [IQR])     3.00 [1.00, 4.00]      2.00 [0.00, 4.00]     
##   grace (median [IQR])    104.00 [87.00, 129.75] 104.00 [87.00, 126.00]
##   crusade (median [IQR])  34.00 [25.00, 43.00]   33.00 [25.00, 38.00]  
##   parismi (median [IQR])  3.00 [2.00, 4.00]      4.00 [3.00, 5.00]     
##   parisbld (median [IQR]) 5.00 [4.00, 7.00]      4.00 [3.00, 6.00]     
##   dapt (median [IQR])     0.50 [0.00, 1.00]      2.00 [2.00, 3.00]     
##   hasbld (median [IQR])   2.00 [2.00, 3.00]      2.00 [1.00, 3.00]     
##   gusto (%)                                                            
##      1                    2 (0.8)                1 (0.6)               
##      3                    4 (1.7)                2 (1.2)               
##      0                    229 (96.2)             157 (96.9)            
##      2                    3 (1.3)                2 (1.2)               
##                          Stratified by d_group
##                           p      test   
##   n                                     
##   htn = 1 (%)             0.125         
##   stent = 1 (%)           <0.001        
##   smk = 1 (%)             <0.001        
##   lipid = 1 (%)           0.003         
##   dm = 1 (%)              0.348         
##   insulin = 1 (%)         0.561         
##   ckd = 1 (%)             1.000         
##   dialysis = 0 (%)        NA            
##   cabg = 1 (%)            0.368         
##   vein = 1 (%)            0.129         
##   mi = 1 (%)              <0.001        
##   alcoh = 1 (%)           0.299         
##   hf = 1 (%)              0.001         
##   pad = 1 (%)             1.000         
##   aspirin = 1 (%)         <0.001        
##   bleed = 1 (%)           1.000         
##   ulcer = 1 (%)           0.563         
##   tbmn = 1 (%)            1.000         
##   stroke = 1 (%)          0.643         
##   ich = 1 (%)             1.000         
##   chf = 1 (%)             <0.001        
##   acs = 1 (%)             0.019         
##   stemi = 1 (%)           <0.001        
##   st = 1 (%)              <0.001        
##   ac = 1 (%)              0.058         
##   lm = 1 (%)              0.764         
##   type = 2 (%)            1.000         
##   femo = 1 (%)            0.191         
##   lysis = 1 (%)           0.846         
##   adh = 1 (%)             0.014         
##   thrombo = 1 (%)         0.176         
##   dead = 1 (%)            0.176         
##   acutehf = 1 (%)         0.129         
##   gusto (%)               0.978         
##      1                                  
##      3                                  
##      0                                  
##      2                                  
##   transf = 1 (%)          1.000         
##   istroke = 1 (%)         0.319         
##   angina = 1 (%)          0.319         
##   oneevent = 1 (%)        0.040         
##   onedead = 1 (%)         1.000         
##   oneheart = 1 (%)        0.953         
##   onehf = 1 (%)           0.004         
##   oneangina = 1 (%)       0.978         
##   onemi = 1 (%)           1.000         
##   oness = 1 (%)           1.000         
##   onestroke = 0 (%)       NA            
##   onegusto (%)            0.048         
##      0                                  
##      1                                  
##      2                                  
##      3                                  
##      NaN                                
##   threeeven = 1 (%)       1.000         
##   threedead = 1 (%)       0.654         
##   threehear = 1 (%)       0.654         
##   onehf1 = 1 (%)          0.050         
##   threeangi = 1 (%)       0.769         
##   threemi = 0 (%)         NA            
##   threess = 1 (%)         0.846         
##   threestro = 1 (%)       0.737         
##   threegust (%)           0.396         
##      0                                  
##      1                                  
##      2                                  
##      3                                  
##      NaN                                
##   tstemi (median [IQR])   <0.001 nonnorm
##   timi (median [IQR])     0.034  nonnorm
##   grace (median [IQR])    0.577  nonnorm
##   crusade (median [IQR])  0.346  nonnorm
##   parismi (median [IQR])  <0.001 nonnorm
##   parisbld (median [IQR]) 0.005  nonnorm
##   dapt (median [IQR])     <0.001 nonnorm
##   hasbld (median [IQR])   0.001  nonnorm
##   gusto (%)               0.978         
##      1                                  
##      3                                  
##      0                                  
##      2

Biến cố tích lũy sau 1-3 tháng

Tử vong

tuvong <- select(ninhdaca, onedead, threedead)
tuvong$time <- ifelse(tuvong$onedead == 1, "1 tháng", 
                      ifelse(tuvong$threedead == 1, "3 tháng", "Không"))
tab <- table(tuvong$time)
tab <- as.data.frame(tab)
tab$Tyle <- prop.table(tab$Freq) *100
tab$TyleTichluy <- cumsum(tab$Tyle)
print(tab)
##      Var1 Freq  Tyle TyleTichluy
## 1 1 tháng    7  1.75        1.75
## 2 3 tháng    2  0.50        2.25
## 3   Không  391 97.75      100.00

NMCT

nmct <- select(ninhdaca, onemi, threemi)
nmct$time <- ifelse(nmct$onemi == 1, "1 tháng", 
                      ifelse(nmct$threemi == 1, "3 tháng", "Không"))
tab <- table(nmct$time)
tab <- as.data.frame(tab)
tab$Tyle <- prop.table(tab$Freq) *100
tab$TyleTichluy <- cumsum(tab$Tyle)
print(tab) #NMCT trong NC chỉ gặp sau 1 tháng
##      Var1 Freq  Tyle TyleTichluy
## 1 1 tháng    5  1.25        1.25
## 2   Không  395 98.75      100.00

Tái hẹp trong stent

taihep <- select(ninhdaca, oness, threess)
taihep$time <- ifelse(taihep$oness == 1, "1 tháng", 
                      ifelse(taihep$threess == 1, "3 tháng", "Không"))
tab <- table(taihep$time)
tab <- as.data.frame(tab)
tab$Tyle <- prop.table(tab$Freq) *100
tab$TyleTichluy <- cumsum(tab$Tyle)
print(tab)
##      Var1 Freq  Tyle TyleTichluy
## 1 1 tháng    1  0.25        0.25
## 2 3 tháng    1  0.25        0.50
## 3   Không  398 99.50      100.00

Nhồi máu não

stroke <- select(ninhdaca, onestroke, threestro)
stroke$time <- ifelse(stroke$onestroke == 1, "1 tháng", 
                      ifelse(stroke$threestro == 1, "3 tháng", "Không"))
tab <- table(stroke$time)
tab <- as.data.frame(tab)
tab$Tyle <- prop.table(tab$Freq) *100
tab$TyleTichluy <- cumsum(tab$Tyle)
print(tab) #Không có tai biến sau 1 tháng
##      Var1 Freq  Tyle TyleTichluy
## 1 3 tháng    3  0.75        0.75
## 2   Không  397 99.25      100.00

Chảy máu

#Biến cố chảy máu ở đây lấy cả nhẹ -> nặng
bleed <- select(ninhdaca, onegusto, threegust)
bleed$time <- ifelse(bleed$onegusto != 0, "1 tháng", 
                      ifelse(bleed$threegust != 0, "3 tháng", "Không"))
tab <- table(bleed$time)
tab <- as.data.frame(tab)
tab$Tyle <- prop.table(tab$Freq) *100
tab$TyleTichluy <- cumsum(tab$Tyle)
print(tab) 
##      Var1 Freq  Tyle TyleTichluy
## 1 1 tháng  379 94.75       94.75
## 2 3 tháng   13  3.25       98.00
## 3   Không    8  2.00      100.00