Comment manipuler l'information: exemple de la production industrielle

Generally I write this blog in English, but exceptionally it it in French because the subject is directly linked with French Presidential election 2017.

Dans le débat du 20 mars 2017, Marine Le Pen a montré un graphique assez impressionnant montrant  (ou semblant montrer !) que "quelque chose s'est passé lors du passage à l'Euro, en 2000". Voici le graphique en question:

Il s'agit d'une superbe manipulation des données qui est basée sur la standardisation des données sur une année particulière. Vous aurez l'impression qu'il s'est passé quelque chose de particulier cette année. Voyons comment le faire sous R.
D'abord il faut récupérer les données de production industrielle auprès de l'OCDE:
https://data.oecd.org/fr/industry/production-industrielle.htm

Choisissez la période 1974-2016.

Le fichier téléchargé en .csv s'appelle pour moi : DP_LIVE_21032017190715494.csv

Voici le script pour le lire:
> prodIndus <- read.csv(file="DP_LIVE_21032017190715494.csv")
> colnames(prodIndus)
[1] "LOCATION"   "INDICATOR"  "SUBJECT"    "MEASURE"    "FREQUENCY"  "TIME"       "Value"     
[8] "Flag.Codes"
> levels(prodIndus$LOCATION)
 [1] "AUS"  "AUT"  "BEL"  "BRA"  "CAN"  "CHE"  "CHL"  "COL"  "CZE"  "DEU"  "DNK"  "EA19" "ESP"  "EST" 
[15] "FIN"  "FRA"  "GBR"  "GRC"  "HUN"  "IDN"  "IND"  "IRL"  "ISL"  "ISR"  "ITA"  "JPN"  "KOR"  "LUX" 
[29] "LVA"  "MEX"  "NLD"  "NOR"  "NZL"  "POL"  "PRT"  "RUS"  "SVK"  "SVN"  "SWE"  "TUR"  "USA"  "ZAF" 

Maintenant il faut générer le data.frame avec seulement les 4 pays concernés:

dataFRA <- subset(x = prodIndus, subset = LOCATION=="FRA", select = c("TIME", "Value"))
dataITA <- subset(x = prodIndus, subset = LOCATION=="ITA", select = c("TIME", "Value"))
dataESP <- subset(x = prodIndus, subset = LOCATION=="ESP", select = c("TIME", "Value"))
dataDEU <- subset(x = prodIndus, subset = LOCATION=="DEU", select = c("TIME", "Value"))

common1 <- merge(dataDEU, dataITA, by="TIME")
common2 <- merge(dataESP, dataFRA, by="TIME")
common <- merge(common1, common2, by="TIME")

colnames(common) <- c("TIME", "DEU", "ITA", "ESP", "FRA")

Ensuite on crée une fonction qui permet de faire le graphique en standardisant les données sur une année particulière, transmise par le paramètre ref:

plotproddist <- function(ref=NULL) {
  if (!is.null(ref)) for (i in c("DEU", "ITA", "ESP", "FRA"))
    common[, i] <- (common[, i]/common[common[, "TIME"]==ref, i])*100
  plot(common[, "TIME"], common[, "DEU"], type="l", bty="n", las=1, ylim=c(min(common[, 2:5]), max(common[, 2:5])), 
       xlab="Years", ylab="Industrial productivity")
  lines(common[, "TIME"], common[, "ITA"], col="red")
  lines(common[, "TIME"], common[, "ESP"], col="blue")
  lines(common[, "TIME"], common[, "FRA"], col="green")
  if (!is.null(ref)) points(ref, 100, pch=19, cex=2)
  legend("topleft", legend=c("DEU", "ITA", "ESP", "FRA"), col=c("black", "red", "blue", "green"), lty=1)
}

Et on y va, d'abord avec 2000 pour reproduire le graphique présenté par MLP:

plotproddist(2000)

On a l'impression qu'il se passe quelque chose en 2000... non ?

Maintenant prenons une autre année au hasard, 1990 par exemple:

plotproddist(1990)

Il se passe quelque chose en 1990 !

Cette représentation, bien qu'utile dans certains cas, est en réalité assez difficile à lire et peut masquer ou amplifier la tendance réelle. On tombe plus dans la psychologie que dans les statistiques !


Commentaires

Posts les plus consultés de ce blog

Standard error from Hessian Matrix... what can be done when problem occurs

stepAIC from package MASS with AICc

Install treemix in ubuntu 20.04