La régression linéaire simple avec le logiciel R

régression linéaire avec R

 

Dans cet article, tourné une nouvelle fois sur la pratique, je vous propose 10 étapes pour mener à bien une régression linéaire simple avec le logiciel R.

Pour rappel, la régression linéaire simple est une méthode statistique classique, qui est employée pour évaluer la significativité du lien linéaire entre deux variables numériques continues. Autrement dit, on utilise la régression linéaire simple lorsqu’on souhaite évaluer si deux variables numériques continues sont liées de façon significative, en faisant l’hypothèse que leur relation est de type linéaire.

Les aspects théoriques de cette méthode ont déjà été abordé dans un précédent article. Pour des compléments d’informations, je vous recommande le chapitre “Regression” du Rbook , ainsi que le chapire La régression linéaire: lien entre deux variables du livre “contes et stat R” de Lise Vaudor.

 

Table des matières

  1. L’importation des données
  2. Passage du jeu de données en format tibble
  3. Evaluation visuelle de la linéarité
  4. Réalisation de la régression linéaire simple
  5. Evaluation des hypothèses
  6. Visualisation des résultats
  7. Les données influentes
  8. Prédictions
  9. Manipulation des composants de la régression
  10. Représentation finale de la régression
  11. Pour aller plus loin

 

1. L’importation des données

J’ ai l’habitude d’organiser mon travail sous la forme d’un projet R. Si vous ne savais pas ce qu’est un projet R, vous pouvez consulter cet article.

Dans le working directory de ce projet R, je crée un dossier “data” dans lequel je place le jeu de données à analyser, au format csv.

Si vous ne savez pas comment organiser vos données dans un tableur, vous pouvez consulter cet article pour obtenir 12 conseils pour le faire efficacement.

Ici, à titre d’exemple, j’ai créé un projet R, nommé “36_RLS”. Dans le dossier “data”, j’ai placé le jeu de données que nous allons utilisé dans cet article. Il s’agit du jeu de données Prestige du package “car”.

régression linéaire avec r

 

Pour importer un jeu de données au format csv, placé dans le dossier “data”, j’utilise le package “here”, et sa fonction du même nom. Cette fonction permet d’écrire le chemin d’accès du jeu de données, de façon automatique.

 

2. Passage du jeu de données en format tibble

Ce format “tibble” permet d’accéder à un affichage des données plus pratique que celui du data.frame, puisque le type (entier, double, facteur, chaîne de caractères, etc…) des variables est directement affiché.

 

3.Evaluation visuelle de la linéarité

La régression linéaire simple permet d’évaluer la significativité du lien linéaire entre deux variables. La forme linéaire entre le deux variables est donc pré-supposée. Autrement dit, on fait l’hypothèse que la forme de la relation entre les variables est linéaire. Néanmoins, il est préférable de vérifier si cette hypothèse est acceptable, ou non, car si ce n’est pas le cas, les résultats de l’analyse n’auront pas de sens.

Ici, nous allons tester la relation entre la variable prestige (il s’agit d’un score de prestige relatif à la profession) et la variable éducation (qui reflète le niveau d’étude).

Pour évaluer de façon visuelle, la linéarité entre deux variables, on peut utiliser  la fonction “scatterplot”  du package “car”.

regression lineaire simple avec R

 

La ligne en trait plein est la droite de régression linéaire (définie par la méthode des moindres carrés) entre les deux variables. La ligne centrale en pointillé est la courbe de régression locale de type lowess.
Elle indique la tendance globale entre les deux variables. Les deux lignes extérieures représentent un intervalle de confiance de la courbe lowess.

Remarque : Une visualisation très pédagogique de la méthode est disponible sur ce post du blog de Lise Vaudor.

Ici, la droite de régression est comprise dans l’intervalle de confiance de la courbe lowess, l’hypothèse de linéarité est donc acceptable.

En revanche, si on étudie la forme du lien entre la variable prestige et la variable income, on s’aperçoit que la droite de régression n’est pas comprise dans l’intervalle de confiance de la courbe lowess ; l’hypothèse de linéarité est alors plus critiquable.

 

4. Réalisation de la régression linéaire simple

Pour déterminer la droite de régression, on ajuste un modèle linéaire simple aux données, à l’aide de la fonction “lm”, comme ceci :

 

5. Evaluation des hypothèses de validité des résultats

Le test d’évaluation de la significativité du lien linéaire entre les deux variables est valide, si les résidus :

  • sont indépendants
  • sont distribués selon une loi Normale de moyenne 0
  • sont distribués de façon homogènes, c’est à dire, avec une variance
    constante.

5.1 Evaluation de l’hypothèse d’indépendance des résidus

En général, l’hypothèse d’indépendance des résidus est validée ou rejetée en fonction du protocole expérimental. Un exemple fréquent de non indépendance se rencontre lorsque la variable prédictive (en X) est une variable indiquant le temps, comme des années ou des mois, par exemple. Dans ce cas, on observe une auto-corrélation des résidus.

On parle d’auto-corrélation des résidus lorsque, par exemple, le résidu d’un point quelconque est liée à celui du point suivant dans le tableau de données. La présence d’une auto-corrélation peut être mise en évidence par un **lag plot**.

independance des residus

Les pointillées horizontaux, sont les intervalles de confiance du coefficient de corrélation égal à 0. Les traits verticaux représentent les coefficients de corrélation entre les résidus de chaque point et ceux des points de la ligne suivante (lag=1), ou ceux séparés de deux lignes (lag=2) etc…

Ici, le plot nous montre qu’une auto-corrélation significative est présente pour les lags 1,2,3,5,7,10 et 12.

Le test de Durbin-Watson peut être employé pour évaluer la présence d’une auto-corrélation pour un lag de valeur 1. L’hypothèse d’indépendance des résidus est rejetée lorsque la p-value du test est inférieure à 0.05.

Ici, le test nous indique qu’il existe une auto-corrélation significative entre les résidus d’une ligne du tableau de données et ceux de la ligne suivante. Cela peut sembler surprenant, mais comme nous le verrons plus loin sur le “residuals vs. fitted plot”, certains résidus semblent aller deux par deux.

5.2 Evaluation de l’hypothèse de normalité des résidus

Cette hypothèse peut s’évaluer graphiquement à l’aide d’un QQplot. Si les résidus sont bien distribués le long de la droite figurant sur le plot, alors l’hypothèse de normalité est acceptée. A l’inverse, s’ils s’en écartent, alors l’hypothèse de normalité est rejetée.

régression linéaire simple

Ici, les points sont plutôt bien alignés sur la droite.

Le test de Shapiro-Wilk peut également être employé pour évaluer la normalité des résidus. L’hypothèse de normalité est rejetée si la p-value est inférieure à 0.05.

 

Ici, la normalité est acceptée.

En revanche, si on réalisait une régression linéaire simple entre la variable prestige et la variable income, alors l’hypothèse de normalité serait plus discutable.

 

régression linéaire simple avec le logiciel R

Alors que le QQplot est à mon sens globalement satisfaisant, le test de Shapiro-Wilk rejette l’hypothèse de normalité :

 

5.3 Evaluation de l’hypothèse d’homogénéité des résidus

Là encore, cette hypothèse peut se vérifier de façon visuelle, pour cela il faut réaliser un “residuals vs fitted plot”. Les “fitted” correspondent aux réponses prédites par le modèle, pour les valeurs observées de la variable prédicitive. Si on s’intéresse à la régression linéaire simple entre la variable prestige et la variable éducation, les “fitted” correspondent aux valeurs de prestige prédites par le modèle pour les valeurs d’éducation présentes dans les données.

Plus précisément, on utilise pour ce plot la racine carrée des résidus standardisés. Mais pas de panique, R fait cela tout seul 😉

régression linéaire avec le logiciel R

Ici, la courbe rouge, qui est aussi une courbe de régression locale, est globalement plate. Ceci montre que les résidus ont tendance à être répartis de façon homogène tout le long du gradient des valeurs de prestige prédites. Et donc que l’hypothèse d’homogénéité des résidus est acceptée.

