Hoe p-waarden uit lineaire regressie in statistische modellen kunnen worden gehaald


U kunt de volgende methoden gebruiken om p-waarden te extraheren voor coëfficiënten in een lineaire regressiemodelpassing met behulp van de statsmodels- module in 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]

De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken.

Voorbeeld: Extraheer P-waarden uit lineaire regressie in statistische modellen

Stel dat we het volgende panda’s DataFrame hebben dat informatie bevat over de gestudeerde uren, de afgelegde voorbereidende examens en het eindcijfer dat studenten in een bepaalde klas hebben ontvangen:

 import pandas as pd

#createDataFrame
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 exam score
0 1 1 76
1 2 3 78
2 2 3 85
3 4 5 88
4 2 2 72

We kunnen de OLS() -functie van de statsmodels-module gebruiken om een meervoudig lineair regressiemodel te passen, met behulp van „uren“ en „examens“ als voorspellende variabelen en „score“ alsde responsvariabele :

 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                            
==================================================== ============================
Dept. Variable: R-squared score: 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: non-robust                                         
==================================================== ============================
                 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
==================================================== ============================

Standaard geeft de functie summary() de p-waarden van elke voorspellende variabele weer met maximaal drie decimalen:

  • P-waarde voor onderschepping: 0,000
  • P-waarde voor uren: 0,001
  • P-waarde voor examens: 0,315

We kunnen echter de volledige p-waarden voor elke voorspellende variabele uit het model extraheren met behulp van de volgende syntaxis:

 #extract p-values for all predictor variables
for x in range(0, 3):
    print ( model.pvalues [x])

6.514115622692573e-09
0.0005077783375870773
0.3154807854805659

Hierdoor kunnen we p-waarden met meer decimalen zien:

  • P-waarde voor onderschepping: 0,00000000651411562269257
  • P-waarde voor uren: 0,0005077783375870773
  • P-waarde voor examens: 0,3154807854805659

Opmerking : we hebben 3 gebruikt in onze range() -functie omdat er drie totale coëfficiënten waren in ons regressiemodel.

We kunnen ook de volgende syntaxis gebruiken om specifiek de p-waarde voor de variabele „uren“ te extraheren:

 #extract p-value for 'hours' only
model. pvalues . loc [' hours ']

0.0005077783375870773

Of we kunnen de volgende syntaxis gebruiken om de p-waarde van de coëfficiënt van een variabele in een specifieke positie van het regressiemodel te extraheren:

 #extract p-value for coefficient in index position 0
model. pvalues [0]

6.514115622692573e-09

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in Python kunt uitvoeren:

Hoe logistieke regressie uit te voeren in Python
Hoe AIC van regressiemodellen in Python te berekenen
Hoe aangepaste R-kwadraat in Python te berekenen

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert