Kết quả nghiên cứu

Phần 1: Đặc điểm lâm sàng - cận lâm sàng

Nhập số liệu và phân tích các biến phân phối chuẩn?

library(readxl)
quang1 <- read_excel("~/Desktop/Thầy Quang/quang1.xlsx", 
                     na = ".")
View(quang1)
attach(quang1)
shapiro.test(quang1$age)
## 
##  Shapiro-Wilk normality test
## 
## data:  quang1$age
## W = 0.9706, p-value = 0.0004095
shapiro.test(quang1$sofa)
## 
##  Shapiro-Wilk normality test
## 
## data:  quang1$sofa
## W = 0.78098, p-value = 8.517e-16
shapiro.test(quang1$timerx)
## 
##  Shapiro-Wilk normality test
## 
## data:  quang1$timerx
## W = 0.93255, p-value = 7.401e-08
shapiro.test(quang1$charlson)
## 
##  Shapiro-Wilk normality test
## 
## data:  quang1$charlson
## W = 0.89103, p-value = 1.028e-10
shapiro.test(quang1$bc)
## 
##  Shapiro-Wilk normality test
## 
## data:  quang1$bc
## W = 0.88593, p-value = 5.159e-11
shapiro.test(quang1$tc)
## 
##  Shapiro-Wilk normality test
## 
## data:  quang1$tc
## W = 0.97492, p-value = 0.001432
shapiro.test(quang1$lactate)
## 
##  Shapiro-Wilk normality test
## 
## data:  quang1$lactate
## W = 0.71681, p-value < 2.2e-16
shapiro.test(quang1$pct)
## 
##  Shapiro-Wilk normality test
## 
## data:  quang1$pct
## W = 0.46044, p-value < 2.2e-16
shapiro.test(quang1$ure)
## 
##  Shapiro-Wilk normality test
## 
## data:  quang1$ure
## W = 0.80854, p-value = 9.873e-15
shapiro.test(quang1$crea)
## 
##  Shapiro-Wilk normality test
## 
## data:  quang1$crea
## W = 0.68955, p-value < 2.2e-16
shapiro.test(quang1$na)
## 
##  Shapiro-Wilk normality test
## 
## data:  quang1$na
## W = 0.94458, p-value = 7.793e-07
shapiro.test(quang1$k)
## 
##  Shapiro-Wilk normality test
## 
## data:  quang1$k
## W = 0.076368, p-value < 2.2e-16
shapiro.test(quang1$bilitp)
## 
##  Shapiro-Wilk normality test
## 
## data:  quang1$bilitp
## W = 0.4256, p-value < 2.2e-16
shapiro.test(quang1$ph)
## 
##  Shapiro-Wilk normality test
## 
## data:  quang1$ph
## W = 0.9356, p-value = 1.313e-07
shapiro.test(quang1$pco2)
## 
##  Shapiro-Wilk normality test
## 
## data:  quang1$pco2
## W = 0.89205, p-value = 1.182e-10
shapiro.test(quang1$hco3)
## 
##  Shapiro-Wilk normality test
## 
## data:  quang1$hco3
## W = 0.95663, p-value = 1.117e-05
shapiro.test(quang1$apache)
## 
##  Shapiro-Wilk normality test
## 
## data:  quang1$apache
## W = 0.80121, p-value = 5.026e-15

–> Kết luận: Các biến trong nghiên cứu là biến không chuẩn –> Mô tả các biến bằng trung vị và IQR ## Đặc điểm dân số nghiên cứu - lâm sàng - cận lâm sàng

library(gtsummary)
summary2 <- quang1 %>%
  select(age, age75, sex, tha, dtd, suytim, bmv, xogan, copd, sgmd, bthman, ungthu, dqn, charlson, 
         nkhh, nkcath, nkmat, nktn, nkth, nkdmm, khac,
         sofa, sofa7, apache, shock, suyth, suyhh, suygan, suythan, suytk, suyhuyethoc,
         nkbv, bc, tc, lactate, pct, ure, crea, na, k, bilitp, ph, pco2, hco3, 
         sudungkstruoc, timerx, thomay,aztre, cefe, cefo, cefta, cipro, colistin, fosfo, genta,
         imi, mero, moxi, pipe1, pipe1tazo, tige, tobra, tmpsmz, tuvong) %>%
  tbl_summary(
    by = tuvong,
    type = all_continuous() ~ "continuous2",
    statistic = list(
      all_continuous() ~ c("{mean} ({sd})", "{median} ({p25}, {p75})", "{min}, {max}"), 
      all_categorical() ~ "{n} / {N} ({p}%)"),
    digits = all_continuous() ~ 2,
    label  = list(
      age ~ "Tuổi", 
      age75 ~ "Tuổi trên 75", 
      sex ~ "Giới tính", 
      tha ~ "Tăng huyết áp", 
      dtd ~ "Đái tháo đường", 
      suytim ~ "Suy tim", 
      bmv ~ "Bệnh mạch vành", 
      xogan ~ "Xơ gan", 
      copd ~ "Bệnh phổi mạn", 
      sgmd ~ "Suy giảm miễn dịch", 
      bthman ~ "Bệnh thận mạn", 
      ungthu ~ "Ung thư", 
      dqn ~ "Di chứng đột quỵ não", 
      charlson ~ "Điểm Charlson", 
      nkhh ~ "Nhiễm khuẩn hô hấp", 
      nkcath ~ "Nhiễm khuẩn catheter", 
      nkmat ~ "Nhiễm khuẩn đường mật", 
      nktn ~ "Nhiễm khuẩn tiết niệu", 
      nkth ~ "Nhiễm khuẩn tiêu hoá", 
      nkdmm ~ "Nhiễm khuẩn da mô mềm", 
      khac ~ "Khác",
      sofa ~ "Điểm SOFA", 
      sofa7 ~ "SOFA > 7", 
      apache ~ "Điểm APACHE II", 
      shock ~ "Sốc nhiễm khuẩn", 
      suyth ~ "Rối loạn tuần hoàn", 
      suyhh ~ "Rối loạn hô hấp", 
      suygan ~ "Rối loạn chức năng gan", 
      suythan ~ "Rối loạn chức năng thận", 
      suytk ~ "Rối loạn chức năng thần kinh", 
      suyhuyethoc ~ "Rối loạn chức năng đông máu",
      nkbv ~ "Nhiễm khuẩn bệnh viện", 
      bc ~ "Bạch cầu", 
      tc ~ "Tiểu cầu", 
      lactate ~ "Lactate máu", 
      pct ~ "Procalcitonin", 
      ure ~ "Ure", 
      crea ~ "Creatinine", 
      na ~ "Na",
      k ~ "K", 
      bilitp ~ "Bilirubin toàn phần", 
      ph ~ "pH", 
      pco2 ~ "pC02", 
      hco3 ~ "HC03", 
      sudungkstruoc ~ "Sử dụng kháng sinh trước đó", 
      timerx ~ "Thời gian điều trị", 
      thomay ~ "Thở máy xâm lấn",
      aztre ~ "Aztreonam",
      cefe ~ "Cefepim",
      cefo ~ "Cefotaxim",
      cefta ~ "Ceftazidime",
      cipro ~ "Ciproflocacin",
      colistin  ~ "Colistin",
      fosfo  ~ "Fosfomycin",
      genta  ~ "Gentamycin",
      imi  ~ "Imipenem",
      mero  ~ "Meropenem",
      moxi ~ "Moxiflocacin",
      pipe1 ~ "Piperacilin",
      pipe1tazo ~ "Piperaciline-tazobactam",
      tige ~ "Tigecycline",
      tobra ~ "Tobramycin",
      tmpsmz ~ "TMP-SMZ"),
    missing_text = "(Missing)"
  ) %>% 
  add_p(pvalue_fun = ~ style_pvalue(.x, digits = 2)) %>%
  add_overall() %>%
  add_n() %>%
  modify_caption("**Đặc điểm dân số nghiên cứu**") %>%
  bold_labels()