Comme dit précédemment, il apparaît sur ce plot, que certains résidus semblent aller deux par deux, confirmant ainsi le défaut d’indépendance :

regression lineaire avec R

Quand on regarde les libellés des professions on s’aperçoit qu’effectivement certaines sont très proches comme “civil.engineers ” et “mining.engineers  “, ou encore “primary.school.teachers  ” et “secondary.school.teachers”..

Pour revenir à l’évaluation de l’hypothèse d’homogénéité, si la courbe rouge est globalement ascendante ou descendante, alors cela signifie que la dispersion des résidus n’est pas homogène. Et dans ce cas, l’hypothèse est rejetée. En voici un exemple.

régression linéaire

Il est également possible d’évaluer cette hypothèse en employant le test de Breush-Pagan. L’hypothèse d’homogénéité est rejetée si la p-value est inférieure à 0.05.

Ici, le test ne rejette pas non plus l’hypothèse d’homogénéité.

Pour information, la p-value du test de Breush-Pagan réalisées sur les données du plot précédent (celui montrant une hétéorgénéité des résidus) est de 0.0012.

 

5.4 Evaluation à posteriori de l’hypothèse de linéarité

Cette hypothèse peut s’évaluer sur les résidus à l’aide du plot suivant :

 

régression linéaire avec R

Ici, le plot nous montre que lorsque les réponses prédites par le modèle (fitted values) augmentent, les résidus restent globalement uniformément distribués de part et d’autre de 0. Cela montre, qu’en moyenne, la droite de régression, est bien adaptée aux données, et donc que l’hypothèse de linéarité est acceptable.

Dans le cas contraire, les résidus pourraient avoir tendance à être successivement tous positifs, puis tous négatifs, puis à nouveau tous positifs, comme ci dessous :

régression linéaire avec R

Lorsqu’on regarde la droite de régression correspondant à ces résidus, on voit bien que la linéarité n’est pas satisfaite:

régression linéaire

 

6.Visualisation des résultats

 6.1 Paramètres et tests

Si les hypothèses de linéarité, de normalité, d’homogénéité et d’indépendance des résidus sont satisfaites, alors les résultats de la régression sont valides, et on peut donc les interpréter.

Ici, en réalité, ce n’est pas le cas du modèle de régression entre le niveau de prestige et le niveau d’éducation, car nous avons vu que les résidus étaient auto-corrélés. Les lignes de code suivantes servent donc seulement à l’illustration.

La fonction “summary” permet d’accéder facilement aux résultats de la régression.

 

La partie Residuals des résultats permet d’évaluer rapidement la normalité des résidus. Lorsque les résidus sont distribués selon une loi Normale, la médiane doit être autour de 0 (c’est le cas ici), et les valeurs absolues de Q1 (premier quartile) et Q3 (troisième quartile) doivent être proches. C’est le cas, et cela était attendu puisque l’hypothèse de normalité était validée.

La première ligne de la partie coefficients concerne l’ordonnée à l’origine, alors que la seconde ligne concerne la pente. Concernant les colonnes :

  • la première colonne rapporte l’estimation des coefficients des
    paramètres,
  • la seconde colonne l’estimation de leur erreur standard,
  • la troisième colonne est la statistique T
  • la dernière colonne rapporte la p-value du test évaluant l’égalité à
    0 des coefficients. Si la p-value est inférieure au seuil de
    significativité généralement utilisé de 0.05, alors on concluera que
    le paramètre est significativement différent de 0.

Le rejet d’une ou plusieurs des hypothèses n’impacte pas l’estimation des paramètres, mais seulement l’estimation de leur erreur standard, et par conséquence la statistique et la p-value des tests T employés pour tester l’égalité à 0 de ces paramètres.

En général, seul le coefficient de la pente a vraiment un intérêt. Ici, il est égal à 5.361. Cela signifie que lorsque le niveau d’éducation augmente d’une unité, alors, le niveau du score de prestige augmente de 5.361 unités.

