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