Comment effectuer une régression quadratique dans R



Lorsque deux variables ont une relation linéaire, nous pouvons souvent utiliser une simple régression linéaire pour quantifier leur relation.

Exemple de relation linéaire

Cependant, lorsque deux variables ont une relation quadratique, nous pouvons utiliser la régression quadratique pour quantifier leur relation.

Exemple de relation quadratique

Ce tutoriel explique comment effectuer une régression quadratique dans R.

Exemple : régression quadratique dans R

Supposons que nous souhaitions comprendre la relation entre le nombre d’heures travaillées et le bonheur déclaré. Nous disposons des données suivantes sur le nombre d’heures travaillées par semaine et le niveau de bonheur déclaré (sur une échelle de 0 à 100) pour 11 personnes différentes :

Utilisez les étapes suivantes pour ajuster un modèle de régression quadratique dans R.

Étape 1 : Saisissez les données.

Tout d’abord, nous allons créer un bloc de données contenant nos données :

#create data
data <- data.frame(hours=c(6, 9, 12, 14, 30, 35, 40, 47, 51, 55, 60),
                   happiness=c(14, 28, 50, 70, 89, 94, 90, 75, 59, 44, 27))

#view data 
data

   hours happiness
1      6        14
2      9        28
3     12        50
4     14        70
5     30        89
6     35        94
7     40        90
8     47        75
9     51        59
10    55        44
11    60        27

Étape 2 : Visualisez les données.

Ensuite, nous allons créer un nuage de points simple pour visualiser les données.

#create scatterplot
plot(data$hours, data$happiness, pch=16)

Nuage de points dans R

Nous pouvons clairement voir que les données ne suivent pas un modèle linéaire.

Étape 3 : Ajustez un modèle de régression linéaire simple.

Ensuite, nous ajusterons un modèle de régression linéaire simple pour voir dans quelle mesure il s’adapte aux données :

#fit linear model
linearModel <- lm(happiness ~ hours, data=data)

#view model summary
summary(linearModel)

Call:
lm(formula = happiness ~ hours)

Residuals:
   Min     1Q Median     3Q    Max 
-39.34 -21.99  -2.03  23.50  35.11 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)  48.4531    17.3288   2.796   0.0208 *
hours         0.2981     0.4599   0.648   0.5331  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 28.72 on 9 degrees of freedom
Multiple R-squared:  0.0446,	Adjusted R-squared:  -0.06156 
F-statistic: 0.4201 on 1 and 9 DF,  p-value: 0.5331

La variance totale du bonheur expliquée par le modèle n’est que de 4,46 % , comme le montre la valeur du R-carré multiple.

Étape 4 : Ajustez un modèle de régression quadratique.

Ensuite, nous ajusterons un modèle de régression quadratique.

#create a new variable for hours2
data$hours2 <- data$hours^2

#fit quadratic regression model
quadraticModel <- lm(happiness ~ hours + hours2, data=data)

#view model summary
summary(quadraticModel)

Call:
lm(formula = happiness ~ hours + hours2, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-6.2484 -3.7429 -0.1812  1.1464 13.6678 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -18.25364    6.18507  -2.951   0.0184 *  
hours         6.74436    0.48551  13.891 6.98e-07 ***
hours2       -0.10120    0.00746 -13.565 8.38e-07 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 6.218 on 8 degrees of freedom
Multiple R-squared:  0.9602,	Adjusted R-squared:  0.9502 
F-statistic: 96.49 on 2 and 8 DF,  p-value: 2.51e-06

La variance totale du bonheur expliquée par le modèle est passée à 96,02 % .

Nous pouvons utiliser le code suivant pour visualiser dans quelle mesure le modèle s’adapte aux données :

#create sequence of hour values
hourValues <- seq(0, 60, 0.1)

#create list of predicted happines levels using quadratic model
happinessPredict <- predict(quadraticModel,list(hours=hourValues, hours2=hourValues^2))

#create scatterplot of original data values
plot(data$hours, data$happiness, pch=16)
#add predicted lines based on quadratic regression model
lines(hourValues, happinessPredict, col='blue')

Nuage de points de régression quadratique dans R

Nous pouvons voir que la droite de régression quadratique correspond assez bien aux valeurs des données.

Étape 5 : Interpréter le modèle de régression quadratique.

À l’étape précédente, nous avons vu que le résultat du modèle de régression quadratique était le suivant :

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -18.25364    6.18507  -2.951   0.0184 *  
hours         6.74436    0.48551  13.891 6.98e-07 ***
hours2       -0.10120    0.00746 -13.565 8.38e-07 ***

Sur la base des coefficients présentés ici, la régression quadratique ajustée serait :

Bonheur = -0,1012 (heures) 2 + 6,7444 (heures) – 18,2536

Nous pouvons utiliser cette équation pour trouver le bonheur prédit d’un individu, compte tenu du nombre d’heures qu’il travaille par semaine.

Par exemple, une personne qui travaille 60 heures par semaine aurait un niveau de bonheur de 22,09 :

Bonheur = -0,1012(60) 2 + 6,7444(60) – 18,2536 = 22,09

À l’inverse, une personne qui travaille 30 heures par semaine devrait avoir un niveau de bonheur de 92,99 :

Bonheur = -0,1012(30) 2 + 6,7444(30) – 18,2536 = 92,99

Ajouter un commentaire

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