Le test de l’égalité à 0 de l’ordonnée à l’origine n’a, lui non plus, généralement pas d’intérêt. En revanche, celui de la pente est important. En effet, ce n’est pas parce que le coefficient de la pente est fort qu’il est significativement différent de 0. La significativité de la pente dépend de la dispersion des points autour de la droite de régression. C’est donc le niveau de la p-value qui va permettre de trancher. Une p-value inférieure à 0.05, permet de conclure à un lien linéaire significatif entre la variable réponse et la variable prédictive. Le sens de la relation est donné par le signe du coefficient : s’il est positif, la relation linéaire est croissante, s’il est négatif, alors la relation linéaire est décroissante.

6.2 Intervalles de confiance des coefficients des paramètres

La fonction “confint” permet d’obtenir facilement ces intervalles de confiance. Ils sont basés sur une loi de Student, qui requière que l’hypothèse de normalité des résidus soit acceptée. Si ce n’est pas le cas, ces intervalles sont biaisés.

Pour rappel, l’intervalle de confiance à 95% de la pente est une étendue de valeurs qui a une probabilité de 95% de contenir la vraie pente (celle de la population).

 

7. Les données influentes

Avant de conclure définitivement sur la significativité ou pas de la relation linéaire entre la variable réponse et la variable prédictive, il peut être intéressant de rechercher s’il existe des données influentes, et quel est leur impact sur les résultats.

Le package “car” dispose d’une fonction très utile pour détecter ces données différentes, il s’agit de la fonction “influenceIndexPlot”.
Cette fonction renvoie 4 graphs :

  • le premier (en partant du bas), celui des hat value, reflète l’effet de levier (ou poids) de chaque donnée sur sa propre estimation. Une donnée est considérée comme atypique lorsque cette valeur est inférieure à 0.05.
  • le second plot celui des p-value de Bonferroni permet de mettre en évidence les outliers. Est considérée comme outlier une donnée ayant une p-value inférieure à 0.05.
  • le troisième plot, celui des résidus studentizés permet également de mettre en évidence les outliers
  • le dernier plot, celui des distance de Cook permet d’évaluer l’influence des données sur les paramètres de régression. La distance de Cook mesure le changement dans l’estimation des paramètres de régression lorsque la donnée n’est pas prise en compte par les moindres carrés. Plus la distance est élevée, plus la modification des paramètres de régression est importante. Le seuil de 1 est couramment utilisé pour considérer qu’une donnée est très influente. Vous trouverez plus de détail sur l’effet de levier et les distances de Cook là.

 

 

La donnée 53 est mise en évidence par 3 des 4 plots. Les deuxième et troisième graph (en partant du bas) la désigne comme potentiel outlier. De son côté, le plot des distances de Cook montre que son influence est parmi les deux plus fortes. Néanmoins, elle est inférieure à 1, ce qui nous amène à penser que son influence sur les paramètres du modèle n’est pas vraiment problématique. La pvalue de Bonferroni (plot 2) peut être obtenue avec la fonction outlierTest

 

La p-value ajustée par la méthode de Bonferonni est très éloignée du seuil de 0.05. La donnée 53 ne peut donc pas être considérée comme outlier.

Le plot des distances de cook met également en évidence une certaine influence de la données 67 sur les paramètres du modèle de régression. Par acquis de conscience, on peut refaire tourner le modèle sans ces données 53 et 67, afin visualiser leur impact. Cela peut se faire facilement en employant la fonction “comparCeofs” toujours du package “car”.

 

 

Comme attendu, on voit que les données 53 et 67 n’ont que peu d’influence sur les coefficients des paramètres du modèle, ainsi que sur leur erreur standard, puisque les valeurs ne varient pas beaucoup.

 

8 Prédictions

Parfois, on souhaite, obtenir la réponse prédite par le modèle de régression, pour une valeur spécifique de la variable prédictive, qui n’a pas été observée. Par exemple, imaginons que je souhaite obtenir le score de prestige prédit par le modèle, pour un niveau d’éducation de 10.25, qui n’a pas été observé. Pour cela, il est nécessaire de créer un data frame contenant une variable éducation, avec les valeurs souhaitées. Ce nouveau data frame est ensuite passé dans l’argument “newdata” de la fonction “predict”.

8.1 Une seule prédiction

 

