library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.3.9000 v purrr 0.3.4
## v tibble 3.1.1 v dplyr 1.0.5
## v tidyr 1.1.3 v stringr 1.4.0
## v readr 1.4.0 v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(labelled)
library(questionr)
library(gtsummary)
library(viridis)
## Loading required package: viridisLite
library(scales)
##
## Attaching package: 'scales'
## The following object is masked from 'package:viridis':
##
## viridis_pal
## The following object is masked from 'package:purrr':
##
## discard
## The following object is masked from 'package:readr':
##
## col_factor
load("care_trajectories.RData")
care_trajectories <- as_tibble(care_trajectories)
var_label(care_trajectories$sex) <- "Sexe"
val_labels(care_trajectories$sex) <- c(homme = 0, femme = 1)
var_label(care_trajectories$age) <- "Âge"
var_label(care_trajectories$education) <- "Education"
val_labels(care_trajectories$education) <- c(
primaire = 1,
secondaire = 2,
supérieur = 3
)
val_labels(care_trajectories$care_status) <- c(
"diagnostiqué, mais pas suivi" = "D",
"suivi, mais pas sous traitement" = "C",
"sous traitement, mais infection non contrôlée" = "T",
"sous traitement et infection contrôlée" = "S"
)
care_trajectories <- care_trajectories %>%
set_variable_labels(
id = "Identifiant Patient",
month = "Mois depuis la diagnostic",
care_status = "Statut dans les soins",
wealth = "Niveau de richesse",
distance_clinic = "Distance à la clinique la plus proche"
) %>%
set_value_labels(
wealth = c(bas = 1, moyen = 2, haut = 3),
distance_clinic = c("moins de 10 km" = 1, "10 km ou plus" = 2)
)
care_trajectories %>%
unlabelled() %>%
tbl_summary()
## Warning: The `.dots` argument of `group_by()` is deprecated as of dplyr 1.0.0.
Characteristic | N = 49,3651 |
---|---|
Identifiant Patient | 4,961 (2,481, 7,532) |
Mois depuis la diagnostic | 9 (4, 16) |
Statut dans les soins | |
diagnostiqué, mais pas suivi | 25,374 (51%) |
suivi, mais pas sous traitement | 5,886 (12%) |
sous traitement, mais infection non contrôlée | 4,596 (9.3%) |
sous traitement et infection contrôlée | 13,509 (27%) |
Sexe | |
homme | 17,781 (36%) |
femme | 31,584 (64%) |
Âge | |
16-29 | 16,911 (34%) |
30-59 | 29,365 (59%) |
60+ | 3,089 (6.3%) |
Education | |
primaire | 10,417 (21%) |
secondaire | 19,024 (39%) |
supérieur | 19,924 (40%) |
Niveau de richesse | |
bas | 15,432 (31%) |
moyen | 20,769 (42%) |
haut | 13,164 (27%) |
Distance à la clinique la plus proche | |
moins de 10 km | 26,804 (54%) |
10 km ou plus | 22,561 (46%) |
1
Median (IQR); n (%)
|
Le fichier contient en tout 49365 lignes (une par individu et par mois de suivi). Il correspond à 2929 individus différents.
n <- care_trajectories %>%
filter(month %in% (0:8*6)) %>%
group_by(month) %>%
count() %>%
pluck("n")
etiquettes <- paste0("M", 0:8*6, "\n(n=", n, ")")
ggplot(care_trajectories) +
aes(x = month, fill = to_factor(care_status)) +
geom_bar(width = 1, color = "gray50") +
scale_fill_viridis(discrete = TRUE, direction = -1) +
xlab("") + ylab("") +
scale_x_continuous(breaks = 0:8*6, labels = etiquettes) +
labs(fill = "Statut dans les soins") +
ggtitle("Distribution du statut dans les soins chaque mois") +
guides(fill = guide_legend(nrow = 2)) +
theme_light() +
theme(legend.position = "bottom")
ggplot(care_trajectories %>% filter(month <= 36)) +
aes(x = month, fill = to_factor(care_status)) +
geom_bar(width = 1, color = "gray50", position = "fill") +
scale_fill_viridis(discrete = TRUE, direction = -1) +
xlab("") + ylab("") +
scale_x_continuous(breaks = 0:8*6, labels = etiquettes) +
scale_y_continuous(labels = percent, breaks = 0:5/5) +
labs(fill = "Statut dans les soins") +
ggtitle("Cascade des soins observée, selon le temps depuis le diagnostic") +
guides(fill = guide_legend(nrow = 2)) +
theme_light() +
theme(legend.position = "bottom")