library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(scales)

Introduction

Dans ce document, j’explore un jeu de données historiques contenant des informations sur les prix du blé et les salaires entre 1565 et 1830 (en supposant des pas de 5 ans sur 53 observations).

Voici les données de William Playfair que j’ai trouve sur le MOOC

data <- read.csv("C:/Users/CASTRO PACHECO/mooc-rr/module3/exo3/playfairdata.csv")

Je verifie la structure.

# Structure du jeu de données
str(data)
## 'data.frame':    53 obs. of  4 variables:
##  $ rownames: int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Year    : int  1565 1570 1575 1580 1585 1590 1595 1600 1605 1610 ...
##  $ Wheat   : num  41 45 42 49 41.5 47 64 27 33 32 ...
##  $ Wages   : num  5 5.05 5.08 5.12 5.15 5.25 5.54 5.61 5.69 5.78 ...

Données manquantes et plages de valeurs

Je fais un résumé rapide

# Statistiques descriptives de base
summary(data)
##     rownames       Year          Wheat           Wages       
##  Min.   : 1   Min.   :1565   Min.   :26.00   Min.   : 5.000  
##  1st Qu.:14   1st Qu.:1630   1st Qu.:33.00   1st Qu.: 6.145  
##  Median :27   Median :1695   Median :41.00   Median : 7.800  
##  Mean   :27   Mean   :1695   Mean   :43.26   Mean   :11.582  
##  3rd Qu.:40   3rd Qu.:1760   3rd Qu.:47.00   3rd Qu.:14.875  
##  Max.   :53   Max.   :1821   Max.   :99.00   Max.   :30.000  
##                                              NA's   :3

Maintenant je vais voir s’il y a des données manquantes. J’en vois trois sur la colonne des salaires.

# Vérification des valeurs manquantes
colSums(is.na(data))
## rownames     Year    Wheat    Wages 
##        0        0        0        3

Q1: Rapport entre le prix du blé et le salaire moyen

Pour répondre à la consigne, j’ai reproduit un graphique dans l’esprit de celui de Playfair. Le prix du blé est représenté par des barres verticales, tandis que les salaires sont illustrés par une surface bleue délimitée par une courbe rouge. Ces deux séries sont superposées dans un même graphique afin de visualiser leur évolution conjointe, tout en conservant l’impression générale du graphique original.

ggplot(data, aes(x = Year)) +
  geom_col(aes(y = Wheat), fill = "black", 
           color = "black", width = 3)+
  # Ligne rouge pour les salaires, taille un peu plus épaisse
  geom_line(aes(y = Wages ), color = "red", size = 2) +
  # Titres et thème
  labs(
    title = "Prix d'un quart de boisseau de ble (barres noires) et salaires (ligne rouge)",
    x = "Annee", y = "Shillings"
  ) +

  theme(
    panel.grid.major = element_line(color = "grey80"),
    panel.grid.minor = element_blank(),
    axis.title.y.left = element_text(color = "black", size = 12),
    axis.text.y.left = element_text(color = "black")
  )
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: `position_stack()` requires non-overlapping x intervals.
## Warning: Removed 3 rows containing missing values or values outside the scale range
## (`geom_line()`).

Q2: Rapport entre le prix du blé et le salaire moyen (version améliorée)

Ce graphique présente l’évolution conjointe du prix du blé et des salaires des travailleurs. Le prix du blé est affiché en barres noires, avec son échelle indiquée sur l’axe droit, tandis que les salaires hebdomadaires sont représentés par une courbe rouge, avec leur échelle sur l’axe gauche. L’utilisation de deux axes y distincts permet de comparer ces deux variables aux unités différentes sur un même graphique.

# Calcul du facteur de mise à l'échelle pour que Wheat et Wages cohabitent
# On met Wheat à l'échelle de Wages
scale_factor <- max(data$Wages, na.rm = TRUE) / max(data$Wheat, na.rm = TRUE)

ggplot(data, aes(x = Year)) +
  geom_col(aes(y = Wheat * scale_factor), fill = "black", color = "black", width = 3) +
  geom_line(aes(y = Wages), color = "red", size = 1.5) +
  scale_y_continuous(
    name = "Salaires (shillings par semaine)",
    sec.axis = sec_axis(~ . / scale_factor, name = "Prix du ble (prix d'un quart de boisseau)")
  ) +
  labs(
    title = "Prix du ble (barres noires) et salaires (ligne rouge)",
    x = "Annee"
  ) +
  theme_minimal() +
  theme(
    axis.title.y.left = element_text(color = "red", size = 12),
    axis.text.y.left = element_text(color = "red"),
    axis.title.y.right = element_text(color = "black", size = 12),
    axis.text.y.right = element_text(color = "black")
  )
## Warning: `position_stack()` requires non-overlapping x intervals.
## Warning: Removed 3 rows containing missing values or values outside the scale range
## (`geom_line()`).

Q3: Rapport entre le prix du blé et le salaire moyen (version améliorée)

Augmentation du pouvoir d’achat.

Il nous faut mainentant montrer que le pouvoir d’achat des ouvriers a monté au fil des années. Pour cela, on calculer la quantité de boisseaux de blé qu’un salarié peut acheter par semaine.

data$wheat_bags_per_wage = data$Wages / (data$Wheat*4)


ggplot(data, aes(x = Year)) +
  geom_col(aes(y = wheat_bags_per_wage), fill = "black", color = "black", width = 3) +
  labs(
    title = "Boisseaux  de ble qui peuvent etre achetes avec un salaire hebdomadaire",
    x = "Annee", y = "Boisseaux  de ble qui peuvent etre \n achetes avec un salaire hebdomadaire"
  ) +
  theme_minimal() +
  theme(
    axis.title.y.right = element_text(color = "black", size = 12),
    axis.text.y.right = element_text(color = "black")
  )
## Warning: Removed 3 rows containing missing values or values outside the scale range
## (`geom_col()`).

Relation entre le prix du blé et les salaires.

Ce graphique présente la relation entre le prix du blé et les salaires des travailleurs. Chaque point correspond à une année, dont la progression est indiquée par un dégradé de couleur allant des années les plus anciennes (en clair) aux plus récentes (en foncé). Cette représentation permet d’apprécier simultanément l’évolution conjointe des deux variables et leur lien au fil du temps, sans utiliser l’axe temporel classique.

ggplot(data, aes(x = Wheat, y = Wages, color = Year)) +
  geom_point(size = 3) +
  scale_color_gradient(low = "lightblue", high = "darkblue") +
  labs(
    title = "Relation entre prix du ble et salaires selon les annees",
    x = "Prix du ble (prix d'un quart de boisseau)",
    y = "Salaires (shillings par semaine)",
    color = "Annee"
  ) +
  theme_minimal()
## Warning: Removed 3 rows containing missing values or values outside the scale range
## (`geom_point()`).