Il est possible également possible d‘obtenir facilement les intervalles de confiance et de prédiction, pour cette valeur prédite.

 

L’intervalle de confiance à 95% représente une plage de valeurs ayant une probabilité de 0.95 de contenir la vraie valeur de prestige, pour le niveau d’éducation utilisé. C’est l’intervalle de confiance de la droite de régression pour le niveau d’éducation donné.

L’intervalle de prédiction à 95% est, de son côté, une plage de valeurs ayant une probabilité de 0.95 de contenir une nouvelle valeur de prestige, qui serait observée pour le niveau d’éducation donné. Si on refaisait une enquête, si le niveau d’éducation était à 10.25, alors la probabilité que l’intervalle de prédiction contiennent cette nouvelle observation en terme de prestige, serait de 0.95.

8.2 Plusieurs prédictions

Pour obtenir plusieurs prédictions, c’est à dire pour plusieurs niveaux d’éducation, il suffit simplement de les entrer dans le vecteur :

 

9. Manipulation des composants de la régression

Cette étape n’est pas forcément nécessaire, mais dans certaines situations, on peut avoir besoin, de manipuler certains éléments de la régression comme les résidus, les fitted, et la matrice de variance – covariance.

9.1 Les résidus

Comme déjà vu, précédemment, les résidus de la régression peuvent être obtenus avec la fonction “‘residuals”.

 

9.2 Les fitted

Les fitted, correspondent, aux prédictions du modèle de régression, mais pour les valeurs observées de la variable prédictive :

 

Remarque : Les fitted ajoutés au residuals sont égaux aux observations (variables prestige). Si on ne fournit pas de data frame à l’argument newdata, la fonction predict renvoie les fitted.

 

9.3 La matrice de variance – covariance

La matrice de variance-covariance des paramètres du modèle peut s’obtenir avec la fonction “vcov” :

 

10. Représentation finale de la régression

Lorsque la pente est significative, on réalise généralement une représentation graphique pour illustrer la relation linéaire qui lie les deux variables. Cette visualisation doit être en adéquation avec la régression : si une transformation a été utilisée dans le modèle de régression (log10 de la réponse par exemple), elle doit également figurer dans la représentation graphique.

En plus des données observées, et de la droite de régression, il est également de coutume de représenter l’intervalle de confiance à 95% de la pente. La fonction “geom_smooth” du package ggplot2 permet de le faire facilement, car c’est l’option par défaut. On peut également ajouter l’équation de la droite, à l’aide de la fonction “annotate“.

regression linéaire

 

Il est encore possible d’ ajouter l’intervalle de prédiction sur le plot. Pour cela, il est nécessaire, au préalable, de stocker les valeurs des bornes inférieures et supérieures de cet intervalle, calculées sur les fitted. Puis de les ajouter au tableau de données.

 

 

régression linéaire biostatstiques

 

Pour aller plus loin

De façon générale, si vous souhaitez plus d’informations sur la régression linéaire, et sur les fonctions qui sont utilisées dans cet article, je vous recommande le livre “An R Companion to Applied Regression” de John Fox et Sanford Weisberg.

Ce livre décrit avec beaucoup de détails mais de façon très pédagogique,  l’utilisation du  package “car”.

 

 

Voilà, j’espère que cet article vous permettra d’être plus à l’aise pour réaliser des régressions linéaires simples avec le logiciel R. Si vous avez des points bloquants, indiquez les moi en commentaire, et j’essaierai d’y répondre. Dans un prochain article, je vous parlerai des alternatives possibles lorsque les hypothèses ne sont pas satisfaites.

Et si cet article vous a plus, ou vous a été utile, n’hésitez pas à le partager 😉

 

Note : Je touche une petite commission (entre 3 et 6%) si vous passez par les liens Amazon de cet article pour acheter le livre mentionné. cela m’aide à entretenir ce blog, merci si vous le faites ! 😉

 

Retrouvez ici des articles en  lien avec celui que vous venez de lire:

 

Partager l'article
  •  
  •  
  •  
  •  
  •  
    30
    Partages
  • 30
  •  
  •  
  •  
  •  

1 Commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *