donnees <- donnees %>%
  mutate(
    
    ## Nb de déglutitions par IDDSI
    
    n_iddsi0 = nb_deglu_iddsi0_1 + nb_deglu_iddsi0_2 + nb_deglu_iddsi0_verre,
    n_iddsi2 = nb_deglu_iddsi2_1 + nb_deglu_iddsi2_2 + nb_deglu_iddsi2_3,
    n_iddsi4 = nb_deglu_iddsi4_1 + nb_deglu_iddsi4_2 + nb_deglu_iddsi4_3,

    ## Sommes YaleV par IDDSI
    
    sum_yalev_iddsi0 = somme_de_yale_v_iddsi0_1 +
                       somme_de_yale_v_iddsi0_2 +
                       somme_de_yale_v_iddsi0_verre,
    sum_yalev_iddsi2 = somme_de_yale_v_iddsi2_1 +
                       somme_de_yale_v_iddsi2_2 +
                       somme_de_yale_v_iddsi2_3,
    sum_yalev_iddsi4 = somme_de_yale_v_iddsi4_1 +
                       somme_de_yale_v_iddsi4_2 +
                       somme_de_yale_v_iddsi4_3,

    ## Sommes YaleS par IDDSI
    sum_yales_iddsi0 = somme_de_yale_s_iddsi0_1 +
                       somme_de_yale_s_iddsi0_2 +
                       somme_de_yale_s_iddsi0_verre,
    sum_yales_iddsi2 = somme_de_yale_s_iddsi2_1 +
                       somme_de_yale_s_iddsi2_2 +
                       somme_de_yale_s_iddsi2_3,
    sum_yales_iddsi4 = somme_de_yale_s_iddsi4_1 +
                       somme_de_yale_s_iddsi4_2 +
                       somme_de_yale_s_iddsi4_3,

    ## Sommes PAS par IDDSI
    sum_pas_iddsi0 = somme_de_pas_iddsi0_1 +
                     somme_de_pas_iddsi0_2 +
                     somme_de_pas_iddsi0_verre,
    sum_pas_iddsi2 = somme_de_pas_iddsi2_1 +
                     somme_de_pas_iddsi2_2 +
                     somme_de_pas_iddsi2_3,
    sum_pas_iddsi4 = somme_de_pas_iddsi4_1 +
                     somme_de_pas_iddsi4_2 +
                     somme_de_pas_iddsi4_3
  )
  
    ## analyses par IDDSI
  
  
  
  
  
  deg_iddsi <- bind_rows(
  donnees %>%
    transmute(
      sujet,
      iddsi = "IDDSI 0",
      nb_deglutitions = n_iddsi0,
      sum_yalev = sum_yalev_iddsi0,
      sum_yales = sum_yales_iddsi0,
      sum_pas   = sum_pas_iddsi0
    ),
  donnees %>%
    transmute(
      sujet,
      iddsi = "IDDSI 2",
      nb_deglutitions = n_iddsi2,
      sum_yalev = sum_yalev_iddsi2,
      sum_yales = sum_yales_iddsi2,
      sum_pas   = sum_pas_iddsi2
    ),
  donnees %>%
    transmute(
      sujet,
      iddsi = "IDDSI 4",
      nb_deglutitions = n_iddsi4,
      sum_yalev = sum_yalev_iddsi4,
      sum_yales = sum_yales_iddsi4,
      sum_pas   = sum_pas_iddsi4
    )
) %>%
  mutate(
    iddsi = factor(iddsi, levels = c("IDDSI 0", "IDDSI 2", "IDDSI 4")),
    moy_yalev = if_else(nb_deglutitions > 0, sum_yalev / nb_deglutitions, NA_real_),
    moy_yales = if_else(nb_deglutitions > 0, sum_yales / nb_deglutitions, NA_real_),
    moy_pas   = if_else(nb_deglutitions > 0, sum_pas   / nb_deglutitions, NA_real_)
  )

head(deg_iddsi)
##   sujet   iddsi nb_deglutitions sum_yalev sum_yales sum_pas moy_yalev moy_yales
## 1     2 IDDSI 0               3        NA        NA      NA        NA        NA
## 2     3 IDDSI 0               5         2         0       5 0.4000000 0.0000000
## 3     4 IDDSI 0               8         0         2       8 0.0000000 0.2500000
## 4     5 IDDSI 0              26         7        39      57 0.2692308 1.5000000
## 5     6 IDDSI 0               7         4         5       7 0.5714286 0.7142857
## 6     7 IDDSI 0               6         1         0       6 0.1666667 0.0000000
##    moy_pas
## 1       NA
## 2 1.000000
## 3 1.000000
## 4 2.192308
## 5 1.000000
## 6 1.000000
  # Nombre de déglutitions par type d’IDDSI

