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
| 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 | |||||
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.