Chapitre 17 Les séries chronologiques
Une série chronologique est un ensemble de valeurs observées d’une variable quantitative. Elle permet d’analyser l’évolution de cette variable dans le temps dans le but éventuel de faire des prévisions. Le tableau utilisé pour représenter les données d’une série chronologique comporte une colonne pour la période ainsi qu’une colonne pour la valeur observée.
Pour ce chapitre, nous utiliserons la librairie gapminder
.
17.1 Mise en place
library(tidyverse)
library(questionr)
library(gapminder)
library(knitr)
canada <-
gapminder %>%
filter(country %in% c("Canada")) %>%
select(year,lifeExp)
canada
#> # A tibble: 12 x 2
#> year lifeExp
#> <int> <dbl>
#> 1 1952 68.8
#> 2 1957 70.0
#> 3 1962 71.3
#> 4 1967 72.1
#> 5 1972 72.9
#> 6 1977 74.2
#> # ... with 6 more rows
ggplot(data = canada, aes(x = year, y = lifeExp))+
geom_line()+
geom_point()
Le génocide Rwandais…
gapminder %>%
filter(country %in% c("Rwanda")) %>%
select(year,lifeExp) %>%
ggplot(aes(x = year, y = lifeExp))+
geom_line()+
geom_point()
17.2 Criminalité à Montréal
# On lit les données disponibles sur le web.
criminalite <- read_csv("http://donnees.ville.montreal.qc.ca/dataset/5829b5b0-ea6f-476f-be94-bc2b8797769a/resource/c6f482bf-bf0f-4960-8b2f-9982c211addd/download/interventionscitoyendo.csv", locale = locale(encoding = 'ISO-8859-1'))
#criminalite <- read_csv(here::here("data","criminalite-2015-2018.csv"), locale = locale(encoding = 'ISO-8859-1'))
criminalite %>%
group_by(CATEGORIE, DATE, QUART) %>%
summarise(Nombre = n()) %>%
ggplot(aes(x = DATE, y = Nombre, color = QUART))+
geom_line()+
facet_wrap(~ CATEGORIE)
criminalite %>%
filter(DATE > "2016-06-30" & DATE < "2016-08-01") %>%
group_by(CATEGORIE, DATE, QUART) %>%
summarise(Nombre = n()) %>%
ggplot(aes(x = DATE, y = Nombre, color = QUART))+
geom_path()+
facet_wrap(~CATEGORIE)
#> geom_path: Each group consists of only one observation. Do you need to
#> adjust the group aesthetic?
17.3 Airbnb
Sur le site où les données ont été prises, nous pour vons utiliser une autre base de données calendar
. Par contre, le fichier fait 100 Mo et prend plusieurs minutes à être lu par read_csv
. On pourrait unir les deux bases de données pour connaître le nombre moyen de jours d’occupations, etc…
On veut retrouver les statistiques calculées ici airbnb montreal.
airbnb <- read_csv("http://data.insideairbnb.com/canada/qc/montreal/2016-05-04/visualisations/listings.csv")
#airbnb <- read_csv(here::here("data", "airbnb-listings-mtl.csv"))
#calendar <- read_csv(here::here("data", "airbnb-calendar-mtl.csv"), n_max = 526400)
17.3.1 Catégorie de logement
kable(freq(airbnb$room_type,
total = TRUE,
valid = FALSE))
n | % | |
---|---|---|
Entire home/apt | 6377 | 60.1 |
Private room | 4092 | 38.5 |
Shared room | 150 | 1.4 |
Total | 10619 | 100.0 |
ggplot(data = airbnb, mapping = aes(x = room_type, fill = room_type))+
geom_bar()+
labs(
x = "Type de logement",
y = "Fréquence"
)
La moyenne du prix par nuit.
mean(airbnb$price)
#> [1] 90.6
17.3.2 Availability
Création d’une nouvelle colonne pour avoir haute (plus de 90 jours par année) et basse (90 jours ou moins par année) disponibilité.
airbnb_av <- airbnb %>%
mutate(disponibilite = if_else(availability_365 > 90, "haute", "basse"))
kable(freq(airbnb_av$disponibilite,
total = TRUE,
valid = FALSE))
n | % | |
---|---|---|
basse | 3774 | 35.5 |
haute | 6845 | 64.5 |
Total | 10619 | 100.0 |
Les logements sont disponibles en moyenne combien de jours par année?
mean(airbnb$availability_365)
#> [1] 197
ggplot(data = airbnb, mapping = aes(x = availability_365))+
geom_bar()+
labs(
x = "Nombre de jours disponibles par année",
y = "Fréquence"
)
17.3.3 Nombre de logements par hôtes
Création d’une nouvelle colonne pour savoir si l’hôte possède un seul logement ou plusieurs.
airbnb_mult <- airbnb %>%
mutate(multi = if_else(calculated_host_listings_count > 1, "Multi", "Unique"))
kable(freq(airbnb_mult$multi,
total = TRUE,
valid = FALSE))
n | % | |
---|---|---|
Multi | 3336 | 31.4 |
Unique | 7283 | 68.6 |
Total | 10619 | 100.0 |
ggplot(data = airbnb, mapping = aes(x = calculated_host_listings_count))+
geom_bar()+
labs(
x = "Nombre de logements au nom de l'hôte",
y = "Fréquence"
)
17.4 DSLABS
La librairie
17.5 FIVETHIRTYEIGHT
library(fivethirtyeight)
polls <- as.tibble(generic_polllist)
polls %>%
select(enddate, pollster, adjusted_dem, adjusted_rep) %>%
rename(Democrates = adjusted_dem, Republicains = adjusted_rep) %>%
gather(parti, percentage, -enddate, -pollster) %>%
mutate(parti = factor(parti, levels = c("Democrates","Republicains"))) %>%
ggplot(aes(enddate, percentage, color = parti)) +
geom_point(show.legend = FALSE, alpha=0.4) +
geom_smooth(method = "loess", span = 0.15) +
scale_y_continuous(limits = c(30,50))
#> Warning: Removed 38 rows containing non-finite values (stat_smooth).
#> Warning: Removed 38 rows containing missing values (geom_point).