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 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 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:
thrombo, dead, actutehf, gusto, transf, istroke, angina.one.eventthree.event.stemi, timi, grace, crusade, paris.mi, paris.bld, dapt, hasbld#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")
Đầ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
##
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)
#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-}
#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 :<
#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
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 <- 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
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
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
#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