Chapitre 11 Les variables quantitatives continues

11.1 Mise en place

library(tidyverse)
library(questionr)
library(nycflights13)
library(knitr)

11.2 Tableau de fréquences

Les différentes valeurs d’une variable continue étant impossibles à énumérer, nous devrons regrouper celles-ci en classes. La première colonne sera donc constituée de celles-ci.

Il sera parfois utile d’ajouter une colonne supplémentaire au tableau habituel: le milieu de classe. Celui-ci est calculé en faisant la moyenne entre le début de classe et la fin de classe.

Le tableau de fréquences que nous utiliserons est le suivant :

Titre
Nom de la variable Nombre d’unités statistiques Pourcentage d’unités statistiques (%) Pourcentage cumulé
(Classes) (Fréquences absolues) (Fréquences relatives) (Fréquences relatives cumulées)
Total n 100%

Pour être en mesure de briser une variable en classes, il faut utiliser la commande cut. Les options utilisées sont les suivantes:

Pour ce faire, nous devons utiliser la commande cut qui permet d’indiquer les frontières de ces classes. Voici un exemple où nous créons des classes de largeur 25:

temp_classes <- cut(weather$temp,
                    breaks = c(0, 25, 50, 75, 100, 125),
                    include.lowest = TRUE,
                    right = FALSE)
unique(temp_classes)
#> [1] [25,50)   [0,25)    [50,75)   [75,100)  [100,125] <NA>     
#> Levels: [0,25) [25,50) [50,75) [75,100) [100,125]

Nous nous retrouvons donc avec 6 classes. Lorsque nous présenterons les variables sous forme de tableau, il nous sera utile d’utiliser la commande cut.

L’option include.lowest indique que nous voulons conserver … L’option right = FALSE indique que nous voulons des intervalles fermés à gauche et ouverts à droite.

  • include.lowest=TRUE: permet d’inclure les valeurs extrèmes
  • right=FALSE: permet d’avoir des classes fermées à gauche et ouvertes à droite
  • breaks=c(0, 100, 200, 300, 400, 500, 600, 700): permet de couper les classes à 0, 100, 200, 300, 400, 500, 600 et 700

Pour simplifier le code, nous créons en premier lieu une variable air_time_rec avec les classes et nous l’affichons ensuite avec freq. Remarquons que nous avons ajouté l’option valid = TRUE car certaines valeurs sont manquantes. Rappelons que les données manquantes sont représentées par NA en R. Deux colonnes sont ajoutées:

  • val%: le pourcentage en omettant les valeurs manquantes
  • val%cum: le pourcentage cumulé en omettant les valeurs manquantes

Nous obtenons donc:

air_time_rec <- cut(flights$air_time, 
                    include.lowest=TRUE,
                    right=FALSE,
                    breaks=c(0, 100, 200, 300, 400, 500, 600, 700))
tab_airtime <- freq(air_time_rec,
                    cum = TRUE,
                    total = TRUE,
                    valid = TRUE)
kable(tab_airtime)
n % val% %cum val%cum
[0,100) 105687 31.4 32.3 31.4 32.3
[100,200) 146527 43.5 44.8 74.9 77.0
[200,300) 31036 9.2 9.5 84.1 86.5
[300,400) 43347 12.9 13.2 97.0 99.8
[400,500) 48 0.0 0.0 97.0 99.8
[500,600) 132 0.0 0.0 97.0 99.8
[600,700] 569 0.2 0.2 97.2 100.0
NA 9430 2.8 NA 100.0 NA
Total 336776 100.0 100.0 100.0 100.0

À la section 10.2, nous avons vu que la variable seats de la base de données planes contenait 48 valeurs différentes. Nous allons donc créer le tableau de fréquences avec des classes.

seats_rec <- cut(planes$seats, 
                 include.lowest=TRUE,  
                 right=FALSE,
                 breaks=c(0, 50, 100, 150, 200, 250, 300, 350, 400, 450))
tab_seats <- freq(seats_rec,
                  cum = TRUE,
                  total = TRUE,
                  valid = TRUE)
kable(tab_seats)
n % val% %cum val%cum
[0,50) 122 3.7 3.7 3.7 3.7
[50,100) 596 17.9 17.9 21.6 21.6
[100,150) 1193 35.9 35.9 57.5 57.5
[150,200) 860 25.9 25.9 83.4 83.4
[200,250) 269 8.1 8.1 91.5 91.5
[250,300) 68 2.0 2.0 93.6 93.6
[300,350) 131 3.9 3.9 97.5 97.5
[350,400) 70 2.1 2.1 99.6 99.6
[400,450] 13 0.4 0.4 100.0 100.0
Total 3322 100.0 100.0 100.0 100.0

11.3 Représentation graphique - L’histogramme

ggplot(flights, aes(x = air_time))+
  geom_histogram(binwidth = 50, center = 25, color = 'white')+
  labs(
    title = "Répartition de 327 346 vols selon le nombre de minutes de vol",
    x = "Nombre de minutes de vol",
    y = "Nombre d'unités statistiques"
  )
#> Warning: Removed 9430 rows containing non-finite values (stat_bin).