Ecg2 TP3
Ecg2 TP3
Ecg2 TP3
2022-2023
T.P. n◦2
Statistiques.
Régression linéaire.
Manipulation de fichiers .csv
Bibliothèques et librairies utilisées : numpy , numpy.random ,
matplotlib.pyplot et pandas .
1 Pré-requis
Dans tout le T.P, on utilise la bibliothèque pandas qui permet la lecture de fichiers .csv (Comma
Separated Values) et la création/manipulation de tables. Si certaines commandes et instructions seront
rappelées ci-après, on renvoie au cours de première année pour tout le détail. On importe une fois pour
toutes
import pandas as pd
On va utiliser comme document de travail, tout au long de ce TP, le fichier tp2_data.csv, qui regroupe
tout un tas de données publiques récupérées sur le site World Bank Data. En particulier, pour la période
(1960-2020) et dans le Monde entier
• le taux de fertilité des jeunes femmes (nombre d’enfants pour 1000 jeunes femmes entre 15 et 19
ans),
• le pourcentage (du groupe concerné) de jeunes femmes étant scolarisé dans l’enseignement sec-
ondaire,
• l’espérance de vie,
• le pourcentage de population ayant accès à l’électricité,
• les émissions de CO2 (en kT),
• la consommation électrique moyenne per capita (en KWh par habitant),
• la surface de forêt (en km2 ).
On commence donc par importer le fichier susmentionné dans Python avec la commande
donnees = pd . read_csv ( ’ http :// frederic . gaunard . com / 2 2 2 3 / tp 2 _data . csv ’ ,
sep = ’; ’)
+ Ici, on rajoute l’argument sep=’;’ car les données du fichier sont séparées avec un point virgule.
À retenir!
+ La variable donnees est alors une table de données (ou DataFrame). On rappelle
que
• donnees.head permet de n’afficher que les 5 premiers rangs du tableau;
• donnees.shape renvoie une couple (n, p) où n est le nombre de lignes et p
le nombre de colonnes du tableau;
• donnees.columns permet d’afficher l’ensemble des colonnes du tableau.
2 Statistiques.Regression. Panda
+ Une colonne intitulée index est ajoutée par la bibliothèque pandas à la table de données lors de sa
lecture afin de donner un numéro à chaque ligne de la table de données (la numérotation commençant
comme toujours avec Python à 0).
+ Notre jeu de données manipulé ici est (relativement) grand. Il contient 8 colonnes et 61 lignes...
On va dans un premier temps ne considérer qu’une sous-table.
table 1 = donnees [ [ ’ Année ’ , ’ taux fertilité j . femmes ’ ,
’ femmes scol . sec . ’] ]
table 1 = table 1 . rename ( columns ={ ’ taux fertilité j . femmes ’: ’ TF ’ ,
’ femmes scol . sec . ’: ’ FSS ’} )
2 Statistiques descriptives
2.1 Rappels : statistiques univariées
Pour décrire un jeu de données x = [x1 , x2 , ..., xn ], on introduit quelques mesures:
• La moyenne (empirique) (Mean Value en anglais), souvent notée xn définie par
n
1X
xn = xi
n i=1
À retenir!
Si la commande mean de bibliothèque numpy permet d’obtenir la moyenne des valeurs
d’une liste, il faut ici faire attention; on travaille avec DataFrame et il faut donc utiliser la
commande table1.mean() qui renvoie la liste des moyennes pour chaque colonne numérique
ou plus précisément table1[’nom_de_la_colonne’].mean() pour obtenir la moyenne des
valeurs d’une colonne précise.
• La variance empirique
n
1X
σ̂n2 (x) = (xi − xn )2
n i=1
Il s’agit de la moyenne des carrées des écarts à la moyenne. Cette valeur n’est pas facile à inter-
préter car son unité de mesure n’est pas la même que celle des données. C’est pourquoi, pour
l’interprétation (et notamment en statistiques descriptives), on lui préfère la mesure suivante.
À retenir!
Avec les DataFrames, on utilise la commande table1.std() ou
table1[’nom_de_la_colonne’].std() sur le même modèle que précédemment.
• La médiane de la série statistique. Il s’agit de la valeur m telle que 50% des données sont
inférieures à m et 50% supérieures à m. Intuitivement, la médiane est le point milieu des
observations (à ne pas confondre avec le point moyen).
TP 2. 3
À retenir!
Avec les DataFrames, on utilise la commande table1.median() ou
table1[’nom_de_la_colonne’].median() sur le même modèle que précédemment.
• On s’intéresse aussi parfois à d’autres quantiles. On note qα le quantile d’ordre α qui désigne
le réel tel qu’une proportion α des observations est inférieure à qα et une proportion 1 − α est
supérieure à qα . La médiane est le quantile d’ordre 1/2.
• Le minimum ou le maximum de la série statistique qui correspond à la plus petite (ou la plus
grande valeur) des observations.
À retenir!
Avec les DataFrames, on utilise les commande table1.min() ou table1.max() sur le même
modèle que précédemment.
Plus généralement, on considère deux séries statistiques x = [x1 , ..., xn ] et y = [y1 , .., yn ] que l’on
observe simultanément. On étudie alors les couples [(x1 , y1 ), ..., (xn , yn )] que l’on appelle observations
dans le cas de statistiques bivariées.
Définition
On appelle nuage de points associé à la série statistique (x, y) l’ensemble des points Mk de
coordonnées (xk , yk ) (pour 1 ≤ k ≤ n) tracés dans un repère orthonormé du plan (où X = (xk ) et
Y = (yk )).
Le point moyen du nuage est le point de coordonnées (xn , y n ), où xn désigne la moyenne empirique
des xk et y n celle des yk .
+ On reprend notre jeu de données sur la fertilité adolescente. Recopier et exécuter les instructions
suivantes. Commenter.
import matplotlib . pyplot as plt
plt . grid ( )
plt . plot (X ,Y , ’k + ’)
plt . show ( )
4 Statistiques.Regression. Panda
Quelles commandes peut-on ajouter pour faire apparaître le point moyen du nuage?
Définition
La covariance empirique d’une série statistique (x, y) est définie par
n
1X
cov(x, y) = (xi − xn )(yi − y n ).
n i=1
Le coefficient de corrélation linéaire empirique est défini par
cov(x, y)
ρx,y =
σ̂n (x)σ̂n (y)
3 Régression
3.1 Droite de régression linéaire. Méthode des moindres carrées
On se place dans la situation où l’on souhaite savoir on peut trouver une "formule" permettant de
donner une approximation de Y en fonction de X. Cette formule pouvant notamment servir à faire de
la prévision.
On rappelle alors le résultat suivant.
Résultat du cours de 2A
Soit ρ le coefficient de corrélation linéaire du couple (X, Y ). Alors
(i) ρ ∈ [−1; 1];
(ii) ρ = ±1 si et seulement si la régression Y = aX + b est exacte.
+ Il parait alors assez naturel de penser que si ρ est "assez proche" de 1 (en valeur absolue),
l’approximation affine pourrait être pertinente.
À retenir!
Si |ρ| est proche de 1 et qu’on a visualisé une relation linéaire entre les
données, on peut confirmer qu’il y a bien corrélation linéaire entre X et Y .
+ En sciences humaines et en sciences économiques, une valeur de |ρ| de l’ordre de 0, 85 est souvent
considérée comme bonne.
Y = aX + b + ε.
On utilise alors la méthode des moindres carrés qui nous donne l’équation de la droite la plus proche
des points en terme de distance, c’est à dire l’unique droite D d’équation y = ax + b qui rend minimale
la somme des carrés des erreurs d’ajustement
n
1X
2
d (a, b) = (yi − (axi + b))2 .
n i=1
Le résultat suivant donne la valeur de a et b et est admis. On en proposera une démonstration dans
un devoir maison d’approfondissement.
TP 2. 5
À retenir!
Droite de régression. La droite la plus proche du nuage de points associé au couple (x, y) est la
droite d’équation y = ax + b avec
cov(x, y)
a= , et b = y n − a × xn .
σ̂n2 (x)
En particulier, cette droite passe par le point moyen (xn , y n ).
Affichage Python
Exercice 1. Étudier la pertinence d’une régression linéaire pour expliquer l’espérance de vie en fonction
de l’accès à l’électricité (pour les années où les données sont fournies).
3.2 Régression linéaire avec transformations
Dans certains cas (qui seront pour nous complètement guidés par l’énoncé du sujet), on peut appliquer
le principe de régression linéaire à un couple obtenu par transformées de Y (ou aussi de X) et obtenir
une relation de la forme
Y = aϕ(X) + b + ε, ou ϕ(Y ) = aϕ(X) + b + ε.
+ Considérons un exemple avec des données correspondant à l’évolution du PIB par habitant (en USD)
et du pourcentage de la population en zone urbaine de la Norvège, de 1960 à 2020 (source: World Bank
Data).
plt . grid ( )
6 Statistiques.Regression. Panda
plt . plot (X ,Y , ’. ’) # nuage de points
plt . show ( )
(2) Représenter le nuage de points (ln(X), Y ).
(3) Calculer le coefficient de corrélation linéaire de Y en ln(X).
(4) Déterminer l’équation de la droite de régression de Y en ln(X).
(5) En déduire qu’on peut supposer que la dépendance entre Y et X est de la forme
Y = a ln(X) + b
(6) Représenter le nuage de points précédent sur lequel on fera apparaître la courbe d’équation
y = a ln(t) + b.
Affichage Python