Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 47 additions & 27 deletions episodes/quantify-transmissibility.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@

Faites référence à la distribution de probabilité a priori et à la [probabilité a posteriori](https://en.wikipedia.org/wiki/Posterior_probability) a posteriori.

Dans la ["`Expected change in reports`", l'appel](#expected-change-in-daily-cases) par "la probabilité a posteriori que $R_t < 1$"nous nous référons spécifiquement à la [aire sous la courbe de distribution de la probabilité a posteriori](https://www.nature.com/articles/nmeth.3368/figures/1).

Check warning on line 98 in episodes/quantify-transmissibility.Rmd

View workflow job for this annotation

GitHub Actions / Build markdown source files if valid

[missing anchor]: [" Expected change in reports ", l'appel](#expected-change-in-daily-cases)

::::::::::::::::::::::::::::::::::::::::::::::::

Expand All @@ -103,7 +103,7 @@

### Données de cas

Pour illustrer les fonctions des `EpiNow2` nous utiliserons les données relatives au début de la pandémie de COVID-19 au Royaume-Uni. Les données sont disponibles dans le package R `{incidence2}`.
Pour illustrer les fonctions des `EpiNow2` nous utiliserons les données relatives au début de la pandémie de COVID-19 au Royaume-Uni, mais uniquement pour les 90 premiers jours observés. Les données sont disponibles dans le package R `{incidence2}`.

```{r}
dplyr::as_tibble(incidence2::covidregionaldataUK)
Expand All @@ -117,7 +117,8 @@
Utilisons `{tidyr}` et `{incidence2}` pour cela :

```{r, warning=FALSE, message=FALSE}
cases <- incidence2::covidregionaldataUK %>%
cases_sliced <- incidence2::covidregionaldataUK %>%
dplyr::as_tibble() %>%
# Preprocess missing values
tidyr::replace_na(base::list(cases_new = 0)) %>%
# Compute the daily incidence
Expand All @@ -128,12 +129,8 @@
date_names_to = "date",
complete_dates = TRUE
) %>%
# Drop column for {EpiNow2} input format
dplyr::select(-count_variable) %>%
# Keep the first 90 dates
dplyr::slice_head(n = 90)

cases
```

Avec `incidence2::incidence()` nous agrégeons des cas sur différentes périodes de temps (*intervalles*, c'est-à-dire des jours, des semaines ou des mois) ou par groupe. Nous pouvons également obtenir les dates complètes pour tous les intervalles de dates par catégorie de groupe à l'aide de la fonction
Expand All @@ -142,7 +139,7 @@

::::::::::::::::::::::::: spoiler

### Pouvons-nous reproduire {incidence2} avec {dplyr}?
**Pouvons-nous reproduire {incidence2} avec {dplyr}?**

Nous pouvons obtenir un objet similaire à `cases` à partir de l'objet `incidence2::covidregionaldataUK` à l'aide du package `{dplyr}`.

Expand All @@ -162,13 +159,17 @@
Dans une situation d'épidémie, il est probable que nous n'ayons accès qu'au début de l'ensemble des données d'entrée. Nous supposons donc que nous ne disposons que des 90 premiers jours de ces données.

```{r, echo=FALSE}
cases %>%
# use ggplot2
ggplot(aes(x = date, y = confirm)) +
geom_col() +
theme_grey(
base_size = 15
)
plot(cases_sliced)
```

Pour transmettre les résultats de `{incidence2}` à `{EpiNow2}`, nous devons supprimer une colonne de l'objet `cases_filter` :

```{r}
# Drop column for {EpiNow2} input format
cases <- cases_sliced %>%
dplyr::select(-count_variable)

cases
```

### Distribution des délais
Expand Down Expand Up @@ -216,6 +217,13 @@

L'argument `max` est la valeur maximale que la distribution peut prendre ; dans cet exemple, 20 jours.

Nous pouvons tracer les distributions générées par `{EpiNow2}` en utilisant `plot()`.

```{r}
plot(incubation_period_fixed)
```


::::::::::::::::::::::::::::::::::::: callout

### Pourquoi une distribution gamma ?
Expand Down Expand Up @@ -250,6 +258,11 @@
incubation_period_variable
```

Traçons la distribution que nous venons de configurer :
```{r}
plot(incubation_period_variable)
```

#### Retards dans l'établissement des rapports

Après la période d'incubation, il s'écoule un délai supplémentaire entre l'apparition des symptômes et la notification du cas : le délai de déclaration. Nous pouvons le spécifier comme une distribution fixe ou variable, ou estimer une distribution à partir de données.
Expand All @@ -268,7 +281,7 @@

:::::::::::::::::::::: spoiler

### Visualisez une distribution log-normale en utilisant {epiparameter}
**Visualisez une distribution log-normale en utilisant {epiparameter}**

En utilisant `epiparameter::epiparameter()` nous pouvons créer une distribution personnalisée. La distribution normale à logarithme fixe aura l'aspect suivant :

Expand All @@ -294,24 +307,31 @@

::::::::::::::::::::::

Nous pouvons tracer les distributions simples et combinées générées par `{EpiNow2}` en utilisant `plot()`. Combinons dans un même graphique le délai entre l'infection et la déclaration, qui comprend la période d'incubation et le délai de déclaration :
:::::::::::::::::: spoiler

```{r}
plot(incubation_period_variable + reporting_delay_variable)
```

:::::::::::::::::: callout
**Comment obtenir le délai de reporting à partir des données ?**

Si l'on dispose de données sur le délai entre l'apparition des symptômes et la déclaration, on peut utiliser la fonction `estimate_delay()` pour estimer une distribution log-normale à partir d'un vecteur de délais. Le code ci-dessous illustre comment utiliser la fonction `estimate_delay()` avec des données synthétiques sur les délais.

```{r, eval=FALSE}
delay_data <- rlnorm(500, log(5), 1) # synthetic delay data
library(tidyverse)

reporting_delay <- EpiNow2::estimate_delay(
delay_data,
samples = 1000,
bootstraps = 10
)
# Steps:
# - get Ebola data from package {outbreaks}
# - keep a subset of columns for this example only
# - calculate the time difference between two dates in linelist
# - extract the time difference as a vector class object
# - estimate the delay parameters using {EpiNow2}

outbreaks::ebola_sim_clean$linelist %>%
tibble::as_tibble() %>%
dplyr::select(case_id, date_of_onset, date_of_hospitalisation) %>%
dplyr::mutate(reporting_delay = date_of_hospitalisation - date_of_onset) %>%
dplyr::pull(reporting_delay) %>%
EpiNow2::estimate_delay(
samples = 1000,
bootstraps = 10
)
```

::::::::::::::::::
Expand Down Expand Up @@ -572,7 +592,7 @@
estimates_regional$summary$plots$R
```

![](fig/quantify-transmissibility-regional.png)

Check warning on line 595 in episodes/quantify-transmissibility.Rmd

View workflow job for this annotation

GitHub Actions / Build markdown source files if valid

[image missing alt-text]: fig/quantify-transmissibility-regional.png

::::::::::::

Expand Down
Loading