Comment effectuer une régression quadratique en Python



La régression quadratique est un type de régression que nous pouvons utiliser pour quantifier la relation entre une variable prédictive et une variable de réponse lorsque les vraies relations sont quadratiques, qui peuvent ressembler à un « U » ou à un « U » inversé sur un graphique.

Autrement dit, lorsque la variable prédictive augmente, la variable de réponse a tendance à augmenter également, mais après un certain point, la variable de réponse commence à diminuer à mesure que la variable prédictive continue d’augmenter.

Ce tutoriel explique comment effectuer une régression quadratique en Python.

Exemple : régression quadratique en Python

Supposons que nous ayons des données sur le nombre d’heures travaillées par semaine et le niveau de bonheur déclaré (sur une échelle de 0 à 100) pour 16 personnes différentes :

import numpy as np
import scipy.stats as stats

#define variables
hours = [6, 9, 12, 12, 15, 21, 24, 24, 27, 30, 36, 39, 45, 48, 57, 60]
happ = [12, 18, 30, 42, 48, 78, 90, 96, 96, 90, 84, 78, 66, 54, 36, 24]

Si nous faisons un simple nuage de points de ces données, nous pouvons voir que la relation entre les deux variables est en forme de « U » :

import matplotlib.pyplot as plt

#create scatterplot
plt.scatter(hours, happ)

À mesure que les heures travaillées augmentent, le bonheur augmente également, mais une fois que les heures travaillées dépassent environ 35 heures par semaine, le bonheur commence à décliner.

En raison de cette forme en « U », cela signifie que la régression quadratique est probablement un bon candidat pour quantifier la relation entre les deux variables.

Pour effectuer réellement une régression quadratique, nous pouvons ajuster un modèle de régression polynomiale avec un degré de 2 à l’aide de la fonction numpy.polyfit() :

import numpy as np

#polynomial fit with degree = 2
model = np.poly1d(np.polyfit(hours, happ, 2))

#add fitted polynomial line to scatterplot
polyline = np.linspace(1, 60, 50)
plt.scatter(hours, happ)
plt.plot(polyline, model(polyline))
plt.show()

Régression quadratique en Python

Nous pouvons obtenir l’équation de régression polynomiale ajustée en imprimant les coefficients du modèle :

print(model)

-0.107x2 + 7.173x - 30.25

L’équation de régression quadratique ajustée est la suivante :

Bonheur = -0,107(heures) 2 + 7,173(heures) – 30,25

Nous pouvons utiliser cette équation pour calculer le niveau de bonheur attendu d’un individu en fonction de ses heures travaillées. Par exemple, le niveau de bonheur attendu d’une personne qui travaille 30 heures par semaine est :

Bonheur = -0,107(30) 2 + 7,173(30) – 30,25 = 88,64 .

Nous pouvons également écrire une courte fonction pour obtenir le R au carré du modèle, qui est la proportion de la variance de la variable de réponse qui peut être expliquée par les variables prédictives.

#define function to calculate r-squared
def polyfit(x, y, degree):
    results = {}
    coeffs = np.polyfit(x, y, degree)
    p = np.poly1d(coeffs)
    #calculate r-squared
    yhat = p(x)
    ybar = np.sum(y)/len(y)
    ssreg = np.sum((yhat-ybar)**2)
    sstot = np.sum((y - ybar)**2)
    results['r_squared'] = ssreg / sstot

    return results

#find r-squared of polynomial model with degree = 3
polyfit(hours, happ, 2)

{'r_squared': 0.9092114182131691}

Dans cet exemple, le R carré du modèle est 0,9092 .

Cela signifie que 90,92 % de la variation des niveaux de bonheur rapportés peuvent être expliqués par les variables prédictives.

Ressources additionnelles

Comment effectuer une régression polynomiale en Python
Comment effectuer une régression quadratique dans R
Comment effectuer une régression quadratique dans Excel

Ajouter un commentaire

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