Introduction à la régression polynomiale

Différentes formes de relation du modèle polynomial de degré 2

Définition

La régression polynomiale est une approche statistique qui est employée pour modéliser une relation de forme non-linéaire entre la réponse (y) et la ou les variables explicatives (x).

Pour prendre en charge cette forme non-linéaire de la relation entre y et x, ces modèles de régression intègrent des polynômes dans leurs équations :

$$y=\alpha + \beta_1x\; +\;\beta_2x^2 + …+\; \beta_kx^k + \epsilon$$

Bien que les modèles polynomiaux permettent de modéliser des relations de formes non-linéaires (courbure, sinusoide, etc..), ils appartiennent à la famille des modèles linéaires. Car dans le terme “modèle linéaire” , l’adjectif “linéaire” fait référence aux paramètres du modèle et au fait que leurs effets sont additionnés.

En biostatistiques, les modèles polynomiaux les plus utilisés (en tout cas par moi) sont ceux de degré 2 (quadratique), et plus rarement de degré 3 (cubique), c‘est-à-dire de la forme :

$$y=\alpha + \beta_1x\; +\;\beta_2x^2 + \epsilon$$

Et

$$y=\alpha + \beta_1x\; +\;\beta_2x^2 +\;\beta_3x^2 \epsilon$$

 

Remarque: la régression linéaire est une régression polynomiale de degré 1 !

 

Les formes modélisées par la régression polynomiale

La régression polynomiale de degré 2, permet de modéliser des relations de formes diverses :

Différentes formes de relation du modèle polynomial de degré 2![]

Ces exemples sont issus du R book (Crawley, M. J. (2012). The R book. John Wiley & Sons.)

 

Voici encore un exemple de régression polynomiale de degré 3 :

régression polynomiale cubique

A quoi ça sert la régression polynomiale ?

A mon sens, il y a deux grands cas d’utilisation de la régression polynomiale.

Le premier, c’est lorsqu’on souhaite réellement (pas grossièrement) évaluer la linéarité de la relation entre une réponse (y) et une variable explicative (x), ou à l’inverse évaluer une courbure.
Dans cette situation, on va ajuster un modèle de régression linéaire, puis un modèle de régression polynomiale de degré 2, et enfin, on va comparer les ajustements à l’aide d’un test F, car les modèles sont emboîtés. Si l’ajustement du modèle polynomial est meilleur, alors la linéarité est rejetée au profit de la courbure. Dans le cas inverse, c’est la courbure qui est rejetée au profit de la linéarité.

La seconde situation, c’est lorsqu’on souhaite construire un modèle de prédiction. Dans cette situation, ce que l’on recherche, c’est obtenir des prédictions précises. Et dans ce cas là, on préférera un modèle plus complexe (quadratique par exemple) qu’un modèle qui explique simplement la relation entre y et x (linéaire)

 

Tutoriel avec R

Nous allons ici nous placer dans un contexte d’évaluation stricte de la linéarité entre la variable mpg (miles par gallon) et disp (volume du cylindre en cubic inches).

Visualisation des données

 

réponse en fonction d'une variable prédictive

Régression linéaire simple

Visualisation

La courbe peut être ajoutée à l’aide de la ligne geom_smooth(method="lm", colour="blue")

 

relation linéaire

Le modèle de régression linéaire ne semble pas aberrant.

Ajustement

 

Vérification des hypothèses de normalité et d’homogénéité des résidus.

Pour plus de détails, consultez mon article dédié à la régression linéaire simple :

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

 

diagnostic de régression du modèle linéaire

Visuellement, la normalité et l’homogénéité des résidus semblent souffrir de quelques défauts. Nous allons employer les tests de Shapiro-Wilk (normalité) et de Breusch-Pagan (homogénéité) :

 

 

L’hypothèse de normalité est rejetée (p <0.05) et l’hypothèse d’homogénéité des résidus est acceptée (p >0.05).
Bien que l’hypothèse de normalité des résidus soit rejetée, nous allons considérer que l’écart n’est pas dramatique, et passer à la régression polynomiale.

Régression polynomiale de degrés 2

La forme de la relation entre mpg et disp montre une légère courbure, nous allons donc réaliser une régression polynomiale de degré 2

