Comment extraire les valeurs P de la régression linéaire dans les modèles statistiques
Vous pouvez utiliser les méthodes suivantes pour extraire les valeurs p pour les coefficients dans un ajustement de modèle de régression linéaire à l’aide du module statsmodels en Python :
#extract p-values for all predictor variables for x in range (0, 3): print(model.pvalues[x]) #extract p-value for specific predictor variable name model.pvalues.loc['predictor1'] #extract p-value for specific predictor variable position model.pvalues[0]
Les exemples suivants montrent comment utiliser chaque méthode dans la pratique.
Exemple : Extraire les valeurs P de la régression linéaire dans les modèles statistiques
Supposons que nous ayons le DataFrame pandas suivant qui contient des informations sur les heures étudiées, les examens préparatoires passés et la note finale reçue par les étudiants d’une certaine classe :
import pandas as pd #create DataFrame df = pd.DataFrame({'hours': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4, 3, 6], 'exams': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4, 3, 2], 'score': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90, 75, 96]}) #view head of DataFrame df.head() hours exams score 0 1 1 76 1 2 3 78 2 2 3 85 3 4 5 88 4 2 2 72
Nous pouvons utiliser la fonction OLS() du module statsmodels pour ajuster un modèle de régression linéaire multiple , en utilisant « heures » et « examens » comme variables prédictives et « score » comme variable de réponse :
import statsmodels.api as sm #define predictor and response variables y = df['score'] x = df[['hours', 'exams']] #add constant to predictor variables x = sm.add_constant(x) #fit linear regression model model = sm.OLS(y, x).fit() #view model summary print(model.summary()) OLS Regression Results ============================================================================== Dep. Variable: score R-squared: 0.718 Model: OLS Adj. R-squared: 0.661 Method: Least Squares F-statistic: 12.70 Date: Fri, 05 Aug 2022 Prob (F-statistic): 0.00180 Time: 09:24:38 Log-Likelihood: -38.618 No. Observations: 13 AIC: 83.24 Df Residuals: 10 BIC: 84.93 Df Model: 2 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ const 71.4048 4.001 17.847 0.000 62.490 80.319 hours 5.1275 1.018 5.038 0.001 2.860 7.395 exams -1.2121 1.147 -1.057 0.315 -3.768 1.344 ============================================================================== Omnibus: 1.103 Durbin-Watson: 1.248 Prob(Omnibus): 0.576 Jarque-Bera (JB): 0.803 Skew: -0.289 Prob(JB): 0.669 Kurtosis: 1.928 Cond. No. 11.7 ==============================================================================
Par défaut, la fonction summary() affiche les valeurs p de chaque variable prédictive jusqu’à trois décimales :
- Valeur P pour l’interception : 0,000
- Valeur P pour les heures : 0,001
- Valeur P pour les examens : 0,315
Cependant, nous pouvons extraire les valeurs p complètes pour chaque variable prédictive du modèle en utilisant la syntaxe suivante :
#extract p-values for all predictor variables for x in range (0, 3): print(model.pvalues[x]) 6.514115622692573e-09 0.0005077783375870773 0.3154807854805659
Cela nous permet de voir les valeurs p avec plus de décimales :
- Valeur P pour l’interception : 0,00000000651411562269257
- Valeur P pour les heures : 0,0005077783375870773
- Valeur P pour les examens : 0,3154807854805659
Remarque : Nous avons utilisé 3 dans notre fonction range() car il y avait trois coefficients totaux dans notre modèle de régression.
Nous pouvons également utiliser la syntaxe suivante pour extraire spécifiquement la valeur p pour la variable « heures » :
#extract p-value for 'hours' only model.pvalues.loc['hours'] 0.0005077783375870773
Ou nous pourrions utiliser la syntaxe suivante pour extraire la valeur p du coefficient d’une variable dans une position spécifique du modèle de régression :
#extract p-value for coefficient in index position 0 model.pvalues[0] 6.514115622692573e-09
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes en Python :
Comment effectuer une régression logistique en Python
Comment calculer l’AIC des modèles de régression en Python
Comment calculer le R-carré ajusté en Python