nb_iddsi <- donnees %>%
  summarise(
    `IDDSI 0` = sum(n_iddsi0, na.rm = TRUE),
    `IDDSI 2` = sum(n_iddsi2, na.rm = TRUE),
    `IDDSI 4` = sum(n_iddsi4, na.rm = TRUE)
  ) %>%
  pivot_longer(everything(),
               names_to = "iddsi",
               values_to = "n_deglutitions")

nb_iddsi
## # A tibble: 3 × 2
##   iddsi   n_deglutitions
##   <chr>            <int>
## 1 IDDSI 0            484
## 2 IDDSI 2            250
## 3 IDDSI 4            257
ggplot(nb_iddsi, aes(x = iddsi, y = n_deglutitions)) +
  geom_col(fill = "steelblue") +
  labs(x = "Niveau IDDSI",
       y = "Nombre total de déglutitions") +
  theme_minimal()

# Distribution de YaleV, YaleS et PAS par IDDSI
  
  
  dist_scores <- deg_iddsi %>%
  select(sujet, iddsi, moy_yalev, moy_yales, moy_pas) %>%
  pivot_longer(
    cols = starts_with("moy_"),
    names_to = "categorie",
    values_to = "score_moyen"
  ) %>%
  mutate(
    categorie = recode(
      categorie,
      "moy_yalev" = "YaleV",
      "moy_yales" = "YaleS",
      "moy_pas"   = "PAS"
    )
  )

head(dist_scores)
## # A tibble: 6 × 4
##   sujet iddsi   categorie score_moyen
##   <int> <fct>   <chr>           <dbl>
## 1     2 IDDSI 0 YaleV            NA  
## 2     2 IDDSI 0 YaleS            NA  
## 3     2 IDDSI 0 PAS              NA  
## 4     3 IDDSI 0 YaleV             0.4
## 5     3 IDDSI 0 YaleS             0  
## 6     3 IDDSI 0 PAS               1
ggplot(dist_scores, aes(x = iddsi, y = score_moyen)) +
  geom_boxplot(fill = "grey85") +
  facet_wrap(~ categorie, scales = "free_y") +
  labs(x = "IDDSI",
       y = "Score moyen par sujet") +
  theme_minimal()

# Références globales
refs <- donnees %>%
  summarise(
    ref_yalev = mean(ref_yale_v_global, na.rm = TRUE),
    ref_yales = mean(ref_yale_s_golbal, na.rm = TRUE),
    ref_pas   = mean(ref_pas_global,     na.rm = TRUE)
  )

refs
##   ref_yalev ref_yales  ref_pas
## 1  1.020408  1.122449 2.416667
# Comparaison entre références et moyennes par IDDSI

## YaleV
moy_iddsi_yalev <- deg_iddsi %>%
  group_by(iddsi) %>%
  summarise(
    yalev_moyen = sum(sum_yalev, na.rm = TRUE) /
                  sum(nb_deglutitions, na.rm = TRUE),
    .groups = "drop"
  )
ggplot(moy_iddsi_yalev, aes(x = iddsi, y = yalev_moyen)) +
  geom_col(fill = "steelblue") +
  geom_hline(yintercept = refs$ref_yalev,
             colour = "red", linetype = "dashed", size = 1) +
  labs(x = "IDDSI",
       y = "YaleV moyen (toutes déglutitions)",
       title = "YaleV moyen par IDDSI\nLigne rouge = YaleV de référence") +
  theme_minimal()

## YaleS

moy_iddsi_yales <- deg_iddsi %>%
  group_by(iddsi) %>%
  summarise(
    yales_moyen = sum(sum_yales, na.rm = TRUE) /
                  sum(nb_deglutitions, na.rm = TRUE),
    .groups = "drop"
  )

moy_iddsi_yales
## # A tibble: 3 × 2
##   iddsi   yales_moyen
##   <fct>         <dbl>
## 1 IDDSI 0       1.03 
## 2 IDDSI 2       1.05 
## 3 IDDSI 4       0.868
ggplot(moy_iddsi_yales, aes(x = iddsi, y = yales_moyen)) +
  geom_col(fill = "darkorange") +
  geom_hline(yintercept = refs$ref_yales,
             colour = "red", linetype = "dashed", size = 1) +
  labs(x = "IDDSI",
       y = "YaleS moyen (toutes déglutitions)",
       title = "YaleS moyen par IDDSI\nLigne rouge = YaleS de référence") +
  theme_minimal()

moy_iddsi_yalev
## # A tibble: 3 × 2
##   iddsi   yalev_moyen
##   <fct>         <dbl>
## 1 IDDSI 0       0.798
## 2 IDDSI 2       1.06 
## 3 IDDSI 4       1.14
## PAS

