Cette étude s’inscrit dans le cadre de l’analyse de la survie des patients admis en unité de soins intensifs. L’objectif est d’identifier les facteurs associés au risque de décès à partir des caractéristiques sociodémographiques, cliniques et physiologiques recueillies à l’admission. La variable d’intérêt est le décès (oui/non), ce qui justifie l’utilisation d’un modèle de régression logistique binaire afin d’estimer l’association entre les facteurs étudiés et la probabilité de décès. Les effets des variables explicatives furent quantifiées à l’aide des odds ratios et de leurs intervalles de confiance à 95 %, permettant d’identifier les principaux déterminants du risque de décès après ajustement.
Nous avions importé le jeu de données relatives aux décès et avions traité les données manquants
Au total, treize variables dont sept quantitaives et six qualitatives contituent le jeu de données. Les patients admis aux soins intentsifs et enrolés dans l’étude étaient majoritairement de sexe féminin (63 %) et admis en chirurgie (52 %)- Leurs âges médian était de 64 ans (min-max : 16-92). Le tableau ci-après résume la descritption de l’ensemble des variables de cette étude.
# Première étape : stats descriptives ----
print(dfSummary(ICU))
## Data Frame Summary
## ICU
## Dimensions: 256 x 13
## Duplicates: 0
##
## ------------------------------------------------------------------------------------------------------------
## No Variable Stats / Values Freqs (% of Valid) Graph Valid Missing
## ---- ----------- -------------------------- --------------------- --------------------- ---------- ---------
## 1 DECEDE Min : 0 0 : 188 (73.4%) IIIIIIIIIIIIII 256 0
## [integer] Mean : 0.3 1 : 68 (26.6%) IIIII (100.0%) (0.0%)
## Max : 1
##
## 2 AGE Mean (sd) : 58.8 (19.8) 65 distinct values : . 256 0
## [integer] min < med < max: : : (100.0%) (0.0%)
## 16 < 64 < 92 . : :
## IQR (CV) : 25 (0.3) . : : : : .
## : : : : : : : : .
##
## 3 SEXE Min : 0 0 : 162 (63.3%) IIIIIIIIIIII 256 0
## [integer] Mean : 0.4 1 : 94 (36.7%) IIIIIII (100.0%) (0.0%)
## Max : 1
##
## 4 CHIR_MED Min : 0 0 : 121 (47.3%) IIIIIIIII 256 0
## [numeric] Mean : 0.5 1 : 135 (52.7%) IIIIIIIIII (100.0%) (0.0%)
## Max : 1
##
## 5 INF_J0 Min : 0 0 : 148 (57.8%) IIIIIIIIIII 256 0
## [integer] Mean : 0.4 1 : 108 (42.2%) IIIIIIII (100.0%) (0.0%)
## Max : 1
##
## 6 TA_SYS Mean (sd) : 130.3 (33.6) 63 distinct values . : 256 0
## [integer] min < med < max: : : (100.0%) (0.0%)
## 36 < 130 < 256 : : .
## IQR (CV) : 38.5 (0.3) . : : : .
## . : : : : : : .
##
## 7 FC Mean (sd) : 98.6 (26.7) 81 distinct values : 256 0
## [integer] min < med < max: : (100.0%) (0.0%)
## 39 < 95 < 192 . : .
## IQR (CV) : 38 (0.3) : : : :
## : : : : : .
##
## 8 URG_NURG Min : 0 0 : 63 (24.6%) IIII 256 0
## [integer] Mean : 0.8 1 : 193 (75.4%) IIIIIIIIIIIIIII (100.0%) (0.0%)
## Max : 1
##
## 9 PO2 Mean (sd) : 85.3 (18.7) 238 distinct values : 256 0
## [numeric] min < med < max: : : : (100.0%) (0.0%)
## 24.3 < 84.8 < 133.7 : : :
## IQR (CV) : 24.3 (0.2) . : : : :
## : : : : : : : .
##
## 10 PH Mean (sd) : 7.4 (0.1) 226 distinct values : 256 0
## [numeric] min < med < max: . : : . (100.0%) (0.0%)
## 7.1 < 7.4 < 7.6 . : : : : .
## IQR (CV) : 0.1 (0) : : : : : : .
## . . : : : : : : : :
##
## 11 BICAR Mean (sd) : 26.1 (6) 218 distinct values : 256 0
## [numeric] min < med < max: : . (100.0%) (0.0%)
## 9.8 < 25.3 < 42.6 : : :
## IQR (CV) : 9.3 (0.2) . : : :
## . : : : : :
##
## 12 CONSC Mean (sd) : 0.2 (0.6) 0 : 228 (89.1%) IIIIIIIIIIIIIIIII 256 0
## [integer] min < med < max: 1 : 8 ( 3.1%) (100.0%) (0.0%)
## 0 < 0 < 2 2 : 20 ( 7.8%) I
## IQR (CV) : 0 (3)
##
## 13 GLASGOW Mean (sd) : 12.5 (3.2) 14 distinct values : 256 0
## [integer] min < med < max: : (100.0%) (0.0%)
## 0 < 14 < 15 : :
## IQR (CV) : 3 (0.3) : : :
## . . . : : :
## ------------------------------------------------------------------------------------------------------------
Nous avions réalisé une anlayse univariée consistant à croiser chaque variable indépendante avec la variable dépendante. Les variables associés au décès au seuil de 25 % ont été retenus pour construire le premier modèle de regression logistique. Il s’agissait de l’âge, la chirurgie subie, l’infection le jour d’admission, la tension artérielle systolique, l’admission en urgence, le ph, le paramètre biologique (bicar), l’état de conscience et le score de glasgow.
#croissement de la variable dépendante avec chaque vaiable dépendant ave tests statistiques adaptés
tab1 = tbl_summary(ICU, by = DECEDE) %>%
add_p(test = list(
all_continuous() ~ "t.test",
all_categorical() ~ "fisher.test"))
tab1
| Characteristic | 0 N = 1881 |
1 N = 681 |
p-value2 |
|---|---|---|---|
| AGE | 62 (44, 71) | 70 (60, 75) | <0.001 |
| SEXE | 68 (36%) | 26 (38%) | 0.8 |
| CHIR_MED | 111 (59%) | 24 (35%) | 0.001 |
| INF_J0 | 71 (38%) | 37 (54%) | 0.022 |
| TA_SYS | 132 (112, 153) | 126 (90, 140) | 0.001 |
| FC | 92 (80, 116) | 96 (81, 121) | 0.4 |
| URG_NURG | 129 (69%) | 64 (94%) | <0.001 |
| PO2 | 85 (73, 96) | 84 (71, 99) | 0.7 |
| PH | 7.36 (7.31, 7.42) | 7.34 (7.30, 7.40) | 0.14 |
| BICAR | 26.0 (21.6, 30.8) | 24.2 (21.2, 30.3) | 0.2 |
| CONSC | <0.001 | ||
| 0 | 184 (98%) | 44 (65%) | |
| 1 | 0 (0%) | 8 (12%) | |
| 2 | 4 (2.1%) | 16 (24%) | |
| GLASGOW | 14 (12, 15) | 13 (6, 14) | <0.001 |
| 1 Median (Q1, Q3); n (%) | |||
| 2 Welch Two Sample t-test; Fisher’s exact test | |||
#Sélection des variables candidates associées au décès en analyse univariée
vars_sel = tab1$table_body |>
dplyr::filter(!is.na(p.value)) |>
dplyr::filter(p.value <= 0.25) |>
dplyr::pull(variable) |>
unique()
#construction du modèle de regression logistique
form <- as.formula(paste("DECEDE ~", paste(vars_sel, collapse = " + ")))
fit <- glm(form, data = ICU, family = binomial)
tbl_regression(fit, exponentiate = TRUE)
| Characteristic | OR | 95% CI | p-value |
|---|---|---|---|
| AGE | 1.04 | 1.02, 1.06 | <0.001 |
| CHIR_MED | 0.75 | 0.35, 1.59 | 0.5 |
| INF_J0 | 0.88 | 0.42, 1.81 | 0.7 |
| TA_SYS | 0.99 | 0.98, 1.00 | 0.088 |
| URG_NURG | 5.41 | 1.76, 20.6 | 0.006 |
| PH | 0.02 | 0.00, 1.20 | 0.065 |
| BICAR | 1.00 | 0.94, 1.05 | 0.9 |
| CONSC | 6.39 | 1.54, 31.3 | 0.015 |
| GLASGOW | 1.05 | 0.83, 1.35 | 0.7 |
| Abbreviations: CI = Confidence Interval, OR = Odds Ratio | |||
Une sélection pas à pas a été réalisée afin d’obtenir un modèle parcimonieux. Seul le résultats du modèle final obtenu après la préocédure est présenté.
fit1 <- step(fit,trace = 0)
summary(fit1)
##
## Call:
## glm(formula = DECEDE ~ AGE + TA_SYS + URG_NURG + PH + CONSC,
## family = binomial, data = ICU)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 24.240640 15.129852 1.602 0.109117
## AGE 0.035479 0.009799 3.621 0.000294 ***
## TA_SYS -0.009337 0.005393 -1.731 0.083387 .
## URG_NURG 1.846659 0.561548 3.289 0.001007 **
## PH -3.820289 2.049508 -1.864 0.062321 .
## CONSC 1.540299 0.363000 4.243 2.2e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 296.38 on 255 degrees of freedom
## Residual deviance: 217.06 on 250 degrees of freedom
## AIC: 229.06
##
## Number of Fisher Scoring iterations: 5
tbl_regression(fit1, exponentiate = TRUE)
| Characteristic | OR | 95% CI | p-value |
|---|---|---|---|
| AGE | 1.04 | 1.02, 1.06 | <0.001 |
| TA_SYS | 0.99 | 0.98, 1.00 | 0.083 |
| URG_NURG | 6.34 | 2.34, 22.3 | 0.001 |
| PH | 0.02 | 0.00, 1.15 | 0.062 |
| CONSC | 4.67 | 2.45, 10.5 | <0.001 |
| Abbreviations: CI = Confidence Interval, OR = Odds Ratio | |||
#Test de wald et rapport de vraissemblance
summary(fit1) # Wald
##
## Call:
## glm(formula = DECEDE ~ AGE + TA_SYS + URG_NURG + PH + CONSC,
## family = binomial, data = ICU)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 24.240640 15.129852 1.602 0.109117
## AGE 0.035479 0.009799 3.621 0.000294 ***
## TA_SYS -0.009337 0.005393 -1.731 0.083387 .
## URG_NURG 1.846659 0.561548 3.289 0.001007 **
## PH -3.820289 2.049508 -1.864 0.062321 .
## CONSC 1.540299 0.363000 4.243 2.2e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 296.38 on 255 degrees of freedom
## Residual deviance: 217.06 on 250 degrees of freedom
## AIC: 229.06
##
## Number of Fisher Scoring iterations: 5
anova(fit1, test = "Chisq") # LR test
## Analysis of Deviance Table
##
## Model: binomial, link: logit
##
## Response: DECEDE
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 255 296.38
## AGE 1 14.450 254 281.93 0.0001439 ***
## TA_SYS 1 14.508 253 267.42 0.0001396 ***
## URG_NURG 1 21.574 252 245.84 3.405e-06 ***
## PH 1 1.886 251 243.96 0.1696587
## CONSC 1 26.900 250 217.06 2.143e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Évaluer le modèle : AIC, Déviance
AIC(fit1)
## [1] 229.0584
fit1$deviance
## [1] 217.0584
fit1$null.deviance
## [1] 296.3756
#Courbe ROC
prob <- fitted(fit1)
roc_obj <- roc(ICU$DECEDE, prob)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
auc(roc_obj)
## Area under the curve: 0.842
plot(roc_obj, col = "blue", lwd = 2)
#Matrice de confusion
pred_class <- ifelse(prob > 0.5, 1, 0)
table(Prediction = pred_class, Observed = ICU$DECEDE)
## Observed
## Prediction 0 1
## 0 181 40
## 1 7 28
A l’issue de la procédure stepwise, le modèle obtenu contient cinq variables dont trois (l’âge, l’admission en urgence, l’état de conscience) présentent une association signification au décès ajusté aux autres variables et deux (la tension artérille systolique et le ph) n’en présentent pas : test de wald. Le test du rapport de vraissemblance confirme l’imortance des variables associées.
Il y a eu une forte résuction de la déviance (de 296 à 217), ce qui suggère que le modèle explique bien la variabilitté du déès. De même le modèle obtenu est le plus optimal selon le critère d’information AIC =229,06 à l’issue de la procédure stepwise
AUC = 0,842 : le modèle distingue bien les survivants des décédés.
Le modèle identifie très bien les survivants, mais manque de sensibilité pour détecter tous les décès.
AGE :Coefficient positif et très significatif (p < 0.001). Chaque année supplémentaire augmente les odds de décès d’environ 3,6 % (OR ≈ exp(0.035) ≈ 1.036). L’âge est un facteur de risque important et robuste.
TA_SYS (tension artérielle systolique) : Coefficient négatif, borderline (OR= 0,99 ; p ≈ 0.08). Une tension plus basse tend à augmenter le risque de décès, mais l’effet reste modéré et incertain.
URG_NURG (admission en urgence vs non-urgence) : très significatif (Or=6,33 ; p = 0.001). Les patients admis en urgence ont un risque de décès environ 6 fois plus élevé. C’est un des facteurs les plus marquants du modèle.
PH : coefficient négatif, non significatif (p ≈ 0.06). Un pH bas (acidose) est associé à un risque fortement accru de décès, même si la significativité statistique est limite. L’effet est biologiquement cohérent.
CONSC (état de conscience altéré) : très significatif (OR=1,54 ; p < 0.0001). Une altération de la conscience multiplie par environ 4,7 les odds de décès. C’est un facteur majeur du modèle.