Consigne à partir de la base de données gapminder :

A rendre seul ou en binôme pour une date limite qui sera indiquée sur Moodle.

Proposez en 2 ou 3 pages, une analyse statistique avec quelques chiffres importants et les graphiques adaptés portant sur l’évolution des indicateurs (espérance de vie, produit intérieur brut) entre 2 ou 3 dates (1957, 2007 par exemple). Essayer de manipuler en univarié et en bivarié des variables numériques et des variables qualitatives.


Pour des raisons de clarté, tout le code utilisé n’est pas présenté ici. Pour voir l’entièreté du code, voir ce Github.


1 - Préparation du jeu de données

Nettoyage de l’environnement, appel des librairies utilisées et récupération du jeu de données.

rm(list=ls())
library(dplyr)
library(tidyverse)
library(gtsummary)
library(hrbrthemes)
library(viridis)
library(gapminder)
library(ggplot2)
library(ggpubr)
data = gapminder
data$pop = (data$pop)/1000 #population will be in thousands
str(data) #show features and data-type
## tibble [1,704 × 6] (S3: tbl_df/tbl/data.frame)
##  $ country  : Factor w/ 142 levels "Afghanistan",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ continent: Factor w/ 5 levels "Africa","Americas",..: 3 3 3 3 3 3 3 3 3 3 ...
##  $ year     : int [1:1704] 1952 1957 1962 1967 1972 1977 1982 1987 1992 1997 ...
##  $ lifeExp  : num [1:1704] 28.8 30.3 32 34 36.1 ...
##  $ pop      : num [1:1704] 8425 9241 10267 11538 13079 ...
##  $ gdpPercap: num [1:1704] 779 821 853 836 740 ...
any(is.na(data)) #check if there are NAs
## [1] FALSE


2 - Objectif


Notre objectif principal sera d’explorer nos paramètres de manière uni et multi-variée ainsi que via l’utilisation de graphiques. Dans notre cas, on décide de s’intéresser uniquement aux années suivantes : 1957 et 2002.

Nous créons également un autre dataset où chaque unité statistique sera un continent X à une date donnée. Pour ce dataset, les valeurs des variables numériques seront la moyenne des pays du continent concerné.


# keep only years we are interested in
data_1957 = subset(data, year==1957)
data_2002 = subset(data, year==2002)


#define a function that creates the continent datasets
continent = function(dataset, year){
  
  #in order to correct the sd() function
  nr = nrow(dataset)
  
  #create the new dataset
  data_set = dataset %>%
    group_by(continent, year) %>%
    mutate(lifexp_m = round(mean(lifeExp), 2),
           gdp_m = round(mean(gdpPercap), 2),
           pop_m = round(mean(pop), 2),
           lifexp_sd = round(sd(lifeExp)*(nr-1)/nr, 2))
  
  data_set = select(data_set, -c(lifeExp, gdpPercap, pop, country)) #remove useless features
  data_set = distinct(data_set) #remove all duplicates 
  
  return(data_set)
}

data_continent_1957 = continent(dataset = data_1957, year = 1957)
data_continent_2002 = continent(dataset = data_2002, year = 2002)


3 - Statistiques descriptives

On décide d’utiliser la fonction tbl_summary() du package gtsummary afin de calculer les premières statistiques descriptives de notre jeu de données (moyenne et écart-type) de façon univariée (colonne “Overall”) et bivariée (par rapport à chaque continent).

Cette fonction nous permet également de connaître le nombre de pays par continent.


Moyenne et écart-type de nos variables numériques pour l’année 1957

Characteristic Africa, N = 521 Americas, N = 251 Asia, N = 331 Europe, N = 301 Oceania, N = 21 Overall, N = 1421
lifeExp 41 (6) 56 (9) 49 (10) 67 (5) 70 (0) 52 (12)
pop 5,093 (7,076) 15,478 (35,537) 47,357 (128,096) 14,596 (17,832) 5,971 (5,291) 18,763 (65,504)
gdpPercap 1,385 (1,135) 4,616 (3,312) 5,788 (19,507) 6,963 (3,678) 11,599 (918) 4,299 (9,870)
1 Mean (SD)


Moyenne et écart-type de nos variables numériques pour l’année 2002

Characteristic Africa, N = 521 Americas, N = 251 Asia, N = 331 Europe, N = 301 Oceania, N = 21 Overall, N = 1421
lifeExp 53 (10) 72 (5) 69 (8) 77 (3) 80 (1) 66 (12)
pop 16,033 (22,303) 33,991 (65,602) 109,146 (276,702) 19,274 (23,224) 11,727 (11,058) 41,458 (140,848)
gdpPercap 2,599 (2,973) 9,288 (8,896) 10,174 (11,151) 21,712 (11,197) 26,939 (5,302) 9,918 (11,154)
1 Mean (SD)



Valeurs maximales de nos variables numériques

On décide maintenant de s’intéresser à quel pays correspond la valeur maximale du PIB/habitant, de l’espérance de vie et de la population.

#get the country with the max value for each numeric feature, in 1957
max_gdp_1957 = data_1957[which.max(data_1957$gdpPercap), ]
max_lifeExp_1957 = data_1957[which.max(data_1957$lifeExp), ]
max_pop_1957 = data_1957[which.max(data_1957$pop), ]

