Personnaliser les préférences

Nous utilisons des cookies pour vous aider à naviguer efficacement et à exécuter certaines fonctions. Vous trouverez ci-dessous des informations détaillées sur tous les cookies sous chaque catégorie de consentement.

Les cookies classés comme « Nécessaires » sont stockés sur votre navigateur car ils sont essentiels pour activer les fonctionnalités de base du site.... 

Toujours actif

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Aucun cookie à afficher.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Aucun cookie à afficher.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Aucun cookie à afficher.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Aucun cookie à afficher.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

Aucun cookie à afficher.

Comment effectuer une régression quantile en Python



La régression linéaire est une méthode que nous pouvons utiliser pour comprendre la relation entre une ou plusieurs variables prédictives et une variable de réponse .

Généralement, lorsque nous effectuons une régression linéaire, nous souhaitons estimer la valeur moyenne de la variable de réponse.

Cependant, nous pourrions plutôt utiliser une méthode connue sous le nom de régression quantile pour estimer toute valeur quantile ou centile de la valeur de réponse, telle que le 70e centile, le 90e centile, le 98e centile, etc.

Ce didacticiel fournit un exemple étape par étape de la façon d’utiliser cette fonction pour effectuer une régression quantile en Python.

Étape 1 : Chargez les packages nécessaires

Tout d’abord, nous allons charger les packages et fonctions nécessaires :

import numpy as np
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
import matplotlib.pyplot as plt

Étape 2 : Créer les données

Pour cet exemple, nous allons créer un ensemble de données contenant les heures étudiées et les résultats des examens obtenus pour 100 étudiants dans une université :

#make this example reproducible
np.random.seed(0)

#create dataset
obs = 100

hours = np.random.uniform(1, 10, obs)
score = 60 + 2*hours + np.random.normal(loc=0, scale=.45*hours, size=100)

df = pd.DataFrame({'hours': hours, 'score': score})

#view first five rows
df.head()

hours	score
0	5.939322	68.764553
1	7.436704	77.888040
2	6.424870	74.196060
3	5.903949	67.726441
4	4.812893	72.849046

Étape 3 : Effectuer une régression quantile

Ensuite, nous ajusterons un modèle de régression quantile en utilisant les heures étudiées comme variable prédictive et les résultats à l’examen comme variable de réponse.

Nous utiliserons le modèle pour prédire le 90e centile attendu des résultats aux examens en fonction du nombre d’heures étudiées :

#fit the model
model = smf.quantreg('score ~ hours', df).fit(q=0.9)

#view model summary
print(model.summary())

                         QuantReg Regression Results                          
==============================================================================
Dep. Variable:                  score   Pseudo R-squared:               0.6057
Model:                       QuantReg   Bandwidth:                       3.822
Method:                 Least Squares   Sparsity:                        10.85
Date:                Tue, 29 Dec 2020   No. Observations:                  100
Time:                        15:41:44   Df Residuals:                       98
                                        Df Model:                            1
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
Intercept     59.6104      0.748     79.702      0.000      58.126      61.095
hours          2.8495      0.128     22.303      0.000       2.596       3.103
==============================================================================

À partir du résultat, nous pouvons voir l’équation de régression estimée :

90e percentile de la note de l’examen = 59,6104 + 2,8495*(heures)

Par exemple, le 90e percentile des scores de tous les étudiants qui étudient 8 heures devrait être de 82,4 :

90e percentile de la note de l’examen = 59,6104 + 2,8495*(8) = 82,4 .

La sortie affiche également les limites de confiance supérieure et inférieure pour l’interception et les heures de la variable prédictive.

Étape 4 : Visualisez les résultats

Nous pouvons également visualiser les résultats de la régression en créant un nuage de points avec l’équation de régression quantile ajustée superposée sur le graphique :

#define figure and axis
fig, ax = plt.subplots(figsize=(8, 6))

#get y values
get_y = lambda a, b: a + b * hours
y = get_y(model.params['Intercept'], model.params['hours'])

#plot data points with quantile regression equation overlaid
ax.plot(hours, y, color='black')
ax.scatter(hours, score, alpha=.3)
ax.set_xlabel('Hours Studied', fontsize=14)
ax.set_ylabel('Exam Score', fontsize=14)

Régression quantile en Python

Contrairement à une simple ligne de régression linéaire, notez que cette ligne ajustée ne représente pas la « ligne de meilleur ajustement » pour les données. Au lieu de cela, il passe par le 90e percentile estimé à chaque niveau de la variable prédictive.

Ressources additionnelles

Comment effectuer une régression linéaire simple en Python
Comment effectuer une régression quadratique en Python

Ajouter un commentaire

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