## There was an error in 'add_p()/add_difference()' for variable 'charlson', p-value omitted:
## Error in stats::fisher.test(c(6, 2, 2, 2, 4, 2, 4, 2, 3, 2, 3, 1, 4, 2, : FEXACT error 7(location). LDSTP=18630 is too small for this problem,
##   (pastp=52.6578, ipn_0:=ipoin[itp=604]=3170, stp[ipn_0]=50.2271).
## Increase workspace or consider using 'simulate.p.value=TRUE'
## There was an error in 'add_p()/add_difference()' for variable 'aztre', p-value omitted:
## Error in stats::chisq.test(x = c(NA, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, : 'x' and 'y' must have at least 2 levels
## There was an error in 'add_p()/add_difference()' for variable 'cefo', p-value omitted:
## Error in stats::chisq.test(x = c(NA, 1, 1, 1, 1, 1, 1, NA, NA, NA, 1, : 'x' and 'y' must have at least 2 levels
## There was an error in 'add_p()/add_difference()' for variable 'fosfo', p-value omitted:
## Error in stats::chisq.test(x = c(NA, 1, NA, NA, 1, 1, 1, NA, NA, NA, 1, : 'x' and 'y' must have at least 2 levels
summary2
Đặc điểm dân số nghiên cứu
Characteristic N Overall, N = 1951 0, N = 1221 1, N = 731 p-value2
Tuổi 195


<0.001
    Mean (SD)
77.08 (10.33) 74.63 (9.67) 81.16 (10.17)
    Median (IQR)
78.00 (68.00, 85.00) 75.00 (67.00, 83.00) 83.00 (74.00, 88.00)
    Range
60.00, 102.00 60.00, 102.00 60.00, 101.00
Tuổi trên 75 195 108 / 195 (55%) 56 / 122 (46%) 52 / 73 (71%) <0.001
Giới tính 195 116 / 195 (59%) 68 / 122 (56%) 48 / 73 (66%) 0.17
Tăng huyết áp 195 126 / 195 (65%) 75 / 122 (61%) 51 / 73 (70%) 0.24
Đái tháo đường 195 62 / 195 (32%) 36 / 122 (30%) 26 / 73 (36%) 0.38
Suy tim 195 56 / 195 (29%) 30 / 122 (25%) 26 / 73 (36%) 0.10
Bệnh mạch vành 195 54 / 195 (28%) 31 / 122 (25%) 23 / 73 (32%) 0.36
Xơ gan 195 12 / 195 (6.2%) 7 / 122 (5.7%) 5 / 73 (6.8%) 0.77
Bệnh phổi mạn 195 21 / 195 (11%) 16 / 122 (13%) 5 / 73 (6.8%) 0.17
Suy giảm miễn dịch 195 22 / 195 (11%) 15 / 122 (12%) 7 / 73 (9.6%) 0.56
Bệnh thận mạn 195 48 / 195 (25%) 34 / 122 (28%) 14 / 73 (19%) 0.17
Ung thư 195 10 / 195 (5.1%) 4 / 122 (3.3%) 6 / 73 (8.2%) 0.18
Di chứng đột quỵ não 195 30 / 195 (15%) 15 / 122 (12%) 15 / 73 (21%) 0.12
Điểm Charlson 195



    1
26 / 195 (13%) 21 / 122 (17%) 5 / 73 (6.8%)
    2
47 / 195 (24%) 26 / 122 (21%) 21 / 73 (29%)
    3
49 / 195 (25%) 32 / 122 (26%) 17 / 73 (23%)
    4
32 / 195 (16%) 20 / 122 (16%) 12 / 73 (16%)
    5
16 / 195 (8.2%) 11 / 122 (9.0%) 5 / 73 (6.8%)
    6
13 / 195 (6.7%) 6 / 122 (4.9%) 7 / 73 (9.6%)
    7