moy_iddsi_pas <- deg_iddsi %>%
  group_by(iddsi) %>%
  summarise(
    pas_moyen = sum(sum_pas, na.rm = TRUE) /
                sum(nb_deglutitions, na.rm = TRUE),
    .groups = "drop"
  )

moy_iddsi_pas
## # A tibble: 3 × 2
##   iddsi   pas_moyen
##   <fct>       <dbl>
## 1 IDDSI 0      1.53
## 2 IDDSI 2      1.40
## 3 IDDSI 4      1.44
ggplot(moy_iddsi_pas, aes(x = iddsi, y = pas_moyen)) +
  geom_col(fill = "seagreen") +
  geom_hline(yintercept = refs$ref_pas,
             colour = "red", linetype = "dashed", size = 1) +
  labs(x = "IDDSI",
       y = "PAS moyen (toutes déglutitions)",
       title = "PAS moyen par IDDSI\nLigne rouge = PAS de référence") +
  theme_minimal()

# Analyse en fonction de la sévérité (EDG_severite)

deg_iddsi_sev <- deg_iddsi %>%
  left_join(
    donnees %>% select(sujet, edg_severite),
    by = "sujet"
  ) %>%
  mutate(
    edg_severite = as.factor(edg_severite)  # si tu veux un ordre particulier, on pourra le préciser
  )

# Moyennes YaleV / YaleS / PAS par IDDSI et par sévérité
resume_sev <- deg_iddsi_sev %>%
  group_by(edg_severite, iddsi) %>%
  summarise(
    moy_yalev = mean(moy_yalev, na.rm = TRUE),
    moy_yales = mean(moy_yales, na.rm = TRUE),
    moy_pas   = mean(moy_pas,   na.rm = TRUE),
    n_sujets  = n_distinct(sujet),
    .groups   = "drop"
  ) %>%
  pivot_longer(
    cols = starts_with("moy_"),
    names_to = "categorie",
    values_to = "score_moyen"
  ) %>%
  mutate(
    categorie = recode(
      categorie,
      "moy_yalev" = "YaleV",
      "moy_yales" = "YaleS",
      "moy_pas"   = "PAS"
    )
  )

resume_sev
## # A tibble: 90 × 5
##    edg_severite iddsi   n_sujets categorie score_moyen
##    <fct>        <fct>      <int> <chr>           <dbl>
##  1 1            IDDSI 0        9 YaleV          0.101 
##  2 1            IDDSI 0        9 YaleS          0.151 
##  3 1            IDDSI 0        9 PAS            1.06  
##  4 1            IDDSI 2        9 YaleV          0.0926
##  5 1            IDDSI 2        9 YaleS          0.157 
##  6 1            IDDSI 2        9 PAS            1.14  
##  7 1            IDDSI 4        9 YaleV          0.0833
##  8 1            IDDSI 4        9 YaleS          0.175 
##  9 1            IDDSI 4        9 PAS            1     
## 10 2            IDDSI 0        9 YaleV          0.654 
## # ℹ 80 more rows
ggplot(resume_sev,
       aes(x = edg_severite, y = score_moyen,
           fill = iddsi)) +
  geom_col(position = position_dodge(width = 0.8)) +
  facet_wrap(~ categorie, scales = "free_y") +
  labs(x = "Sévérité (EDG_severite)",
       y = "Score moyen",
       fill = "IDDSI") +
  theme_minimal()

# Analyse du degré de sévérité _EDG_severite

donnees <- donnees %>%
  mutate(edg_severite = as.factor(edg_severite))

# Effectif par niveau de sévérité
tab_sev <- donnees %>%
  count(edg_severite) %>%
  arrange(edg_severite)

tab_sev
##    edg_severite n
## 1             1 9
## 2             2 9
## 3             3 7
## 4             4 5
## 5             5 2
## 6             6 5
## 7             7 4
## 8             8 3
## 9             9 1
## 10         <NA> 5
## Sévérité et scores globaux_ toutes IDDSI confondues
### Moyennes globales par sévérité, indépendamment de l'IDDSI
sev_global <- donnees %>%
  group_by(edg_severite) %>%
  summarise(
    n_sujets   = n(),
    yalev_moy  = mean(moyenne_de_yale_v_global, na.rm = TRUE),
    yales_moy  = mean(moyenne_de_yale_s_global, na.rm = TRUE),
    pas_moy    = mean(moyenne_de_pas_global,    na.rm = TRUE),
    .groups    = "drop"
  )

