mirror of
https://github.com/ArthurDanjou/ArtStudies.git
synced 2026-01-14 15:54:13 +01:00
Remove old HTML enonce files and rename Rmd files for tp1 and tp2 to tp1.Rmd and tp2.Rmd
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -670,8 +670,8 @@ grid.arrange(p1, p2, p3, p4, p5, p6, p7, p8, ncol = 2)
|
||||
|
||||
# Informations de session {.unnumbered}
|
||||
|
||||
```{r}
|
||||
sessionInfo()
|
||||
```
|
||||
|
||||
# Références
|
||||
:::
|
||||
# Références
|
||||
File diff suppressed because one or more lines are too long
@@ -32,17 +32,16 @@ knitr::opts_chunk$set(
|
||||
options(encoding = "UTF-8")
|
||||
```
|
||||
|
||||
|
||||
```{r, echo = FALSE, fig.keep= 'none'}
|
||||
# Chargement des librairies graphiques
|
||||
library(lattice)
|
||||
library(grid)
|
||||
library(ggplot2)
|
||||
require(gridExtra)
|
||||
require(gridExtra)
|
||||
library(locfit)
|
||||
library(scales)
|
||||
library(formattable)
|
||||
library(RColorBrewer)
|
||||
library(RColorBrewer)
|
||||
library(plotly)
|
||||
library(dplyr)
|
||||
library(tidyr)
|
||||
@@ -54,11 +53,11 @@ library(cowplot)
|
||||
|
||||
# Objectifs du TP
|
||||
|
||||
L'objectif de ce TP vise à manipuler et utiliser à bon escient les différents
|
||||
types de graphiques du package **ggplot2** (et éventuellement des packages
|
||||
associés).
|
||||
L'objectif de ce TP vise à manipuler et utiliser à bon escient les
|
||||
différents types de graphiques du package **ggplot2** (et éventuellement
|
||||
des packages associés).
|
||||
|
||||
---
|
||||
------------------------------------------------------------------------
|
||||
|
||||
# Prérequis
|
||||
|
||||
@@ -73,32 +72,31 @@ associés).
|
||||
Vous pouvez ensuite écrire vos codes soit :
|
||||
|
||||
- En ouvrant un nouveau script `.R` ;
|
||||
- En ouvrant le ouvrant le rapport Rmarkdown `4-td_graphiques - enonce`.
|
||||
Certains codes sont partiels et sont à compléter (indication `???`).
|
||||
N'oubliez pas de modifier l'option `eval = TRUE` pour que les
|
||||
calculs puissent être réalisés.
|
||||
|
||||
|
||||
---
|
||||
- En ouvrant le ouvrant le rapport Rmarkdown
|
||||
`4-td_graphiques - enonce`. Certains codes sont partiels et sont à
|
||||
compléter (indication `???`). N'oubliez pas de modifier l'option
|
||||
`eval = TRUE` pour que les calculs puissent être réalisés.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
# Analyse du lien espérance de vie et GDP
|
||||
|
||||
Dans ce TP, le jeu de données utilisé est le jeu `gapminder` du package
|
||||
**gapminder**. Il comprend des séries de données de PIB par habitant et d'espérance
|
||||
de vie par pays sur la période 1952-1990. Les observations ont lieu tous les 5 ans.
|
||||
**gapminder**. Il comprend des séries de données de PIB par habitant et
|
||||
d'espérance de vie par pays sur la période 1952-1990. Les observations
|
||||
ont lieu tous les 5 ans.
|
||||
|
||||
## Données
|
||||
|
||||
Dans un premier temps, il faut installer le package et le charger.
|
||||
Dans un premier temps, il faut installer le package et le charger.
|
||||
|
||||
```{r}
|
||||
# install.packages("gapminder") #nolint
|
||||
library(gapminder)
|
||||
```
|
||||
|
||||
Ce jeu de données contient 1706 observations où chaque ligne correspond à un
|
||||
pays `country` pour une année d'observation `year`.
|
||||
Ce jeu de données contient 1706 observations où chaque ligne correspond
|
||||
à un pays `country` pour une année d'observation `year`.
|
||||
|
||||
```{r}
|
||||
paged_table(gapminder, options = list(rows.print = 15))
|
||||
@@ -107,25 +105,27 @@ paged_table(gapminder, options = list(rows.print = 15))
|
||||
On se concentre plus particulièrement sur les variables suivantes :
|
||||
|
||||
- `lifeExp` : l'espérance de vie ;
|
||||
- `gdpPercap` : le PIB par habitant en dollars (conversion sur base 2005) ;
|
||||
- `gdpPercap` : le PIB par habitant en dollars (conversion sur
|
||||
base 2005) ;
|
||||
- `pop` : la taille de la population ;
|
||||
- `continent` : le continent d'appartenance.
|
||||
- `continent` : le continent d'appartenance.
|
||||
|
||||
Pour plus détails, voir l'aide `?gapminder`.
|
||||
|
||||
## But de la visualisation
|
||||
|
||||
Dans ce TP, on cherche un ensemble de visualisations permettant de commenter
|
||||
le lien entre GDP et espérance de vie, globalement et à différents
|
||||
échelles géographiques :
|
||||
Dans ce TP, on cherche un ensemble de visualisations permettant de
|
||||
commenter le lien entre GDP et espérance de vie, globalement et à
|
||||
différents échelles géographiques :
|
||||
|
||||
- est-ce que les pays les plus développés en termes de PIB par habitant ont la
|
||||
meilleure espérance de vie ?
|
||||
- peut-on identifier des dynamiques différentes en fonction des pays ou des continents ?
|
||||
- est-ce que les pays les plus développés en termes de PIB par
|
||||
habitant ont la meilleure espérance de vie ?
|
||||
- peut-on identifier des dynamiques différentes en fonction des pays
|
||||
ou des continents ?
|
||||
- quels facteurs influencent également cette relation ?
|
||||
|
||||
**En vous répartissant en groupes de 3-4 étudiant.e.s.**, choisissez pour chaque groupe,
|
||||
une des 4 visualisations suivantes :
|
||||
**En vous répartissant en groupes de 3-4 étudiant.e.s.**, choisissez
|
||||
pour chaque groupe, une des 4 visualisations suivantes :
|
||||
|
||||
- visualisations utilisant des dot points.
|
||||
- visualisations permettant de présenter une distribution.
|
||||
@@ -136,47 +136,40 @@ une des 4 visualisations suivantes :
|
||||
### Dot points
|
||||
|
||||
::: exercise-box
|
||||
|
||||
|
||||
En partant de cette visualisation, construire une ou plusieurs visualisations
|
||||
permettant d'analyser et de commenter les liens que vous
|
||||
En partant de cette visualisation, construire une ou plusieurs
|
||||
visualisations permettant d'analyser et de commenter les liens que vous
|
||||
pouvez observer entre `gdpPercap` et `lifeExp`.
|
||||
|
||||
:::
|
||||
|
||||
```{r}
|
||||
ggplot(data = gapminder, aes(x = gdpPercap, y = lifeExp)) +
|
||||
ggplot(data = gapminder, aes(x = gdpPercap, y = lifeExp)) +
|
||||
geom_point()
|
||||
```
|
||||
|
||||
|
||||
### Distributions
|
||||
|
||||
::: exercise-box
|
||||
|
||||
|
||||
En partant de cette visualisation, analyser et commenter les écarts
|
||||
d'espérance de vie sur la planète. Vous pourrez aussi adopter d'autres
|
||||
visualisations permettant de comparer des distributions.
|
||||
|
||||
d'espérance de vie sur la planète. Vous pourrez aussi adopter d'autres
|
||||
visualisations permettant de comparer des distributions.
|
||||
:::
|
||||
|
||||
```{r}
|
||||
ggplot(data = gapminder, aes(x = lifeExp)) +
|
||||
ggplot(data = gapminder, aes(x = lifeExp)) +
|
||||
geom_density()
|
||||
```
|
||||
|
||||
|
||||
### Cartes
|
||||
|
||||
Afin de visualiser plus précisément les caractéristiques régionales de l'espérance
|
||||
de vie et du PIB par habitant, nous décidons de faire des cartes.
|
||||
Afin de visualiser plus précisément les caractéristiques régionales de
|
||||
l'espérance de vie et du PIB par habitant, nous décidons de faire des
|
||||
cartes.
|
||||
|
||||
Il faut au préalable récupérer un fond de carte (ici de l'année 2016). Nous prenons
|
||||
les données `gapminder` de 2007.
|
||||
Il faut au préalable récupérer un fond de carte (ici de l'année 2016).
|
||||
Nous prenons les données `gapminder` de 2007.
|
||||
|
||||
```{r}
|
||||
library(giscoR)
|
||||
library(giscoR)
|
||||
library(sf)
|
||||
|
||||
world <- gisco_countries
|
||||
@@ -194,34 +187,33 @@ ggplot(world_df) +
|
||||
```
|
||||
|
||||
::: exercise-box
|
||||
|
||||
|
||||
En partant de la visualisation et des données ci-dessus, représenter et analyser
|
||||
les disparités d'espérance
|
||||
de vie et de revenus.
|
||||
En partant de la visualisation et des données ci-dessus, représenter et
|
||||
analyser les disparités d'espérance de vie et de revenus.
|
||||
:::
|
||||
|
||||
---
|
||||
------------------------------------------------------------------------
|
||||
|
||||
# Analyse des accidents à vélo en France
|
||||
|
||||
Dans ce TP, nous nous intéressons aux accidents corporels survenus sur une voie
|
||||
ouverte à la circulation publique, impliquant au moins un véhicule et ayant fait
|
||||
au moins une victime ayant nécessité des soins) pour la période 2005-2021.
|
||||
Dans ce TP, nous nous intéressons aux accidents corporels survenus sur
|
||||
une voie ouverte à la circulation publique, impliquant au moins un
|
||||
véhicule et ayant fait au moins une victime ayant nécessité des soins)
|
||||
pour la période 2005-2021.
|
||||
|
||||
L'objectif est de créer un ensemble de visualisations qui permettront de mieux
|
||||
comprendre accidentologie des cyclistes, ce qui trouve de nombreuses sources
|
||||
d'applications notamment en assurance.
|
||||
L'objectif est de créer un ensemble de visualisations qui permettront de
|
||||
mieux comprendre accidentologie des cyclistes, ce qui trouve de
|
||||
nombreuses sources d'applications notamment en assurance.
|
||||
|
||||
Les données et documentation de ces données sont disponibles [ici](https://www.data.gouv.fr/fr/datasets/bases-de-donnees-annuelles-des-accidents-corporels-de-la-circulation-routiere-annees-de-2005-a-2021/).
|
||||
Les données et documentation de ces données sont disponibles
|
||||
[ici](https://www.data.gouv.fr/fr/datasets/bases-de-donnees-annuelles-des-accidents-corporels-de-la-circulation-routiere-annees-de-2005-a-2021/).
|
||||
|
||||
## Données
|
||||
|
||||
Pour récupérer les données :
|
||||
|
||||
1. récupérer le fichier zippé "data_velo.zip".
|
||||
2. créer un dossier "data" à la racine de votre projet.
|
||||
3. placer y le contenu du dossier zippé.
|
||||
1. récupérer le fichier zippé "data_velo.zip".
|
||||
2. créer un dossier "data" à la racine de votre projet.
|
||||
3. placer y le contenu du dossier zippé.
|
||||
|
||||
Les données se chargent avec la commande suivante.
|
||||
|
||||
@@ -231,23 +223,29 @@ library(readr)
|
||||
library(tidyverse)
|
||||
|
||||
# main data
|
||||
accidents <- read_csv("data/accidentsVelo.csv",
|
||||
col_types = cols(Num_Acc = col_double(),
|
||||
date = col_date(format = "%Y-%m-%d")))
|
||||
path <- getwd()
|
||||
accidents <- read_csv(
|
||||
paste0(
|
||||
path,
|
||||
"/data/accidentsVelo.csv"),
|
||||
col_types = cols(Num_Acc = col_double(), date = col_date(format = "%Y-%m-%d"))
|
||||
)
|
||||
|
||||
# few ajustements
|
||||
# few ajustements
|
||||
accidents <- accidents |>
|
||||
mutate(mois = factor(mois),
|
||||
jour = factor(jour),
|
||||
dep = factor(dep),
|
||||
agg = factor(agg),
|
||||
grav = factor(grav),
|
||||
situ = factor(situ))
|
||||
mutate(
|
||||
mois = factor(mois),
|
||||
jour = factor(jour),
|
||||
dep = factor(dep),
|
||||
agg = factor(agg),
|
||||
grav = factor(grav),
|
||||
situ = factor(situ)
|
||||
)
|
||||
|
||||
# correct some issues with variables `hrmn`
|
||||
issue <- which(str_length(accidents$hrmn) == 4)
|
||||
correct <- accidents$hrmn[issue]
|
||||
correct <- paste0("0", str_sub(correct, 1, 1), ":",
|
||||
correct <- paste0("0", str_sub(correct, 1, 1), ":",
|
||||
str_sub(correct, 2, 2), str_sub(correct, 4, 4))
|
||||
accidents$hrmn[issue] <- correct
|
||||
|
||||
@@ -257,11 +255,16 @@ accidents <- accidents |>
|
||||
mutate(hour = strptime(hour, "%Y-%m-%d %H:%M")$hour)
|
||||
|
||||
# mapping table for french departments
|
||||
departements_francais <- read_excel("data/departements-francais.xlsx")
|
||||
departements_francais <- read_excel(
|
||||
paste0(
|
||||
path,
|
||||
"/data/departements-francais.xlsx"),
|
||||
col_types = c("text", "text", "text")
|
||||
)
|
||||
```
|
||||
|
||||
Ce jeu de données contient 74758 observations où chaque ligne correspond à un
|
||||
accident.
|
||||
Ce jeu de données contient 74758 observations où chaque ligne correspond
|
||||
à un accident.
|
||||
|
||||
```{r}
|
||||
paged_table(accidents, options = list(rows.print = 15))
|
||||
@@ -269,90 +272,90 @@ paged_table(accidents, options = list(rows.print = 15))
|
||||
|
||||
On se concentre plus particulièrement sur les variables suivantes :
|
||||
|
||||
|
||||
- `date`, `an`, `mois`, `jour`, `hour`, : la date, année, mois, jour et heure de l'accident ;
|
||||
- `date`, `an`, `mois`, `jour`, `hour`, : la date, année, mois, jour
|
||||
et heure de l'accident ;
|
||||
- `dep` : le département ;
|
||||
- `agg` : la location (1 = "hors agglomération", 2 = "en agglomération") ;
|
||||
- `agg` : la location (1 = "hors agglomération", 2 = "en
|
||||
agglomération") ;
|
||||
- `lat` : latitude (pas toujours renseignée) ;
|
||||
- `long` : longitude (pas toujours renseignée) ;
|
||||
- `situ` : la situation de l'accident (-1 = Non renseigné, 0 = Aucun,
|
||||
1 = Sur chaussée, 2 = Sur bande d’arrêt d’urgence, 3 = Sur accotement,
|
||||
4 = Sur trottoir, 5 = Sur piste cyclable, 6 = Sur autre voie spéciale, 8 = Autres) ;
|
||||
- `grav` : la gravité (1 = Indemne, 2 = Tué, 3 = Blessé hospitalisé,
|
||||
4 = Blessé léger).
|
||||
- `situ` : la situation de l'accident (-1 = Non renseigné, 0 = Aucun,
|
||||
1 = Sur chaussée, 2 = Sur bande d’arrêt d’urgence, 3 = Sur
|
||||
accotement, 4 = Sur trottoir, 5 = Sur piste cyclable, 6 = Sur autre
|
||||
voie spéciale, 8 = Autres) ;
|
||||
- `grav` : la gravité (1 = Indemne, 2 = Tué, 3 = Blessé hospitalisé, 4
|
||||
= Blessé léger).
|
||||
|
||||
D'autres variables intéressantes pourraient être étudiées, mais nous nous limitons
|
||||
à celle-ci dans ce TP.
|
||||
D'autres variables intéressantes pourraient être étudiées, mais nous
|
||||
nous limitons à celle-ci dans ce TP.
|
||||
|
||||
## But de la visualisation
|
||||
|
||||
Dans ce TP, on cherche à réaliser une analyse exploratoire du jeu de données
|
||||
afin d'identifier les relations importantes entre le nombre d'accidents et
|
||||
ses déterminants :
|
||||
Dans ce TP, on cherche à réaliser une analyse exploratoire du jeu de
|
||||
données afin d'identifier les relations importantes entre le nombre
|
||||
d'accidents et ses déterminants :
|
||||
|
||||
- est-ce que les accidents sont plus situés en agglomération ?
|
||||
- comment les accidents se répartissent dans l'espace et dans le temps ?
|
||||
- quels impacts ont les situations de circulation sur la gravité des accidents ?
|
||||
- est-ce que les accidents sont plus situés en agglomération ?
|
||||
- comment les accidents se répartissent dans l'espace et dans le temps
|
||||
?
|
||||
- quels impacts ont les situations de circulation sur la gravité des
|
||||
accidents ?
|
||||
|
||||
En vous répartissant en groupes de 3-4 étudiant.e.s., choisissez pour chaque groupe,
|
||||
une des 4 visualisations suivantes :
|
||||
En vous répartissant en groupes de 3-4 étudiant.e.s., choisissez pour
|
||||
chaque groupe, une des 4 visualisations suivantes :
|
||||
|
||||
- visualisations utilisant des cartes statiques ou dynamiques.
|
||||
- visualisations utilisant des bar plots.
|
||||
|
||||
L'anayse a réalisé ici est préliminaire, d'autres informations intéressantes
|
||||
sont à extraire de ce jeu de données.
|
||||
L'anayse a réalisé ici est préliminaire, d'autres informations
|
||||
intéressantes sont à extraire de ce jeu de données.
|
||||
|
||||
## Différentes visualisations
|
||||
|
||||
### Carte
|
||||
|
||||
#### Carte dynamique {-}
|
||||
#### Carte dynamique {.unnumbered}
|
||||
|
||||
::: exercise-box
|
||||
1. Tracer une carte dynamique représentant la location des accidents
|
||||
(latitude, longitude) en France sur toute la période en modulant la
|
||||
gravité.
|
||||
|
||||
2. Faire deux variantes de cette carte, selon le caractère urbain ou
|
||||
non des accidents.
|
||||
|
||||
1. Tracer une carte dynamique représentant la location des accidents (latitude,
|
||||
longitude) en France sur toute la période en modulant la gravité.
|
||||
|
||||
2. Faire deux variantes de cette carte, selon le caractère urbain ou non des accidents.
|
||||
|
||||
3. Commenter ces figures.
|
||||
|
||||
4. Quelles limites voyez-vous à cette représentation ?
|
||||
3. Commenter ces figures.
|
||||
|
||||
4. Quelles limites voyez-vous à cette représentation ?
|
||||
:::
|
||||
|
||||
Voici un premier code à trou pour vous aider. Pour alléger les temps de production
|
||||
afficher uniquement quelques points. Vous pourrez ajouter l'ensemble du jeu de données
|
||||
quand votre code sera finalisé.
|
||||
Voici un premier code à trou pour vous aider. Pour alléger les temps de
|
||||
production afficher uniquement quelques points. Vous pourrez ajouter
|
||||
l'ensemble du jeu de données quand votre code sera finalisé.
|
||||
|
||||
```{r, eval = F}
|
||||
```{r, eval=F}
|
||||
library(mapview)
|
||||
library(sf)
|
||||
|
||||
## Remove NA
|
||||
df_map_dyn <- accidents |>
|
||||
filter(???) |>
|
||||
filter(!is.na(lat) & !is.na(long)) |>
|
||||
na.omit()
|
||||
|
||||
# Make map and print it
|
||||
mymap <- st_as_sf(???)
|
||||
mymap <- st_as_sf()
|
||||
mapview(mymap, cex = 2, layer.name = "Gravité",
|
||||
zcol = "grav",legend = TRUE )
|
||||
```
|
||||
|
||||
|
||||
#### Carte choroplèthe {-}
|
||||
#### Carte choroplèthe {.unnumbered}
|
||||
|
||||
::: exercise-box
|
||||
1. Tracer une carte statistique de type chonoplèthe et représenter le
|
||||
nombre d'accidents par département.
|
||||
|
||||
|
||||
1. Tracer une carte statistique de type chonoplèthe et représenter
|
||||
le nombre d'accidents par département.
|
||||
|
||||
2. Faire plusieurs variantes de cette carte selon la gravité des accidents.
|
||||
|
||||
2. Faire plusieurs variantes de cette carte selon la gravité des
|
||||
accidents.
|
||||
:::
|
||||
|
||||
Voici un premier code à trou pour vous aider.
|
||||
@@ -396,23 +399,22 @@ g_map_acc
|
||||
### Bar plots
|
||||
|
||||
::: exercise-box
|
||||
1. On s'intéresse à la répartition par mois et horaires des accidents
|
||||
(variable `an`, `hour`, `mois`). Tracer des bar plots permettant de
|
||||
montrer la répartition temporelle des accidents.
|
||||
|
||||
2. On s'intéresse à l'impact des situations de circulation. Tracer des
|
||||
bar plots permettant de montrer la répartition de la gravité des
|
||||
accidents selon ces situations.
|
||||
|
||||
1. On s'intéresse à la répartition par mois et horaires des accidents (variable
|
||||
`an`, `hour`, `mois`). Tracer des bar plots permettant de montrer la répartition
|
||||
temporelle des accidents.
|
||||
|
||||
2. On s'intéresse à l'impact des situations de circulation. Tracer des bar plots
|
||||
permettant de montrer la répartition de la gravité des accidents selon ces situations.
|
||||
|
||||
3. Voyez-vous une évolution sur la période 2005-2021 ?
|
||||
|
||||
4. Réfléchir à des représentations alternatives pour les phénomènes périodiques.
|
||||
3. Voyez-vous une évolution sur la période 2005-2021 ?
|
||||
|
||||
4. Réfléchir à des représentations alternatives pour les phénomènes
|
||||
périodiques.
|
||||
:::
|
||||
|
||||
# Informations de session {.unnumbered}
|
||||
|
||||
# Informations de session {-}
|
||||
```{r}
|
||||
sessionInfo()
|
||||
```
|
||||
```
|
||||
Reference in New Issue
Block a user