5 / 195 (2.6%) 4 / 122 (3.3%) 1 / 73 (1.4%)
    8
1 / 195 (0.5%) 0 / 122 (0%) 1 / 73 (1.4%)
    9
6 / 195 (3.1%) 2 / 122 (1.6%) 4 / 73 (5.5%)
Nhiễm khuẩn hô hấp 195 117 / 195 (60%) 68 / 122 (56%) 49 / 73 (67%) 0.12
Nhiễm khuẩn catheter 195 6 / 195 (3.1%) 5 / 122 (4.1%) 1 / 73 (1.4%) 0.41
Nhiễm khuẩn đường mật 195 9 / 195 (4.6%) 6 / 122 (4.9%) 3 / 73 (4.1%) >0.99
Nhiễm khuẩn tiết niệu 195 26 / 195 (13%) 19 / 122 (16%) 7 / 73 (9.6%) 0.23
Nhiễm khuẩn tiêu hoá 195 13 / 195 (6.7%) 9 / 122 (7.4%) 4 / 73 (5.5%) 0.77
Nhiễm khuẩn da mô mềm 195 10 / 195 (5.1%) 6 / 122 (4.9%) 4 / 73 (5.5%) >0.99
Khác 195 14 / 195 (7.2%) 9 / 122 (7.4%) 5 / 73 (6.8%) 0.89
Điểm SOFA 195


<0.001
    Mean (SD)
4.93 (3.73) 3.23 (1.89) 7.78 (4.28)
    Median (IQR)
3.00 (2.00, 7.00) 3.00 (2.00, 4.00) 7.00 (4.00, 11.00)
    Range
2.00, 18.00 2.00, 14.00 2.00, 18.00
SOFA > 7 195 51 / 195 (26%) 9 / 122 (7.4%) 42 / 73 (58%) <0.001
Điểm APACHE II 195


<0.001
    Mean (SD)
19.12 (7.75) 16.31 (5.53) 23.81 (8.66)
    Median (IQR)
16.00 (13.00, 25.00) 14.50 (13.00, 17.00) 25.00 (15.00, 32.00)
    Range
11.00, 38.00 11.00, 38.00 12.00, 38.00
Sốc nhiễm khuẩn 195 54 / 195 (28%) 12 / 122 (9.8%) 42 / 73 (58%) <0.001
Rối loạn tuần hoàn 195 112 / 195 (57%) 61 / 122 (50%) 51 / 73 (70%) 0.007
Rối loạn hô hấp 195 108 / 195 (55%) 48 / 122 (39%) 60 / 73 (82%) <0.001
Rối loạn chức năng gan 195 40 / 195 (21%) 15 / 122 (12%) 25 / 73 (34%) <0.001
Rối loạn chức năng thận 195 128 / 195 (66%) 74 / 122 (61%) 54 / 73 (74%) 0.058
Rối loạn chức năng thần kinh 195 56 / 195 (29%) 24 / 122 (20%) 32 / 73 (44%) <0.001
Rối loạn chức năng đông máu 195 66 / 195 (34%) 33 / 122 (27%) 33 / 73 (45%) 0.010
Nhiễm khuẩn bệnh viện 195 87 / 195 (45%) 38 / 122 (31%) 49 / 73 (67%) <0.001
Bạch cầu 195


0.77
    Mean (SD)
13.07 (7.03) 12.94 (6.82) 13.29 (7.42)
    Median (IQR)
12.12 (8.37, 15.78) 12.05 (8.67, 15.54) 12.50 (8.20, 16.00)
    Range
1.20, 50.50 2.10, 50.50 1.20, 41.42
Tiểu cầu 195


0.039
    Mean (SD)
200.19 (98.15) 209.85 (87.37) 184.05 (112.73)
    Median (IQR)
191.00 (128.00, 256.00) 200.00 (140.75, 255.75) 158.00 (110.00, 272.00)
    Range
4.00, 560.00 52.00, 538.00 4.00, 560.00
Lactate máu 195


<0.001
    Mean (SD)
4.37 (2.99) 3.81 (2.49) 5.32 (3.50)
    Median (IQR)
3.41 (2.45, 4.77) 3.13 (2.36, 3.94) 3.67 (3.09, 7.24)
    Range
2.05, 18.43 2.06, 16.67 2.05, 18.43
Procalcitonin 195


0.023
    Mean (SD)
9.21 (21.17) 9.11 (22.16) 9.38 (19.55)
    Median (IQR)
1.48 (0.56, 4.58) 1.23 (0.51, 3.47) 2.35 (0.80, 5.76)
    Range
0.05, 100.00 0.05, 100.00 0.06, 100.00
Ure 195


0.041
    Mean (SD)
11.89 (9.65) 10.33 (7.92) 14.52 (11.58)
    Median (IQR)
8.80 (5.45, 15.50) 8.05 (5.50, 11.40) 10.40 (5.30, 20.20)
    Range
1.10, 55.30 1.50, 47.20 1.10, 55.30
Creatinine 192


0.24
    Mean (SD)
174.63 (175.22) 180.29 (199.06) 164.77 (123.85)
    Median (IQR)
107.50 (75.00, 182.50) 94.50 (74.00, 163.75) 118.00 (83.00, 218.50)
    Range
16.20, 1,117.00 33.00, 1,117.00 16.20, 673.00
    (Missing)
3 0 3
Na 195


0.68
    Mean (SD)
134.41 (7.67) 134.20 (5.97) 134.74 (9.91)
    Median (IQR)
135.00 (130.00, 138.00) 135.00 (131.00, 137.75) 134.00 (129.00, 139.00)
    Range
114.00, 165.00 115.00, 149.00 114.00, 165.00
K 195


0.59
    Mean (SD)
4.46 (9.85) 3.79 (0.73) 5.58 (16.08)
    Median (IQR)