sev_global
## # A tibble: 10 × 5
##    edg_severite n_sujets yalev_moy yales_moy pas_moy
##    <fct>           <int>     <dbl>     <dbl>   <dbl>
##  1 1                   9    0.0962     0.157    1.06
##  2 2                   9    0.487      0.438    1.46
##  3 3                   7    0.648      0.814    1.19
##  4 4                   5    0.620      0.352    1.47
##  5 5                   2    1.85       1.81     2.04
##  6 6                   5    1.21       1.54     1.50
##  7 7                   4    1.80       1.79     2.51
##  8 8                   3    2.06       1.60     2.39
##  9 9                   1    3.42       3.09     3.15
## 10 <NA>                5    0.577      0.659    1.19
sev_global_long <- sev_global %>%
  pivot_longer(
    cols = c(yalev_moy, yales_moy, pas_moy),
    names_to = "categorie",
    values_to = "score_moyen"
  ) %>%
  mutate(
    categorie = recode(
      categorie,
      "yalev_moy" = "YaleV",
      "yales_moy" = "YaleS",
      "pas_moy"   = "PAS"
    )
  )

ggplot(sev_global_long,
       aes(x = edg_severite, y = score_moyen, fill = categorie)) +
  geom_col(position = position_dodge(width = 0.8)) +
  labs(x = "Sévérité (EDG_severite)",
       y = "Score moyen global (toutes IDDSI confondues)",
       fill = "Catégorie") +
  theme_minimal()

### Sévérité × IDDSI pour chaque catégorie
deg_iddsi_sev <- deg_iddsi %>%
  left_join(
    donnees %>% select(sujet, edg_severite),
    by = "sujet"
  ) %>%
  mutate(edg_severite = as.factor(edg_severite))

# Résumé des moyennes par Sévérité × IDDSI
sev_iddsi <- deg_iddsi_sev %>%
  group_by(edg_severite, iddsi) %>%
  summarise(
    n_sujets   = n_distinct(sujet),
    moy_yalev  = mean(moy_yalev, na.rm = TRUE),
    moy_yales  = mean(moy_yales, na.rm = TRUE),
    moy_pas    = mean(moy_pas,   na.rm = TRUE),
    .groups    = "drop"
  )

sev_iddsi
## # A tibble: 30 × 6
##    edg_severite iddsi   n_sujets moy_yalev moy_yales moy_pas
##    <fct>        <fct>      <int>     <dbl>     <dbl>   <dbl>
##  1 1            IDDSI 0        9    0.101      0.151    1.06
##  2 1            IDDSI 2        9    0.0926     0.157    1.14
##  3 1            IDDSI 4        9    0.0833     0.175    1   
##  4 2            IDDSI 0        9    0.654      0.524    1.70
##  5 2            IDDSI 2        9    0.512      0.333    1.17
##  6 2            IDDSI 4        9    0.5        0.377    1.30
##  7 3            IDDSI 0        7    0.606      0.976    1.06
##  8 3            IDDSI 2        7    0.309      0.495    1.04
##  9 3            IDDSI 4        7    1          0.732    1.27
## 10 4            IDDSI 0        5    1.02       0.327    1.7 
## # ℹ 20 more rows
sev_iddsi_long <- sev_iddsi %>%
  pivot_longer(
    cols = starts_with("moy_"),
    names_to = "categorie",
    values_to = "score_moyen"
  ) %>%
  mutate(
    categorie = recode(
      categorie,
      "moy_yalev" = "YaleV",
      "moy_yales" = "YaleS",
      "moy_pas"   = "PAS"
    )
  )

ggplot(sev_iddsi_long,
       aes(x = edg_severite, y = score_moyen, fill = iddsi)) +
  geom_col(position = position_dodge(width = 0.8)) +
  facet_wrap(~ categorie, scales = "free_y") +
  labs(x = "Sévérité (EDG_severite)",
       y = "Score moyen",
       fill = "IDDSI") +
  theme_minimal()

### Distribution des scores par sujet (Sévérité × IDDSI)

dist_scores_sev <- deg_iddsi_sev %>%
  select(sujet, edg_severite, iddsi, moy_yalev, moy_yales, moy_pas) %>%
  pivot_longer(
    cols = starts_with("moy_"),
    names_to = "categorie",
    values_to = "score_moyen"
  ) %>%
  mutate(
    categorie = recode(
      categorie,
      "moy_yalev" = "YaleV",
      "moy_yales" = "YaleS",
      "moy_pas"   = "PAS"
    )
  )

ggplot(dist_scores_sev,
       aes(x = edg_severite, y = score_moyen, fill = iddsi)) +
  geom_boxplot(outlier.alpha = 0.5,
               position = position_dodge(width = 0.7)) +
  facet_wrap(~ categorie, scales = "free_y") +
  labs(x = "Sévérité (EDG_severite)",
       y = "Score moyen par sujet",
       fill = "IDDSI") +
  theme_minimal()