diff --git a/module3/Document_Computationnel_Covid/Sars-CoV-DocComputationnel_NathanD.html b/module3/Document_Computationnel_Covid/Sars-CoV-DocComputationnel_NathanD.html deleted file mode 100644 index 034a5b1ed3f8648c82f789b2e8d07e5074ee104c..0000000000000000000000000000000000000000 --- a/module3/Document_Computationnel_Covid/Sars-CoV-DocComputationnel_NathanD.html +++ /dev/null @@ -1,1068 +0,0 @@ - - - - -
- - - - - - - - - - -Le but est ici de reproduire des graphes semblables à ceux du South -China Morning Post (SCMP), sur la page The Coronavirus Pandemic et qui -montrent pour différents pays le nombre cumulé (c’est-à-dire le nombre -total de cas depuis le début de l’épidémie) de personnes atteintes de la -maladie à coronavirus 2019.
-Commençons par charger l’ensemble des packages que nous utiliserons -par la suite.
-library(dplyr)
-library(tidyr)
-library(ggplot2)
-library(randomcoloR)
-library(scales)
-library(data.table)
-Les données que nous utiliserons dans un premier temps sont compilées -par le Johns Hopkins University -Center for Systems Science and Engineering (JHU CSSE) et sont mises -à disposition sur GitHub.
-if(!file.exists("./time_series_covid19_confirmed_global.csv")){
- download.file("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv", "./time_series_covid19_confirmed_global.csv")
-}
-Pour commencer, récupérons le fichier de données et vérifions déjà -que les types de colonnes nous semblent correctes et que les données -sont intègres (pas de NA présents).
-# Importation
-covid_raw <- read.csv("./time_series_covid19_confirmed_global.csv", encoding = "UTF-8")
-
-# Type de colonnes
-col_types <- unlist(lapply(covid_raw, class))
-names(col_types) <- colnames(covid_raw)
-print(col_types)
-
-# Lignes contenant des NAs
-covid_raw[apply(covid_raw, 1, function(x) any(is.na(x))),]
-Les types de colonnes (character, numeric, integer) permettent de -dire que l’importation s’est à priori bien déroulée. Il existe deux -lignes qui contiennent des NAs, mais cela concerne les coordonnées -géographiques, ce qui ne posera pas de problème pour notre étude.
-Pour faciliter la manipulation des données, nous allons maintenant -passer ces dernières en format long, c’est-à-dire avec l’ensemble des -incidences dans une seule colonne, ainsi que convertir les dates dans un -format reconnu par R.
-covid_raw_long <- covid_raw %>%
- tidyr::pivot_longer(cols = 5:ncol(covid_raw), names_to = "Date", values_to = "Incidence") %>%
- dplyr::mutate(Date = as.Date.character(gsub("X", "", Date), format = "%m.%d.%y")) %>%
- dplyr::arrange(Date)
-head(covid_raw_long)
-## # A tibble: 6 × 6
-## Province.State Country.Region Lat Long Date Incidence
-## <chr> <chr> <dbl> <dbl> <date> <int>
-## 1 "" Afghanistan 33.9 67.7 2020-01-22 0
-## 2 "" Albania 41.2 20.2 2020-01-22 0
-## 3 "" Algeria 28.0 1.66 2020-01-22 0
-## 4 "" Andorra 42.5 1.52 2020-01-22 0
-## 5 "" Angola -11.2 17.9 2020-01-22 0
-## 6 "" Antarctica -71.9 23.3 2020-01-22 0
-Calculons et traçons maintenant l’évolution du nombre de cas cumulés -au cours du temps pour certains pays. Commençons par sélectionner les -pays qui nous intéressent, puis calculons leurs cumuls sur la période -pour laquelle nous disposons de données. Nous veillons en particulier à -sommer séparément Hong Kong du reste de la Chine, comme spécifié dans la -consigne.
-covid_byCountry <- covid_raw_long %>%
- dplyr::filter(Province.State == "" | (Country.Region == "China" & Province.State != "")) %>%
- dplyr::filter(Country.Region %in% c("Belgium", "China", "France", "Germany", "Iran", "Italy", "Japan", "Korea, South", "Netherlands", "Portugal", "Spain", "United Kingdom", "US")) %>% # Sélection de certains pays
- dplyr::mutate(Location = dplyr::case_when(Country.Region == "China" & Province.State != "Hong Kong" ~ "China",
- Country.Region == "China" & Province.State == "Hong Kong" ~ "China, Hong Kong",
- TRUE ~ Country.Region)) %>% # Distinction de la Chine et de Hong Kong
- dplyr::group_by(Location, Date) %>%
- dplyr::summarise(Incidence = sum(Incidence, na.rm = T),
- Date = unique(Date)) %>%
- dplyr::ungroup()
-head(covid_byCountry)
-## # A tibble: 6 × 3
-## Location Date Incidence
-## <chr> <date> <int>
-## 1 Belgium 2020-01-22 0
-## 2 Belgium 2020-01-23 0
-## 3 Belgium 2020-01-24 0
-## 4 Belgium 2020-01-25 0
-## 5 Belgium 2020-01-26 0
-## 6 Belgium 2020-01-27 0
-Calculer le nombre de cas cumulés au total à la dernière date -disponible nous sera également utile lors de la visualisation.
-total_byCountry <- covid_byCountry %>% # Récupération des totaux pour ordonner la légende
- dplyr::group_by(Location) %>% # Par pays
- dplyr::summarise(Incidence_Sum = max(Incidence)) %>% # Incidence totale (cumul maximum)
- dplyr::arrange(desc(Incidence_Sum)) %>%
- dplyr::ungroup()
-total_byCountry
-## # A tibble: 14 × 2
-## Location Incidence_Sum
-## <chr> <int>
-## 1 US 103802702
-## 2 France 38618509
-## 3 Germany 38249060
-## 4 Japan 33320438
-## 5 Korea, South 30615522
-## 6 Italy 25603510
-## 7 United Kingdom 24425309
-## 8 Spain 13770429
-## 9 Netherlands 8599981
-## 10 Iran 7572311
-## 11 Portugal 5570473
-## 12 Belgium 4739365
-## 13 China, Hong Kong 2876106
-## 14 China 2027418
-Nous pouvons maintenant passer à la visualisation des données. Pour -cela, nous traçons un graphique des cas cumulés au cours du temps pour -chacun des pays séparément, et nous classons la légende par ordre de cas -cumulés décroissants à la dernière date. (Nous effectuons également -quelques lignes de mise en forme à la fin pour rendre le graphique plus -agréable à lire)
-set.seed(42)
-ggplot(covid_byCountry, aes(x = Date, y = Incidence, color = Location)) + # Tracé du graphique
- geom_line(size = 0.8) +
- scale_x_date(breaks = function(x) seq.Date(from = min(x),
- to = max(x),
- by = "3 months"),
- minor_breaks = function(x) seq.Date(from = min(x),
- to = max(x),
- by = "1 month")) +
- scale_y_continuous(labels = comma, breaks = seq(0, max(total_byCountry$Incidence_Sum, na.rm=T), 10e6), minor_breaks = seq(0, max(total_byCountry$Incidence_Sum, na.rm=T), 2e6)) +
- scale_color_manual(values=distinctColorPalette(14), breaks = total_byCountry$Location, labels = paste0(total_byCountry$Location, " (", format(as.numeric(total_byCountry$Incidence_Sum), scientific = TRUE, digits = 4), ")")) +
- labs(title="Cumul des cas de Covid 19 par pays au cours du temps", y="Cumul des cas observés", x="Temps", color = paste0("Pays (Ordre décroissant des cas\ncumulés au ", max(covid_byCountry$Date, na.rm = T), ")")) +
- theme(
- plot.title = element_text(hjust = 0.5),
- plot.background = element_rect(fill = "white"),
- panel.background = element_rect(fill = 'white'),
- panel.grid.major = element_line(size = 0.5, linetype = 'solid', colour = "#e0e0e0"),
- panel.grid.minor = element_line(size = 0.25, linetype = 'solid', colour = "#f2f2f2"),
- axis.line = element_line(colour = "black"),
- axis.text.x = element_text(angle = 45, hjust = 1)
- )
-Nous voulons également tracer sur un graphique le nombre de cas total -cumulé à l’échelle mondiale. Pour ce faire, nous reprenons le jeu de -données précédemment utilisé, mais nous utilisons toutes les -localisations, en calculant le total des incidences mondiales par date, -puis en les cumulant.
-covid_Total <- covid_raw_long %>%
- dplyr::group_by(Date) %>%
- dplyr::summarise(Incidence_Total = sum(Incidence, na.rm = T)) %>%
- dplyr::ungroup()
-Visualisons les résultats obtenus sur un graphique en échelle -linéaire…
-ggplot(covid_Total, aes(x = Date, y = Incidence_Total)) + # Tracé du graphique
- geom_line(size = 0.8) +
- scale_x_date(breaks = function(x) seq.Date(from = min(x),
- to = max(x),
- by = "3 months"),
- minor_breaks = function(x) seq.Date(from = min(x),
- to = max(x),
- by = "1 month")) +
- scale_y_continuous(labels = comma) +
- labs(title="Cumul global des cas de Covid 19 au cours du temps (échelle linéaire)", y="Cumul global des cas observés", x="Temps") +
- theme(
- plot.title = element_text(hjust = 0.5),
- plot.background = element_rect(fill = "white"),
- panel.background = element_rect(fill = 'white'),
- panel.grid.major = element_line(size = 0.5, linetype = 'solid', colour = "#e0e0e0"),
- panel.grid.minor = element_line(size = 0.25, linetype = 'solid', colour = "#f2f2f2"),
- axis.line = element_line(colour = "black"),
- axis.text.x = element_text(angle = 45, hjust = 1)
- )
-… puis en échelle logarithmique !
-ggplot(covid_Total, aes(x = Date, y = Incidence_Total)) + # Tracé du graphique
- geom_line(size = 0.8) +
- scale_x_date(breaks = function(x) seq.Date(from = min(x),
- to = max(x),
- by = "3 months"),
- minor_breaks = function(x) seq.Date(from = min(x),
- to = max(x),
- by = "1 month")) +
- scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x),
- labels = trans_format("log10", math_format(10^.x))) +
- annotation_logticks(sides="l") +
- labs(title="Cumul global des cas de Covid 19 au cours du temps (échelle logarithmique)", y="Cumul global des cas observés", x="Temps") +
- theme(
- plot.title = element_text(hjust = 0.5),
- plot.background = element_rect(fill = "white"),
- panel.background = element_rect(fill = 'white'),
- panel.grid.major = element_line(size = 0.5, linetype = 'solid', colour = "#e0e0e0"),
- panel.grid.minor = element_line(size = 0.25, linetype = 'solid', colour = "#f2f2f2"),
- axis.line = element_line(colour = "black"),
- axis.text.x = element_text(angle = 45, hjust = 1)
- )
-Comme précédemment, les données que nous utiliserons sont compilées -par le Johns Hopkins University -Center for Systems Science and Engineering (JHU CSSE) et sont mises -à disposition sur GitHub.
-if(!file.exists("./time_series_covid19_deaths_global.csv")){
- download.file("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv", "./time_series_covid19_deaths_global.csv")
-}
-Comme précédemment, récupérons le fichier de données et vérifions les -types de colonnes et l’éventuelle présence de NAs.
-# Importation
-deaths_raw <- read.csv("./time_series_covid19_deaths_global.csv", encoding = "UTF-8")
-
-# Type de colonnes
-dth_col_types <- unlist(lapply(deaths_raw, class))
-names(dth_col_types) <- colnames(deaths_raw)
-print(dth_col_types)
-
-# Lignes contenant des NAs
-deaths_raw[apply(deaths_raw, 1, function(x) any(is.na(x))),]
-Les types de colonnes (character, numeric, integer) permettent à -nouveau de dire que l’importation s’est à priori bien déroulée. Il -existe à nouveau deux lignes qui contiennent des NAs pour les -coordonnées géographiques, ce qui ne pose pas de problème.
-Passons les données au format long et convertissons les dates dans un -format reconnu par R.
-deaths_raw_long <- deaths_raw %>%
- tidyr::pivot_longer(cols = 5:ncol(deaths_raw), names_to = "Date", values_to = "Incidence") %>%
- dplyr::mutate(Date = as.Date.character(gsub("X", "", Date), format = "%m.%d.%y")) %>%
- dplyr::arrange(Date)
-head(deaths_raw_long)
-## # A tibble: 6 × 6
-## Province.State Country.Region Lat Long Date Incidence
-## <chr> <chr> <dbl> <dbl> <date> <int>
-## 1 "" Afghanistan 33.9 67.7 2020-01-22 0
-## 2 "" Albania 41.2 20.2 2020-01-22 0
-## 3 "" Algeria 28.0 1.66 2020-01-22 0
-## 4 "" Andorra 42.5 1.52 2020-01-22 0
-## 5 "" Angola -11.2 17.9 2020-01-22 0
-## 6 "" Antarctica -71.9 23.3 2020-01-22 0
-Calculons et traçons maintenant l’évolution du nombre de décè cumulés -au cours du temps pour certains pays. A nouveau, nous sélectionnons les -pays qui nous intéressent, puis calculons leurs cumuls sur la période -pour laquelle nous disposons de données.
-deaths_byCountry <- deaths_raw_long %>%
- dplyr::filter(Country.Region %in% c("Belgium", "China", "France", "Germany", "Iran", "Italy", "Japan", "Korea, South", "Netherlands", "Portugal", "Spain", "United Kingdom", "US")) %>% # Sélection de certains pays
- dplyr::mutate(Location = dplyr::case_when(Country.Region == "China" & Province.State != "Hong Kong" ~ "China",
- Country.Region == "China" & Province.State == "Hong Kong" ~ "China, Hong Kong",
- TRUE ~ Country.Region)) %>% # Distinction de la Chine et de Hong Kong
- dplyr::group_by(Location, Date) %>%
- dplyr::summarise(Incidence = sum(Incidence, na.rm = T),
- Date = unique(Date)) %>%
- dplyr::ungroup()
-head(deaths_byCountry)
-## # A tibble: 6 × 3
-## Location Date Incidence
-## <chr> <date> <int>
-## 1 Belgium 2020-01-22 0
-## 2 Belgium 2020-01-23 0
-## 3 Belgium 2020-01-24 0
-## 4 Belgium 2020-01-25 0
-## 5 Belgium 2020-01-26 0
-## 6 Belgium 2020-01-27 0
-Calculer le nombre de décès cumulés au total à la dernière date -disponible nous sera également utile lors de la visualisation.
-totaldth_byCountry <- deaths_byCountry %>% # Calcul des totaux pour ordonner la légende
- dplyr::group_by(Location) %>%
- dplyr::summarise(Incidence_Sum = max(Incidence)) %>%
- dplyr::arrange(desc(Incidence_Sum)) %>%
- dplyr::ungroup()
-totaldth_byCountry
-## # A tibble: 14 × 2
-## Location Incidence_Sum
-## <chr> <int>
-## 1 US 1123836
-## 2 United Kingdom 220721
-## 3 Italy 188322
-## 4 Germany 168935
-## 5 France 166176
-## 6 Iran 144933
-## 7 Spain 119479
-## 8 China 87589
-## 9 Japan 72997
-## 10 Korea, South 34093
-## 11 Belgium 33814
-## 12 Portugal 26266
-## 13 Netherlands 23705
-## 14 China, Hong Kong 13467
-Nous pouvons maintenant passer à la visualisation des données. Pour -cela, nous traçons un graphique des décès cumulés au cours du temps pour -chacun des pays séparément, et nous classons la légende par ordre de -décès cumulés décroissants à la dernière date. (Nous effectuons -également quelques lignes de mise en forme à la fin pour rendre le -graphique plus facile à lire)
-set.seed(42)
-ggplot(deaths_byCountry, aes(x = Date, y = Incidence, color = Location)) + # Tracé du graphique
- geom_line(size = 0.8) +
- scale_x_date(breaks = function(x) seq.Date(from = min(x),
- to = max(x),
- by = "3 months"),
- minor_breaks = function(x) seq.Date(from = min(x),
- to = max(x),
- by = "1 month")) +
- scale_y_continuous(labels = comma, breaks = seq(0, max(totaldth_byCountry$Incidence_Sum, na.rm=T), 10e4), minor_breaks = seq(0, max(totaldth_byCountry$Incidence_Sum, na.rm=T), 2e4)) +
- scale_color_manual(values=distinctColorPalette(14), breaks = totaldth_byCountry$Location, labels = paste0(totaldth_byCountry$Location, " (", format(as.numeric(totaldth_byCountry$Incidence_Sum), scientific = TRUE, digits = 4), ")")) +
- labs(title="Cumul des décès dus au Covid 19 par pays au cours du temps", y="Cumul des décès observés", x="Temps", color = paste0("Pays (Ordre décroissant des décès\ncumulés au ", max(deaths_byCountry$Date, na.rm = T), ")")) +
- theme(
- plot.title = element_text(hjust = 0.5),
- plot.background = element_rect(fill = "white"),
- panel.background = element_rect(fill = 'white'),
- panel.grid.major = element_line(size = 0.5, linetype = 'solid', colour = "#e0e0e0"),
- panel.grid.minor = element_line(size = 0.25, linetype = 'solid', colour = "#f2f2f2"),
- axis.line = element_line(colour = "black"),
- axis.text.x = element_text(angle = 45, hjust = 1)
- )
-Nous voulons également tracer sur un graphique le nombre de cas total -cumulé à l’échelle mondiale. Pour ce faire, nous reprenons le jeu de -données précédemment utilisé, mais nous utilisons toutes les -localisations, en calculant le total des incidences mondiales par date, -puis en les cumulant.
-deaths_Total <- deaths_raw_long %>%
- dplyr::group_by(Date) %>%
- dplyr::summarise(Incidence_Total = sum(Incidence, na.rm = T)) %>%
- dplyr::ungroup()
-deaths_Total
-## # A tibble: 1,143 × 2
-## Date Incidence_Total
-## <date> <int>
-## 1 2020-01-22 17
-## 2 2020-01-23 18
-## 3 2020-01-24 26
-## 4 2020-01-25 42
-## 5 2020-01-26 56
-## 6 2020-01-27 82
-## 7 2020-01-28 131
-## 8 2020-01-29 133
-## 9 2020-01-30 172
-## 10 2020-01-31 214
-## # ℹ 1,133 more rows
-Visualisons les résultats obtenus sur un graphique en échelle -linéaire…
-ggplot(deaths_Total, aes(x = Date, y = Incidence_Total)) + # Tracé du graphique
- geom_line(size = 0.8) +
- scale_x_date(breaks = function(x) seq.Date(from = min(x),
- to = max(x),
- by = "3 months"),
- minor_breaks = function(x) seq.Date(from = min(x),
- to = max(x),
- by = "1 month")) +
- scale_y_continuous(labels = comma) +
- labs(title="Cumul global des décès dus au Covid 19 au cours du temps (échelle linéaire)", y="Cumul global des décès observés", x="Temps") +
- theme(
- plot.title = element_text(hjust = 0.5),
- plot.background = element_rect(fill = "white"),
- panel.background = element_rect(fill = 'white'),
- panel.grid.major = element_line(size = 0.5, linetype = 'solid', colour = "#e0e0e0"),
- panel.grid.minor = element_line(size = 0.25, linetype = 'solid', colour = "#f2f2f2"),
- axis.line = element_line(colour = "black"),
- axis.text.x = element_text(angle = 45, hjust = 1)
- )
-… puis en échelle logarithmique.
-ggplot(deaths_Total, aes(x = Date, y = Incidence_Total)) + # Tracé du graphique
- geom_line(size = 0.8) +
- scale_x_date(breaks = function(x) seq.Date(from = min(x),
- to = max(x),
- by = "3 months"),
- minor_breaks = function(x) seq.Date(from = min(x),
- to = max(x),
- by = "1 month")) +
- scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x),
- labels = trans_format("log10", math_format(10^.x))) +
- annotation_logticks(sides="l") +
- labs(title="Cumul global des décès dus au Covid 19 au cours du temps (échelle logarithmique)", y="Cumul global des cas observés", x="Temps") +
- theme(
- plot.title = element_text(hjust = 0.5),
- plot.background = element_rect(fill = "white"),
- panel.background = element_rect(fill = 'white'),
- panel.grid.major = element_line(size = 0.5, linetype = 'solid', colour = "#e0e0e0"),
- panel.grid.minor = element_line(size = 0.25, linetype = 'solid', colour = "#f2f2f2"),
- axis.line = element_line(colour = "black"),
- axis.text.x = element_text(angle = 45, hjust = 1)
- )
-Les données sont importées d’un fichier local extrait à partir du -tableau disponible sur la page web Evolution -du nombre de décès depuis le 1er janvier 2023, sur le site de l’INSEE, en date du 2024-08-23. -Inspectons les rapidement en utilisant la même méthode que précédemment -(types de colonnes, NAs).
-frdeaths_raw <- read.csv("./covid_deaths_france_20192023.csv", sep=";")
-
-# Type de colonnes
-frdth_col_types <- unlist(lapply(frdeaths_raw, class))
-names(frdth_col_types) <- colnames(frdeaths_raw)
-print(frdth_col_types)
-
-# Lignes contenant des NAs
-frdeaths_raw[apply(frdeaths_raw, 1, function(x) any(is.na(x))),]
-Les types de colonnes obtenus (character, integer) correspondent bien -à ce qui était attendu. Une ligne contient des NAs pour le nombre de -décès, mais c’est le 29 février, qui n’est pas présent toutes les -années, ce qui est normal et ne fausse en rien les analyses que nous -ferons par la suite.
-Passons les données au format long et convertissons les dates dans un -format reconnu par R.
-frdeaths_raw_long <- frdeaths_raw %>%
- tidyr::pivot_longer(cols = 2:ncol(frdeaths_raw), names_to = "Annee", values_to = "Incidence") %>%
- dplyr::mutate(
- Annee = gsub("X", "", Annee),
- Date = as.Date.character(paste0(`Date.d.événement`, " ", Annee), format = "%d-%b %Y")) %>%
- dplyr::arrange(Date)
-head(frdeaths_raw_long)
-## # A tibble: 6 × 4
-## Date.d.événement Annee Incidence Date
-## <chr> <chr> <int> <date>
-## 1 01-janv. 2019 1816 2019-01-01
-## 2 02-janv. 2019 1912 2019-01-02
-## 3 03-janv. 2019 1850 2019-01-03
-## 4 04-janv. 2019 1878 2019-01-04
-## 5 05-janv. 2019 1889 2019-01-05
-## 6 06-janv. 2019 1880 2019-01-06
-La transformation du format de date étant un peu particulière, -vérifions juste que tout se soit bien passé et qu’il n’y ait pas de -NAs.
-frdeaths_raw_long[which(is.na(frdeaths_raw_long$Date)),]
-## # A tibble: 4 × 4
-## Date.d.événement Annee Incidence Date
-## <chr> <chr> <int> <date>
-## 1 29-févr. 2023 NA NA
-## 2 29-févr. 2022 NA NA
-## 3 29-févr. 2021 NA NA
-## 4 29-févr. 2019 NA NA
-Il y a effectivement des NAs, mais qui correspondent aux 29 février -qui n’existent pas pour certaines années. Nous pouvons donc supprimer -ces lignes qui ne contiennent pas de données.
-frdeaths_raw_long <- frdeaths_raw_long[!is.na(frdeaths_raw_long$Date),]
-Calculons maintenant le nombre de décès cumulés en France au cours du -temps à partir du 22-01-2022 (date de départ de nos données covid).
-deaths_cum_fr <- frdeaths_raw_long %>%
- dplyr::arrange(Date) %>%
- dplyr::filter(Date >= "2020-01-22") %>%
- dplyr::mutate(Incidence_Cum = cumsum(as.numeric(Incidence))) %>%
- dplyr::select(Date, Incidence_Cum)
-colnames(deaths_cum_fr) <- c("Date", "All_Cum_Inc")
-head(deaths_cum_fr)
-## # A tibble: 6 × 2
-## Date All_Cum_Inc
-## <date> <dbl>
-## 1 2020-01-22 1793
-## 2 2020-01-23 3582
-## 3 2020-01-24 5427
-## 4 2020-01-25 7236
-## 5 2020-01-26 8991
-## 6 2020-01-27 10869
-Nous pouvons maintenant effectuer une comparaison avec les décès -observés suite au covid 19. Pour ce faire, commençons par extraire les -données covid pour la France uniquement, puis effectuons une jointure -avec les statistiques de l’INSEE.
-deaths_fromCovid_fr <- deaths_byCountry %>% # Extraction des données covid france
- dplyr::ungroup() %>%
- dplyr::filter(Location == "France") %>%
- dplyr::select(Date, Incidence) %>%
- dplyr::arrange(Date)
-colnames(deaths_fromCovid_fr) <- c("Date", "Covid_Cum_Inc")
-
-deaths_Several_fr <- deaths_fromCovid_fr %>%
- dplyr::left_join(deaths_cum_fr, by = "Date") %>%
- dplyr::select(c("Date", "Covid_Cum_Inc", "All_Cum_Inc")) %>%
- tidyr::pivot_longer(2:3, names_to = "Cause", values_to = "Incidence_Cum")
-head(deaths_Several_fr)
-## # A tibble: 6 × 3
-## Date Cause Incidence_Cum
-## <date> <chr> <dbl>
-## 1 2020-01-22 Covid_Cum_Inc 0
-## 2 2020-01-22 All_Cum_Inc 1793
-## 3 2020-01-23 Covid_Cum_Inc 0
-## 4 2020-01-23 All_Cum_Inc 3582
-## 5 2020-01-24 Covid_Cum_Inc 0
-## 6 2020-01-24 All_Cum_Inc 5427
-Maintenant que nous avons nos données à disposition, nous pouvons les -tracer en parallèle sur un graphique.
-ggplot(deaths_Several_fr, aes(x = Date, y = Incidence_Cum, color = Cause)) + # Tracé du graphique
- geom_line(size = 0.8) +
- scale_x_date(breaks = function(x) seq.Date(from = min(x),
- to = max(x),
- by = "3 months"),
- minor_breaks = function(x) seq.Date(from = min(x),
- to = max(x),
- by = "1 month")) +
- scale_color_manual(values=c("darkred", "darkblue"), breaks = c("All_Cum_Inc", "Covid_Cum_Inc"), labels = c("Toutes causes", "Covid-19")) +
- labs(title="Comparaison des décès cumulés Covid et\ntoutes causes en France au cours du temps", y="Cumul de décès observés", x="Temps") +
- theme(
- plot.title = element_text(hjust = 0.5),
- plot.background = element_rect(fill = "white"),
- panel.background = element_rect(fill = 'white'),
- panel.grid.major = element_line(size = 0.5, linetype = 'solid', colour = "#e0e0e0"),
- panel.grid.minor = element_line(size = 0.25, linetype = 'solid', colour = "#f2f2f2"),
- axis.line = element_line(colour = "black"),
- axis.text.x = element_text(angle = 45, hjust = 1)
- )
-Les données de population par pays ont été récupérées sur le site des -Nations Unies, sur cette -page. La version utilisée a été téléchargée le 2024-08-23. -Malheureusement, elle est trop volumineuse pour être déposée sur un -Git.
-if(!file.exists("./WPP2024_TotalPopulationBySex.csv")){
- download.file("https://population.un.org/wpp/Download/Files/1_Indicator%20(Standard)/CSV_FILES/WPP2024_TotalPopulationBySex.csv.gz", "./WPP2024_TotalPopulationBySex.csv")
-}
-Nous avons également besoin du nombre de lits d’hôpital pour 1000 -habitants qui peut être trouvé sur le site de l’OCDE, à cette -page. Le lien est celui-ci. -Les données doivent cependant être téléchargées manuellement en local, -nettoyées puis enregistrées en csv. La version actuellement en local a -été téléchargée le 2024-08-23.
-Vérifions le format des fichiers à la recherche d’anomalies (type de -colonnes, valeurs NAs…).
-# Importation
-pop_raw <- read.csv("./WPP2024_TotalPopulationBySex.csv")
-bed_raw <- fread("./ELS-2019-5047-FR-G164.csv", encoding = "Latin-1", header = TRUE)
-
-# Type de colonnes
-unlist(lapply(pop_raw, class))
-## SortOrder LocID Notes ISO3_code ISO2_code SDMX_code
-## "integer" "integer" "character" "character" "character" "integer"
-## LocTypeID LocTypeName ParentID Location VarID Variant
-## "integer" "character" "integer" "character" "integer" "character"
-## Time MidPeriod PopMale PopFemale PopTotal PopDensity
-## "integer" "numeric" "numeric" "numeric" "numeric" "numeric"
-unlist(lapply(bed_raw, class))
-## Country 2000 2017
-## "character" "numeric" "numeric"
-Les colonnes sont bien aux format escomptés (‘character’, ‘integer’, -‘double’), ce qui laisse entendre que l’import s’est bien passé.
-Sélectionnons maintenant les pays qui nous intéressent dans la table -de Nations Unies, et convertissons la démographie en effectuant -l’opération \(*10^3\). Nous -sélectionnerons les données démographiques de l’année 2021 pour nos -calculs (année de données pour les lits d’hôpital). Certains pays comme -la Corée, l’Iran, la Chine, ne seront pas être inclus dans l’analyse car -nous ne disposons pas de données adaptés les concernant.
-target_countries_pop <- c("Belgium", "France", "Germany", "Italy", "Japan", "Netherlands", "Portugal", "Spain", "United Kingdom", "United States of America (and dependencies)")
-target_countries_beds <- c("Belgique", "France", "Allemagne", "Italie", "Japon", "Pays-Bas", "Portugal", "Espagne", "Royaume-Uni", "États-Unis")
-target_countries_SCMP <- c("Belgium", "France", "Germany", "Italy", "Japan", "Netherlands", "Portugal", "Spain", "United Kingdom", "US")
-
-pop_filtered <- pop_raw %>%
- dplyr::filter(Location %in% target_countries_pop & Time == 2021) %>%
- dplyr::mutate(Population = PopTotal *10^3) %>%
- dplyr::select(Location, Population)
-lapply(1:length(pop_filtered$Location), function(i){pop_filtered$Location[i] <<- target_countries_SCMP[which(target_countries_pop==pop_filtered$Location[i])]}) # Conversion des noms pour utiliser la même nomenclature
-
-beds_filtered <- bed_raw %>%
- dplyr::filter(Country %in% target_countries_beds) %>%
- dplyr::select(c("Country", "2017"))
-colnames(beds_filtered) <- c("Location", "Hospital_Beds")
-lapply(1:length(beds_filtered$Location), function(i){beds_filtered$Location[i] <<- target_countries_SCMP[which(target_countries_beds==beds_filtered$Location[i])]}) # Conversion des noms pour utiliser la même nomenclature
-pop_filtered
-## Location Population
-## 1 US 343761808
-## 2 Japan 125679338
-## 3 United Kingdom 67668792
-## 4 Italy 59729350
-## 5 Portugal 10390956
-## 6 Spain 47735664
-## 7 Belgium 11570844
-## 8 France 66083548
-## 9 Germany 83697083
-## 10 Netherlands 17730564
-beds_filtered
-## Location Hospital_Beds
-## 1: Japan 13.1
-## 2: Germany 8.0
-## 3: France 6.0
-## 4: Belgium 5.7
-## 5: Portugal 3.4
-## 6: Netherlands 3.3
-## 7: Italy 3.2
-## 8: Spain 3.0
-## 9: US 2.8
-## 10: United Kingdom 2.5
-Passons maintenant au calcul, à partir des données précédemment -obtenues concernant les décès aux suites du covid ainsi que la -population de chaque pays, du nombre de décès rapporté à 1000 habitants. -Pour ce faire, nous récupérons le tableau du nombre total de décès, nous -récupérons les pays pour lesquels nous avons des données, et nous -faisons la jointure avec les données de population et de lits -disponibles.
-normalized_deaths <- totaldth_byCountry %>%
- dplyr::filter(Location %in% target_countries_SCMP) %>%
- dplyr::left_join(pop_filtered, by = "Location") %>%
- dplyr::left_join(beds_filtered, by = "Location") %>%
- dplyr::mutate(Normalized_Inc = Incidence_Sum/(Population/1000))
-Maintenant que nous avons les données à notre disposition, nous -pouvons les tracer sur un graphique.
-ggplot(normalized_deaths, aes(x = Hospital_Beds, y = Normalized_Inc)) +
- geom_point(aes(size=Incidence_Sum)) +
- labs(title = "Nombre de décès dus au Covid-19 pour différents pays\nen fonction du nombre de lits d'hôpital", x = "Nombre de décès pour 1000 habitants", y = "Nombre de lits d'hôpital pour 1000 habitants", size="Nombre de décès total") +
- geom_text(aes(label=Location), hjust=1.2, vjust=0.25, angle=90) +
- xlim(2.5,14) + ylim(0,3.5) +
- scale_color_continuous() +
- theme(
- plot.title = element_text(hjust = 0.5),
- plot.background = element_rect(fill = "white"),
- panel.background = element_rect(fill = 'white'),
- panel.grid.major = element_line(size = 0.5, linetype = 'solid', colour = "#e0e0e0"),
- panel.grid.minor = element_line(size = 0.25, linetype = 'solid', colour = "#f2f2f2"),
- axis.line = element_line(colour = "black")
- )
-