#get the country with the max value for each numeric feature, in 2002
max_gdp_2002 = data_2002[which.max(data_2002$gdpPercap), ]
max_lifeExp_2002 = data_2002[which.max(data_2002$lifeExp), ]
max_pop_2002 = data_2002[which.max(data_2002$pop), ]


On présente ci-dessous les résultats pour l’année 1957 :

## In 1957, the country with the highest gdp/percap was Kuwait with 113523.1
## In 1957, the country with the highest life expectancy was Iceland with 73.47 years old
## In 1957, the country with the highest population was China with 637408 (in thousands) people


On présente ci-dessous les résultats pour l’année 2002 :

## In 2002, the country with the highest gdp/percap was Norway with 44683.98
## In 2002, the country with the highest life expectancy was Japan with 82 years old
## In 2002, the country with the highest population was China with 1280400 (in thousands) people


4 - Quelques graphiques intéressants


IMPORTANT

Tous les prochains graphiques seront présentés de telle sorte : les graphiques de gauche représentent l’année 1957 et les graphiques de droite l’année 2002.

Tous les graphiques ont été mis sur la même échelle afin de faciliter la comparaison.


Boxplot de l’espérance de vie par continent

La chose que ces graphiques nous permettent de constater est le fait que l’espérance de vie a eu tendance à augmenter entre 1957 et 2002. Egalement, on semble observer une diminution relative de la dispersion des pays pour l’Amérique et l’Asie.

Limite : ce type de graphique est relativement peu pertinent pour les continents à faible nombre de pays comme l’Océanie, même s’il met tout de même en lumière leur évolution.


Boxplot du PIB/habitant par continent

Etant donné l’existence de fortes disparités dans le PIB/habitant entre les différents continents, il serai peu pertinent de créer un graphique sur une même échelle. Pour le prochain graphique, nous décidons alors de transformer notre variable PIB/habitant en z-score, de la manière suivante :

\(z_{j,i} = \frac{x_j - \overline{x_i}}{\sigma_i} =\) le score du PIB/habitant du pays j au sein du continent i

\(x_j =\) PIB/habitant du pays j

\(\overline{x_i} =\) moyenne du nombre de PIB/habitant au sein du continent i

\(\sigma_i =\) écart-type du nombre de PIB/habitant au sein du continent i


L’intérêt de transformer ainsi nos données est que chaque pays est alors comparé en terme de distance, mesurée en nombre d’écart-type, par rapport à la moyenne de son continent. Ainsi, cela permet d’avoir un graphique sur une échelle davantage pertinente.

Limite : il n’est plus vraiment possible de comparer les continents entre eux. L’intérêt de ce type de graphique est alors de s’intéresser à la dispersion de la variable étudiée au sein de chaque continent.

La chose que ces graphiques nous permettent de constater est le fait que l’Asie a vu sa dispersion fortement augmenter, notamment avec le développement de pays avec un fort relatif PIB/habitant. On peut décider d’investiguer davantage ce phénomène en plotant la distribution du PIB/habitant de l’Asie en 1957 et 2002.

On retrouve bien ici le fait que l’Asie a vu sa distribution du PIB/habitant fortement évoluer entre 1957 et 2002.

Nous pouvons également essayer de retrouver le pays outlier en terme de PIB/habitant en 1957 en Asie, situé à plus de 5 écart-types de la moyenne des pays d’Asie.

asia_1957[which.max(asia_1957$gdpPercap), ]


Relation entre l’espèrance de vie et le PIB par habitant

Ces graphiques nous montrent la relation entre le PIB/habitant et l’espérance de vie en 1957 (à gauche) et en 2002 (à droite).
Attention : la variable PIB/habitant est passée en logarithme.


Afin de visualiser plus simplement les informations du graphique ci-dessus, on peut s’intéresser à la représentation du même graphique pour la moyenne de chaque continent. On observe alors une tendance qui fait que plus le PIB/habitant est élevé, plus l’espérance de vie est élevée.

Cela permet également de mettre en évidence l’évolution moyenne à la fois du PIB/habitant et de l’espérance de vie de chaque continent. On décide d’également de représenter l’écart-type estimé pour chaque continent afin de donner une idée de la dispersion au sein de chaque continent.

Important : le PIB/habitant n’est plus en logarithme.



5 - Quelque outil de mesure de relation statistique

On peut s’intéresser au coefficient de corrélation de ces deux paramètres afin d’investiguer davantage leur relation. Dans la mesure où la relation ne semble pas linéaire, on décide d’utiliser le coefficient de corrélation de spearman.


Corrélation en 1957

La corrélation est ici très forte (r>0.78) et largement significative (p<0.001).

cor.test(data_1957$lifeExp, data_1957$gdpPercap, method = "spearman")
## 
##  Spearman's rank correlation rho
## 
## data:  data_1957$lifeExp and data_1957$gdpPercap
## S = 103970, p-value < 2.2e-16
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.7821208


Corrélation en 2002

La corrélation pour l’année 2002 est également très forte (r>0.86) et toujours largement significative (p<0.001).

cor.test(data_2002$lifeExp, data_2002$gdpPercap, method = "spearman")
## 
##  Spearman's rank correlation rho
## 
## data:  data_2002$lifeExp and data_2002$gdpPercap
## S = 64290, p-value < 2.2e-16
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.8652741