Vous êtes sur la page 1sur 6

TP Modèle linéaire multiple

R et python
R et python s’imposent aujourd’hui comme les langages de référence pour la data science.
Dans cet article, je vais vous exposer la méthodologie pour appliquer un modèle de
régression linéaire multiple avec R et python. Il ne s’agit pas ici de développer le modèle
linéaire mais d’illustrer son application avec R et python.

Pour utiliser R, il faut tout d’abord l’installer, Pour utiliser python, il faut l’installer et
vous trouverez toutes les informations faire un certain nombre de choix. Le
pour l’installation sur le site du projet R : premier étant la version. Dans le cadre de
https://www.r-project.org/ cet exemple, j’utiliserai python 2.7
Je vous conseille d’utiliser RStudio pour (l’ensemble des bibliothèques et outils
coder en R, ceci vous simplifiera largement peuvent être utilisés aussi avec python
la vie. Dans cet article, je ne présenterai 3.5). Pour une application en data
que le code nécessaire donc vous pouvez science, il est souvent plus efficace de
reproduire le code dans R ou dans télécharger Anaconda qui en plus de
RStudio. python propose des interfaces améliorées
https://www.rstudio.com/ et toutes les bibliothèques nécessaires en
data science. Voici leur site :
https://www.continuum.io/downloads

Préalable
La régression linéaire
La régression linéaire multiple est une méthode ancienne de statistique mais qui trouve
encore de nombreuses applications aujourd’hui. Que ce soit pour la compréhension des
relations entre des variables ou pour la prédiction, cette méthode est en général une
étape quasi obligatoire dans toute méthodologie data science.

Le principe de la régression linéaire : il consiste à étudier les liens entre une variable
dépendante et des variables indépendantes. La régression permet de juger de la qualité
d’explication de la variable dépendante par les variables indépendantes.

Le modèle statistique sous-jacent est très simple, il s’agit d’une modèle linéaire qui est
généralement écrit :
y=constante + beta1 x1 + beta2 x2 + … + erreur

L’estimation des paramètres de ce modèle se fait par l’estimateur des moindres carrés et
la qualité d’explication est généralement évalué par le R².

La qualité de prédiction est généralement mesurée avec le RMSE (racine de la somme


des carrés des erreurs).
Les données et le modèle
Dans le cadre de cet exemple, on va utiliser des données simples reliant un nombre de
ventes et l’investissement dans différents médias. Le modèle de régression multiple a une
variable dépendante y mesurant le nombre de ventes et 3 variables indépendantes
mesurant les investissements en terme de publicité par média.

Le chargement des données et des


bibliothèques
S’agissant de données au format csv, il est simple de les importer dans R.

Nous utilisont la fonction read_csv2 de R.

Voici le code pour importer les données :

ventes = read.csv("Advertising.csv")     

summary(ventes) 

Python n’a pas nativement de fonction pour importer des données au format csv. Nous
allons donc utiliser la bibliothèque pandas afin d’importer les données. Cette bibliothèque
est comprise dans Anaconda. Nous utiliserons aussi numpy et matplotlib pour les
visualisations.

Voici donc le code pour importer les données :

import numpy as np 

import pandas as pd 

import matplotlib.pyplot as plt 

#importer les données Advertising.csv 

donnees = pd.read_csv('Advertising.csv', index_col=0) 

donnees.head() 
L’application du modèle de régression
linéaire
Nous créons un objet reg_ventes issu du modèle linéaire lm() (la régression linéaire est
un cas particulier du modèle linéaire général).

Ce type de modèle est déclaré en utilisant le nom des variables dans les données.
On aura comme modèle : y ~ x1 + x2 +…
Le modèle peut bien sûr être plus évolué (interaction, transformations). Le code est donc
très simple.

reg_ventes=lm(Sales~ TV+Radio+Newspaper,data=ventes) 

Pour Python, Nous créons maintenant un objet modeleReg qui est le conteneur de notre
modèle de régression multiple.

Une fois l’objet créé en utilisant la bibliothèque scikit-learn, nous ajustons le modèle (fit)
en utilisant nos données. J’ai donc pris comme variable dépendante y, la variable Sales
et comme variables indépendantes toutes les autres variables.

from sklearn.linear_model import LinearRegression 

#créer un objet reg lin 

modeleReg=LinearRegression() 

#créer y et X 

list_var=donnees.columns.drop("Sales") 

y=donnees.Sales 

X=donnees[list_var] 

modeleReg.fit(X,y) 
L’affichage des résultats sur R
Une fois le modèle de régression linéaire ajusté, R propose des sorties proches de celles
de nombreux logiciels de statistique.
Summary() affiche les coefficients les significativité et le R². Le RMSE doit par contre
être recalculé « manuellement ».
La fonction plot() affiche 4 graphiques aidant à la validation des hypothèses.

#affichage des résultats dont le R² 

summary(reg_ventes) 

#calcul du RMSE 

predictions = predict(reg_ventes, sales) 

rmse = mean((sales$sales ‐ predictions)^2) 

print(rmse) 

#affichage des graphiques 

plot(reg_ventes) 

 
 
L’affichage des résultats sur Python

Une fois le modèle ajusté, nous affichons, la constante, les coefficients, le R² et le RMSE.

Nous obtenons deux graphiques (qu’il faudrait mieux préparer) représentant : les valeurs
de y en fonction des valeurs prédites avec le modèle de régression linéaire et les valeurs
de Y en fonction des résidus.

De nombreuses autres analyses sont possibles, mais on a ainsi déjà quelques


informations sur notre modèle.

print (modeleReg.intercept_) 

print (modeleReg.coef_) 

#calcul du R² 

modeleReg.score(X,y) 

RMSE=np.sqrt(((y‐modeleReg.predict(X))**2).sum()/len(y)) 

plt.plot(y, modeleReg.predict(X),'.') 

plt.show() 

plt.plot(y, y‐modeleReg.predict(X),'.') 

plt.show() 

 
 
 
Cette analyse est uniquement illustrative pour vous montrer à quel point ces deux
langages sont simples pour ce type de traitement. Ce qui ressort aussi c’est un aspect
plus orienté statistique pour R et un aspect plus orienté programmation pour python (du
moins en terme de sorties).

Aujourd’hui, la question n’est plus de choisir entre R ou python, ces deux langages ont
leurs avantages et leurs défauts. Votre choix doit se faire en fonction des projets que vous
rencontrerez dans votre vie de data geek (on peut remplacer geek par scientist, analyst,
miner, ….).

Vous aimerez peut-être aussi