La régression polynomiale de degré 2, peut être réalisée à l’aide de 2 syntaxes équivalente :

 

Dans la première syntaxe, la lettre I veut dire “indicatrice”, elle permet de protéger l’équation d’opérations erronées, par R.

Dans la seconde, l’argument raw=TRUE permet d’obtenir une paramétrisation équivalente à celle de la première syntaxe, les résultats seront donc identiques.

Visualisation

La courbe peut être ajoutée à l’aide de la ligne geom_smooth(method="lm", colour="red", formula=y~x+I(x^2))

 

visualisation de la régression polynomiale

Visuellement, l’ajustement semble satisfaisant.

Ajustement

 

Nous pouvons voir l’arrivée d’une ligne I(disp^2) dans les résultats. Cela permet de vérifier que tout s’est bien déroulé.

 

Nous pouvons voir que les résultats sont les mêmes que ceux obtenus avec la première syntaxe.

Comme précédemment, nous vérifions les hypothèses visuellement :

 

diagnostic de la régression polynomiale

Là encore nous pouvons voir des défauts de normalité et d’homogénéité des résidus.

Nous employons alors les tests :

 

Cette fois, le test de Shapiro ne rejette pas la normalité des résidus, et le test de Breusch-Pagan ne rejette pas non plus l’hypothèse de leur homogénéité.

 

Comparaison des deux modèles

Pour comparer les ajustements de ces deux modèles, nous allons employer un test F, défini par :

$$F=\frac{\left( \frac{RSS_1-RSS_2}{nb_{param_2}-nb_{param_1}} \right)}{\left(\frac{RSS_2}{n-nb_{param_2}}\right)}$$

Avec :

  • l’indice 1 qui fait référence au modèle le plus simple (la régression linaire) et l’indice 2 au modèle le plus complexe (la régression polynomiale de degré 2)
  • RSS (Residuals sum of squares) : la somme des carrés résiduels
  • nb_param : le nombre de paramètre des modèles : 2 pour la régression linéaire (intercept et pente), 3 pour la régression polynomiale de degré 2 (intercept, pente pour x, pente pour x^2)
  • n le nombre de données (ici 32)

Les sommes des carrés résiduels de chaque modèle peuvent être obtenues en employant la fonction Anova du package car:

 

 

Pour réaliser le test F, nous employons la fonction anova() (sans majuscule).

 

Ici la p-value <0.05, l’hypothèse nulle, qui spécifie que les ajustements des deux modèles sont égaux, est rejetée. Ainsi l’ajustement du modèle de régression polynomiale de degré 2 est significativement meilleur que celui du modèle de régression linéaire. La relation entre mpg et disp est donc mieux représentée par une courbure que par une ligne droite.

Si la p-value avait été >0.05, nous aurions conclu que modéliser la courbure n’apportait pas une amélioration suffisante par rapport à la droite, et nous aurions conservé le modèle de régression linéaire..

La statistique F du test peut être retrouvée comme ceci:

 

Calcul de l’intervalle de prédiction

L’intervalle de confiance du modèle de régression polynomiale peut être directement représenté sur le plot, par la fonction geom_smooth().

En revanche, si nous voulons ajouter un intervalle de prédiction, il est nécessaire d’employer le code suivant :

 

 

régression polynomiale avec R

Remarque:

Une évaluation plus rapide et sans test statistique, de la linéarité de la relation entre une variable réponse et une variable prédictive x, peut-être réalisée à l’aide de la fonctionscatterplot().
Si nous l’employons avec les données mtcars, nous pouvons voir que la droite se retrouve en dehors des bandes de confiance.

 

évaluation graphique de la linéarité

 

Conclusion

J’espère qu’après cette petite introduction à la régression polynomiale vous saurez comment modéliser une relation présentant une courbure, et comment évaluer si celle-ci est vraiment nécessaire, ou si une droite est suffisante !

 

Poursuivez votre lecture

Partager l'article
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

3 commentaires

  1. Monneret Denis Répondre

    Erreur de copier-coller pour la 4ème équation de l’exemple de la 1ère figure (courbe croissante turquoise en bas à droite) ?

Laisser un commentaire

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