3.70 (3.30, 4.20) 3.70 (3.30, 4.20) 3.60 (3.30, 4.10)
    Range
1.90, 141.00 1.90, 6.10 2.70, 141.00
Bilirubin toàn phần 195


0.002
    Mean (SD)
18.52 (25.95) 17.25 (26.92) 20.65 (24.28)
    Median (IQR)
11.40 (8.75, 16.70) 10.45 (8.60, 14.30) 13.20 (9.60, 21.10)
    Range
3.60, 209.00 3.60, 209.00 6.00, 161.00
pH 195


0.54
    Mean (SD)
7.38 (0.09) 7.39 (0.08) 7.37 (0.10)
    Median (IQR)
7.38 (7.35, 7.44) 7.38 (7.35, 7.44) 7.38 (7.34, 7.46)
    Range
7.00, 7.70 7.05, 7.70 7.00, 7.60
pC02 195


0.70
    Mean (SD)
34.23 (9.90) 34.05 (9.11) 34.55 (11.17)
    Median (IQR)
33.60 (29.00, 37.00) 32.85 (29.40, 36.08) 35.00 (28.60, 38.90)
    Range
10.00, 86.20 10.00, 86.20 14.10, 73.70
HC03 195


0.092
    Mean (SD)
21.18 (5.33) 21.74 (4.89) 20.25 (5.90)
    Median (IQR)
22.00 (18.65, 24.00) 22.00 (19.25, 24.00) 20.20 (16.70, 24.00)
    Range
7.50, 41.90 7.50, 41.90 7.50, 41.10
Sử dụng kháng sinh trước đó 195 159 / 195 (82%) 98 / 122 (80%) 61 / 73 (84%) 0.57
Thời gian điều trị 195


0.040
    Mean (SD)
17.23 (10.10) 15.90 (9.21) 19.45 (11.16)
    Median (IQR)
15.00 (9.00, 23.00) 14.00 (9.00, 21.75) 16.00 (11.00, 26.00)
    Range
0.00, 50.00 0.00, 41.00 4.00, 50.00
Thở máy xâm lấn 195 75 / 195 (38%) 26 / 122 (21%) 49 / 73 (67%) <0.001
Aztreonam 118 118 / 118 (100%) 80 / 80 (100%) 38 / 38 (100%)
    (Missing)
77 42 35
Cefepim 157 135 / 157 (86%) 85 / 101 (84%) 50 / 56 (89%) 0.38
    (Missing)
38 21 17
Cefotaxim 122 122 / 122 (100%) 78 / 78 (100%) 44 / 44 (100%)
    (Missing)
73 44 29
Ceftazidime 157 143 / 157 (91%) 90 / 101 (89%) 53 / 56 (95%) 0.38
    (Missing)
38 21 17
Ciproflocacin 157 9 / 157 (5.7%) 5 / 103 (4.9%) 4 / 54 (7.4%) 0.50
    (Missing)
38 19 19
Colistin 144 59 / 144 (41%) 37 / 91 (41%) 22 / 53 (42%) 0.92
    (Missing)
51 31 20
Fosfomycin 111 111 / 111 (100%) 75 / 75 (100%) 36 / 36 (100%)
    (Missing)
84 47 37
Gentamycin 160 126 / 160 (79%) 82 / 104 (79%) 44 / 56 (79%) 0.97
    (Missing)
35 18 17
Imipenem 151 144 / 151 (95%) 92 / 99 (93%) 52 / 52 (100%) 0.10
    (Missing)
44 23 21
Meropenem 154 143 / 154 (93%) 91 / 102 (89%) 52 / 52 (100%) 0.016
    (Missing)
41 20 21
Moxiflocacin 101 1 / 101 (1.0%) 1 / 69 (1.4%) 0 / 32 (0%) >0.99
    (Missing)
94 53 41
Piperacilin 152 132 / 152 (87%) 85 / 100 (85%) 47 / 52 (90%) 0.35
    (Missing)
43 22 21
Piperaciline-tazobactam 156 144 / 156 (92%) 92 / 102 (90%) 52 / 54 (96%) 0.22
    (Missing)
39 20 19
Tigecycline 123 2 / 123 (1.6%) 2 / 82 (2.4%) 0 / 41 (0%) 0.55
    (Missing)
72 40 32
Tobramycin 134 124 / 134 (93%) 84 / 91 (92%) 40 / 43 (93%) >0.99
    (Missing)
61 31 30
TMP-SMZ 182 14 / 182 (7.7%) 8 / 117 (6.8%) 6 / 65 (9.2%) 0.56
    (Missing)
13 5 8
1 n / N (%)
2 Wilcoxon rank sum test; Pearson’s Chi-squared test; Fisher’s exact test

Kết luận:

Kết luận về kháng sinh đồ Stenotrophomonas maltophilia - 195BN

Phần 2: Các yếu tố nguy cơ tử vong ở bệnh nhân nhiễm khuẩn huyết do Stenotrophomonas maltophilia - Mô hình hồi quy logistic đa biến

tempquang1 <- glm(tuvong ~ age + sex + suytim + copd + bthman + ungthu +dqn
             + nkhh + sofa + apache + shock + nkbv + lactate + pct + timerx
             + thomay, family="binomial", data=quang1)
search <- step(tempquang1)
## Start:  AIC=159.82
## tuvong ~ age + sex + suytim + copd + bthman + ungthu + dqn + 
##     nkhh + sofa + apache + shock + nkbv + lactate + pct + timerx + 
##     thomay
## 
##           Df Deviance    AIC
## - thomay   1   125.85 157.85
## - timerx   1   126.10 158.10
## - dqn      1   126.33 158.33
## - copd     1   126.58 158.58
## - sex      1   126.67 158.67
## - shock    1   127.60 159.60
## - lactate  1   127.75 159.75
## <none>         125.82 159.82
## - ungthu   1   128.29 160.29
## - suytim   1   128.37 160.37
## - bthman   1   130.63 162.63
## - nkbv     1   130.80 162.80
## - nkhh     1   132.67 164.67
## - pct      1   133.82 165.82
## - apache   1   136.71 168.71
## - age      1   140.87 172.87
## - sofa     1   147.59 179.59
## 
## Step:  AIC=157.85
## tuvong ~ age + sex + suytim + copd + bthman + ungthu + dqn + 
##     nkhh + sofa + apache + shock + nkbv + lactate + pct + timerx
## 
##           Df Deviance    AIC
## - timerx   1   126.11 156.11
## - dqn      1   126.37 156.37
## - copd     1   126.59 156.59
## - sex      1   126.68 156.68
## - shock    1   127.65 157.65
## - lactate  1   127.83 157.83
## <none>         125.85 157.85
## - ungthu   1   128.33 158.33
## - suytim   1   128.40 158.40
## - nkbv     1   131.17 161.17
## - bthman   1   131.17 161.17
## - nkhh     1   132.88 162.88
## - pct      1   134.29 164.29
## - apache   1   137.06 167.06
## - age      1   141.65 171.65
## - sofa     1   156.01 186.01
## 
## Step:  AIC=156.11
## tuvong ~ age + sex + suytim + copd + bthman + ungthu + dqn + 
##     nkhh + sofa + apache + shock + nkbv + lactate + pct
## 
##           Df Deviance    AIC
## - dqn      1   126.63 154.63
## - sex      1   126.84 154.84
## - copd     1   126.95 154.95
## - shock    1   127.79 155.79
## - lactate  1   127.92 155.92
## <none>         126.11 156.11
## - ungthu   1   128.63 156.63
## - suytim   1   128.70 156.70
## - nkbv     1   131.17 159.17
## - bthman   1   131.23 159.23
## - pct      1   134.29 162.29
## - nkhh     1   134.79 162.79
## - apache   1   137.69 165.69
## - age      1   141.68 169.68
## - sofa     1   156.01 184.01
## 
## Step:  AIC=154.63
## tuvong ~ age + sex + suytim + copd + bthman + ungthu + nkhh + 
##     sofa + apache + shock + nkbv + lactate + pct
## 
##           Df Deviance    AIC
## - sex      1   127.10 153.10
## - copd     1   127.55 153.55
## - shock    1   128.24 154.24
## - lactate  1   128.26 154.26
## <none>         126.63 154.63
## - suytim   1   129.12 155.12
## - ungthu   1   129.26 155.26
## - nkbv     1   131.65 157.65
## - bthman   1   131.70 157.70
## - pct      1   134.77 160.77
## - nkhh     1   135.39 161.39
## - apache   1   137.69 163.69
## - age      1   141.70 167.70
## - sofa     1   156.58 182.58
## 
## Step:  AIC=153.1
## tuvong ~ age + suytim + copd + bthman + ungthu + nkhh + sofa + 
##     apache + shock + nkbv + lactate + pct
## 
##           Df Deviance    AIC
## - copd     1   128.00 152.00
## - lactate  1   128.52 152.52
## - shock    1   128.81 152.81
## <none>         127.10 153.10
## - suytim   1   129.40 153.40
## - ungthu   1   129.85 153.85
## - nkbv     1   131.91 155.91
## - bthman   1   132.33 156.33
## - pct      1   135.49 159.49
## - nkhh     1   136.07 160.07
## - apache   1   138.25 162.25
## - age      1   142.06 166.06
## - sofa     1   157.23 181.23
## 
## Step:  AIC=152
## tuvong ~ age + suytim + bthman + ungthu + nkhh + sofa + apache + 
##     shock + nkbv + lactate + pct
## 
##           Df Deviance    AIC
## - lactate  1   129.31 151.31
## - shock    1   129.76 151.76
## <none>         128.00 152.00
## - suytim   1   130.49 152.49
## - ungthu   1   130.50 152.50
## - nkbv     1   132.30 154.30
## - bthman   1   133.12 155.12
## - nkhh     1   136.09 158.09
## - pct      1   136.14 158.14
## - apache   1   138.35 160.35
## - age      1   142.07 164.07
## - sofa     1   157.48 179.48
## 
## Step:  AIC=151.31
## tuvong ~ age + suytim + bthman + ungthu + nkhh + sofa + apache + 
##     shock + nkbv + pct
## 
##          Df Deviance    AIC
## - shock   1   131.23 151.23
## <none>        129.31 151.31
## - ungthu  1   131.85 151.85
## - suytim  1   131.95 151.95
## - bthman  1   133.48 153.48
## - nkbv    1   133.57 153.57
## - pct     1   136.24 156.24
## - nkhh    1   137.87 157.87
## - apache  1   142.75 162.75
## - age     1   143.08 163.08
## - sofa    1   157.81 177.81
## 
## Step:  AIC=151.23
## tuvong ~ age + suytim + bthman + ungthu + nkhh + sofa + apache + 
##     nkbv + pct
## 
##          Df Deviance    AIC
## <none>        131.23 151.23
## - suytim  1   133.27 151.27
## - ungthu  1   133.92 151.92
## - bthman  1   135.24 153.24
## - nkbv    1   137.32 155.32
## - pct     1   137.39 155.39
## - nkhh    1   139.48 157.48
## - age     1   145.60 163.60
## - apache  1   147.68 165.68
## - sofa    1   177.18 195.18
summary(search)
## 
## Call:
## glm(formula = tuvong ~ age + suytim + bthman + ungthu + nkhh + 
##     sofa + apache + nkbv + pct, family = "binomial", data = quang1)
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -12.08728    2.36653  -5.108 3.26e-07 ***
## age           0.08968    0.02571   3.487 0.000488 ***
## suytim        0.71563    0.50559   1.415 0.156942    
## bthman       -1.15196    0.60773  -1.896 0.058026 .  
## ungthu        1.35212    0.84182   1.606 0.108230    
## nkhh         -1.47170    0.54467  -2.702 0.006892 ** 
## sofa          0.51589    0.10136   5.090 3.58e-07 ***
## apache        0.13186    0.03414   3.862 0.000113 ***
## nkbv          1.20201    0.49297   2.438 0.014756 *  
## pct          -0.02839    0.01223  -2.321 0.020293 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 257.88  on 194  degrees of freedom
## Residual deviance: 131.23  on 185  degrees of freedom
## AIC: 151.23
## 
## Number of Fisher Scoring iterations: 6
library(foreign)
library(survival)
library(MASS)
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:gtsummary':
## 
##     select
library(nnet)
library(epiDisplay)
logistic.display(tempquang1)
## 
## Logistic regression predicting tuvong 
##  
##                      crude OR(95%CI)     adj. OR(95%CI)     P(Wald's test)
## age (cont. var.)     1.07 (1.04,1.1)     1.11 (1.04,1.17)   < 0.001       
##                                                                           
## sex: 1 vs 0          1.52 (0.84,2.78)    1.58 (0.59,4.22)   0.361         
##                                                                           
## suytim: 1 vs 0       1.7 (0.9,3.19)      2.28 (0.82,6.36)   0.115         
##                                                                           
## copd: 1 vs 0         0.49 (0.17,1.39)    2.35 (0.37,15.04)  0.366         
##                                                                           
## bthman: 1 vs 0       0.61 (0.3,1.24)     0.24 (0.06,0.94)   0.041         
##                                                                           
## ungthu: 1 vs 0       2.64 (0.72,9.7)     3.85 (0.7,21.18)   0.121         
##                                                                           
## dqn: 1 vs 0          1.84 (0.84,4.04)    0.63 (0.18,2.25)   0.478         
##                                                                           
## nkhh: 1 vs 0         1.62 (0.89,2.97)    0.21 (0.06,0.73)   0.014         
##                                                                           
## sofa (cont. var.)    1.6 (1.39,1.85)     1.62 (1.27,2.06)   < 0.001       
##                                                                           
## apache (cont. var.)  1.15 (1.09,1.2)     1.13 (1.05,1.22)   0.002         
##                                                                           
## shock: 1 vs 0        12.42 (5.84,26.43)  2.45 (0.66,9.07)   0.179         
##                                                                           
## nkbv: 1 vs 0         4.51 (2.43,8.4)     3.41 (1.13,10.25)  0.029         
##                                                                           
## lactate (cont. var.) 1.19 (1.07,1.32)    1.14 (0.94,1.38)   0.173         
##                                                                           
## pct (cont. var.)     1 (0.99,1.01)       0.96 (0.93,0.99)   0.007         
##                                                                           
## timerx (cont. var.)  1.04 (1.01,1.07)    0.99 (0.93,1.04)   0.596         
##                                                                           
## thomay: 1 vs 0       7.54 (3.92,14.48)   1.11 (0.3,4.09)    0.875         
##                                                                           
##                      P(LR-test)
## age (cont. var.)     < 0.001   
##                                
## sex: 1 vs 0          0.357     
##                                
## suytim: 1 vs 0       0.11      
##                                
## copd: 1 vs 0         0.384     
##                                
## bthman: 1 vs 0       0.028     
##                                
## ungthu: 1 vs 0       0.116     
##                                
## dqn: 1 vs 0          0.475     
##                                
## nkhh: 1 vs 0         0.009     
##                                
## sofa (cont. var.)    < 0.001   
##                                
## apache (cont. var.)  < 0.001   
##                                
## shock: 1 vs 0        0.182     
##                                
## nkbv: 1 vs 0         0.026     
##                                
## lactate (cont. var.) 0.165     
##                                
## pct (cont. var.)     0.005     
##                                
## timerx (cont. var.)  0.595     
##                                
## thomay: 1 vs 0       0.875     
##                                
## Log-likelihood = -62.911
## No. of observations = 195
## AIC value = 159.822

Kết luận: Chọn các biến có p<0,2 đưa vào hồi quy đa biến + loại trừ các biến có khả năng đa cộng tuyến, kết quả cho thấy: Tuổi, nhiễm khuẩn hô hấp, SOFA, APACHE II, Nhiễm khuẩn bệnh viện, procalcitonin là yếu tố nguy cơ độc lập với tử vong ở nhiễm khuẩn huyết do Stenotrophomonas maltophilia # Kiểm tra đa cộng tuyến bằng Hồi quy Lasso và đưa các biến vào hồi quy đa biến

library(glmnet)
## Loading required package: Matrix
## Loaded glmnet 4.1-8
library(Matrix)
library(carData)
xvars <- model.matrix(tuvong ~ age + sex + suytim + copd + bthman + ungthu +dqn
                      + nkhh + sofa + apache + shock + nkbv + lactate + pct + timerx
                      + thomay, data=quang1)
yvar <- scale(quang1$tuvong)
lasso <- cv.glmnet(xvars, yvar, alpha=1)
plot(lasso)

coef(lasso)
## 18 x 1 sparse Matrix of class "dgCMatrix"
##                       s1
## (Intercept) -1.290650012
## (Intercept)  .          
## age          0.006638663
## sex          .          
## suytim       .          
## copd         .          
## bthman       .          
## ungthu       .          
## dqn          .          
## nkhh         .          
## sofa         0.078925221
## apache       0.015383060
## shock        0.188425111
## nkbv         .          
## lactate      .          
## pct          .          
## timerx       .          
## thomay       0.112647726
tempquang2 <- glm(tuvong ~ age + nkhh + shock + thomay +
                    sofa + apache, family="binomial", data=quang1)
logistic.display(tempquang2)
## 
## Logistic regression predicting tuvong 
##  
##                     crude OR(95%CI)     adj. OR(95%CI)    P(Wald's test)
## age (cont. var.)    1.07 (1.04,1.1)     1.08 (1.03,1.13)  < 0.001       
##                                                                         
## nkhh: 1 vs 0        1.62 (0.89,2.97)    0.35 (0.13,0.94)  0.036         
##                                                                         
## shock: 1 vs 0       12.42 (5.84,26.43)  2.36 (0.74,7.52)  0.148         
##                                                                         
## thomay: 1 vs 0      7.54 (3.92,14.48)   2.18 (0.74,6.43)  0.157         
##                                                                         
## sofa (cont. var.)   1.6 (1.39,1.85)     1.38 (1.14,1.68)  0.001         
##                                                                         
## apache (cont. var.) 1.15 (1.09,1.2)     1.1 (1.04,1.17)   0.002         
##                                                                         
##                     P(LR-test)
## age (cont. var.)    < 0.001   
##                               
## nkhh: 1 vs 0        0.03      
##                               
## shock: 1 vs 0       0.152     
##                               
## thomay: 1 vs 0      0.161     
##                               
## sofa (cont. var.)   < 0.001   
##                               
## apache (cont. var.) 0.002     
##                               
## Log-likelihood = -73.255
## No. of observations = 195
## AIC value = 160.51

Kết quả cho thấy mô hình hồi quy đa biến: Tuổi, SOFA, APACHE II, nhiễm khuẩn hô hấp là yếu tố nguy cơ độc lập với với tử vong ở nhiễm khuẩn huyết do Stenotrophomonas maltophilia ## Phần 3: Mô hình tiên lượng tử vong ở bệnh nhân nhiễm khuẩn huyết do Stenotrophomonas maltophilia - Phân tích bằng BMA tìm mô hình thích hợp - Tìm Nomogram

df <- data.frame(quang1$age, quang1$sex, quang1$suytim, quang1$copd,
                   quang1$bthman, quang1$ungthu, quang1$dqn,
                   quang1$nkhh, quang1$sofa, 
                   quang1$apache, quang1$shock, quang1$nkbv, quang1$lactate, 
                   quang1$pct, quang1$timerx, quang1$thomay, quang1$tuvong)
head(df)
##   quang1.age quang1.sex quang1.suytim quang1.copd quang1.bthman quang1.ungthu
## 1         83          1             0           0             0             0
## 2         96          0             0           0             0             0
## 3         67          1             1           0             0             0
## 4         80          1             0           0             0             0
## 5         89          1             0           0             0             0
## 6         90          1             0           1             0             0
##   quang1.dqn quang1.nkhh quang1.sofa quang1.apache quang1.shock quang1.nkbv
## 1          1           1          13            27            1           1
## 2          0           1           3            29            0           1
## 3          1           1           6            35            1           1
## 4          0           1           4            28            0           0
## 5          1           0           2            15            1           1
## 6          0           0           8            25            0           1
##   quang1.lactate quang1.pct quang1.timerx quang1.thomay quang1.tuvong
## 1          13.01       4.13            14             1             1
## 2           3.40       2.02             4             1             1
## 3           3.30       5.06            11             1             1
## 4           2.58       2.00            33             1             0
## 5           2.30       3.02            11             1             1
## 6           2.12       5.63            16             1             1
attach(df)
names(df)
##  [1] "quang1.age"     "quang1.sex"     "quang1.suytim"  "quang1.copd"   
##  [5] "quang1.bthman"  "quang1.ungthu"  "quang1.dqn"     "quang1.nkhh"   
##  [9] "quang1.sofa"    "quang1.apache"  "quang1.shock"   "quang1.nkbv"   
## [13] "quang1.lactate" "quang1.pct"     "quang1.timerx"  "quang1.thomay" 
## [17] "quang1.tuvong"
xvars <- df[,1:16]
y <- quang1$tuvong
library(survival)
library(leaps)
library(robustbase)
## 
## Attaching package: 'robustbase'
## The following object is masked from 'package:survival':
## 
##     heart
library(inline)
library(rrcov)
## Scalable Robust Estimators with High Breakdown Point (version 1.7-5)
library(BMA)
bma.search1 <- bic.glm(xvars, y, strict=F, OR=20, glm.family="binomial")
summary(bma.search1)
## 
## Call:
## bic.glm.data.frame(x = xvars, y = y, glm.family = "binomial",     strict = F, OR = 20)
## 
## 
##   41  models were selected
##  Best  5  models (cumulative posterior probability =  0.3483 ): 
## 
##                 p!=0    EV         SD        model 1     model 2     model 3   
## Intercept       100    -1.068e+01  2.135845   -10.18348   -10.40762   -10.79819
## quang1.age      100.0   7.960e-02  0.023421     0.07396     0.07563     0.07889
## quang1.sex        2.2   9.533e-03  0.088956       .           .           .    
## quang1.suytim     1.2   3.916e-03  0.060433       .           .           .    
## quang1.copd       1.0  -6.625e-04  0.074807       .           .           .    
## quang1.bthman    24.3  -2.566e-01  0.533838       .           .           .    
## quang1.ungthu    16.8   2.399e-01  0.633869       .           .           .    
## quang1.dqn        1.0  -1.308e-03  0.058589       .           .           .    
## quang1.nkhh      34.9  -3.465e-01  0.557262       .           .           .    
## quang1.sofa     100.0   4.430e-01  0.095987     0.43244     0.47638     0.37864
## quang1.apache   100.0   1.030e-01  0.031695     0.09528     0.09938     0.09946
## quang1.shock      8.2   7.163e-02  0.291979       .           .           .    
## quang1.nkbv      31.5   3.046e-01  0.522035       .           .         0.82794
## quang1.lactate    1.7   5.231e-04  0.011599       .           .           .    
## quang1.pct       35.2  -8.430e-03  0.013451       .        -0.02177       .    
## quang1.timerx     1.0  -2.116e-05  0.002004       .           .           .    
## quang1.thomay     2.3   1.297e-02  0.119474       .           .           .    
##                                                                                
## nVar                                              3           4           4    
## BIC                                          -853.33646  -851.90158  -851.53801
## post prob                                       0.133       0.065       0.054  
##                 model 4     model 5   
## Intercept        -10.13194   -10.49985
## quang1.age         0.07473     0.07910
## quang1.sex           .           .    
## quang1.suytim        .           .    
## quang1.copd          .           .    
## quang1.bthman     -0.95575       .    
## quang1.ungthu        .           .    
## quang1.dqn           .           .    
## quang1.nkhh          .        -0.76988
## quang1.sofa        0.45014     0.46460
## quang1.apache      0.09580     0.10707
## quang1.shock         .           .    
## quang1.nkbv          .           .    
## quang1.lactate       .           .    
## quang1.pct           .           .    
## quang1.timerx        .           .    
## quang1.thomay        .           .    
##                                       
## nVar                 4           4    
## BIC             -851.48752  -851.10717
## post prob          0.053       0.044
imageplot.bma(bma.search1)

Kết quả từ BMA: cho thấy mô hình tiên lượng tốt nhất bao gồm các biến sau: tuổi, sofa, apache ii, nhiễm khuẩn hô hấp. Việc chọn lựa mô hình tiên lượng cần tối giản, ít biến nhất mà vẫn cho tiên lượng tốt trên lâm sàng # Kiểm tra mô hình nào tốt nhất - thuận tiện? #1. Đánh giá mức độ ảnh hưởng của các biến tiên lượng?

library(dominanceanalysis)
tempquang <- glm(tuvong ~ age + nkhh + 
                   sofa + apache + nkbv + pct, family="binomial", data=quang1)
dom <- dominanceAnalysis(tempquang)
plot(dom, which.graph ="general",fit.function ="r2.m")

Kết luận: SOFA tiên lương tốt nhất, kế đến là APACHE II, và tuổi. #2. Kiểm tra 3 mô hình được gợi ý bởi BMA (Mô hình 1: tuổi, sofa, apacheii; Mô hình 2 là Tuổi, sofa, apache II, nhiễm khuẩn hô hấp; mô hình 3: tuổi và sofa)

library(rms)
## Loading required package: Hmisc
## 
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:base':
## 
##     format.pval, units
## Registered S3 method overwritten by 'rms':
##   method       from      
##   print.lrtest epiDisplay
## 
## Attaching package: 'rms'
## The following object is masked from 'package:epiDisplay':
## 
##     lrtest
mquang1 <- lrm(tuvong ~ age + nkhh + 
                 sofa + apache, x=TRUE,y=TRUE, data=quang1)
mquang1
## Logistic Regression Model
## 
## lrm(formula = tuvong ~ age + nkhh + sofa + apache, data = quang1, 
##     x = TRUE, y = TRUE)
## 
##                        Model Likelihood    Discrimination    Rank Discrim.    
##                              Ratio Test           Indexes          Indexes    
## Obs           195    LR chi2     107.12    R2       0.576    C       0.892    
##  0            122    d.f.             4    R2(4,195)0.411    Dxy     0.784    
##  1             73    Pr(> chi2) <0.0001    R2(4,137)0.529    gamma   0.785    
## max |deriv| 9e-11                          Brier    0.122    tau-a   0.369    
## 
##           Coef     S.E.   Wald Z Pr(>|Z|)
## Intercept -10.4998 1.9940 -5.27  <0.0001 
## age         0.0791 0.0221  3.58  0.0003  
## nkhh       -0.7699 0.4497 -1.71  0.0869  
## sofa        0.4646 0.0861  5.40  <0.0001 
## apache      0.1071 0.0298  3.59  0.0003
mquang2 <- lrm(tuvong ~ age + sofa + apache, x=TRUE,y=TRUE, data=quang1)
mquang2
## Logistic Regression Model
## 
## lrm(formula = tuvong ~ age + sofa + apache, data = quang1, x = TRUE, 
##     y = TRUE)
## 
##                        Model Likelihood    Discrimination    Rank Discrim.    
##                              Ratio Test           Indexes          Indexes    
## Obs           195    LR chi2     104.08    R2       0.564    C       0.884    
##  0            122    d.f.             3    R2(3,195)0.404    Dxy     0.768    
##  1             73    Pr(> chi2) <0.0001    R2(3,137)0.522    gamma   0.769    
## max |deriv| 5e-05                          Brier    0.124    tau-a   0.362    
## 
##           Coef     S.E.   Wald Z Pr(>|Z|)
## Intercept -10.1835 1.9453 -5.23  <0.0001 
## age         0.0740 0.0216  3.43  0.0006  
## sofa        0.4324 0.0797  5.43  <0.0001 
## apache      0.0953 0.0285  3.35  0.0008
mquang3 <- lrm(tuvong ~ age + sofa, x=TRUE,y=TRUE, data=quang1)
mquang3
## Logistic Regression Model
## 
## lrm(formula = tuvong ~ age + sofa, data = quang1, x = TRUE, y = TRUE)
## 
##                        Model Likelihood    Discrimination    Rank Discrim.    
##                              Ratio Test           Indexes          Indexes    
## Obs           195    LR chi2      92.70    R2       0.516    C       0.874    
##  0            122    d.f.             2    R2(2,195)0.372    Dxy     0.747    
##  1             73    Pr(> chi2) <0.0001    R2(2,137)0.484    gamma   0.750    
## max |deriv| 2e-05                          Brier    0.135    tau-a   0.352    
## 
##           Coef    S.E.   Wald Z Pr(>|Z|)
## Intercept -8.6987 1.7406 -5.00  <0.0001 
## age        0.0746 0.0205  3.63  0.0003  
## sofa       0.4964 0.0809  6.14  <0.0001

Kết luận: Mô hình thuận tiện nhất, ít biến nhất mà vẫn có thể đánh giá được tiên lượng tử vong là mô hình gồm có tuổi phối hợp với điểm SOFA với AUC là 0,874 cao hơn SOFA đơn độc là 0,834.