1 Introduction, formulation du problème et spécification du modèle

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.

2 Importation des doonées et traitement et formatage

Nous avions importé le jeu de données relatives aux décès et avions traité les données manquants

3 Description des variables

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)                                         : : :                           
##                                                                     . .   . : : :                           
## ------------------------------------------------------------------------------------------------------------

4 Analyse univariée

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 = 188
1
1
N = 68
1
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 = " + ")))

5 Estimation des paramètres du modèle de regression logistique

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

6 Selection automatique des variables (stepwise), interpretation du modèle obtenu

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

7 Evaluation du modèle et seuil de prédiction

#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

7.0.1 Tests statisiques de Wald et le raport de vraissemblance

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.

7.0.2 Quaité gloale du modèle

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

7.0.3 Performance discirminante

AUC = 0,842 : le modèle distingue bien les survivants des décédés.

7.0.4 Matrice de confusion

Le modèle identifie très bien les survivants, mais manque de sensibilité pour détecter tous les décès.

8 Interpretation et synthèse

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.