Hoe gestudentiseerde residuen in python te berekenen


Een studentenresidu is eenvoudigweg een residu gedeeld door de geschatte standaarddeviatie.

In de praktijk zeggen we over het algemeen dat elke waarneming in een dataset waarvan het studentenresidu groter is dan de absolute waarde van 3, een uitbijter is.

We kunnen snel de door studenten verkregen residuen van een regressiemodel in Python verkrijgen met behulp van de functie OLSResults.outlier_test() van statsmodels, die de volgende syntaxis gebruikt:

OLSResults.outlier_test()

waarbij OLSResults de naam is van een lineair model dat past met behulp van de statsmodels ols() functie.

Voorbeeld: berekening van gestudentiseerde residuen in Python

Stel dat we het volgende eenvoudige lineaire regressiemodel in Python bouwen:

 #import necessary packages and functions
import numpy as np
import pandas as pd
import statsmodels. api as sm
from statsmodels. formula . api import ols

#create dataset
df = pd. DataFrame ({'rating': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86],
                   'points': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19]})

#fit simple linear regression model
model = ols('rating ~ points', data=df). fit ()

We kunnen de functie outlier_test() gebruiken om een DataFrame te produceren dat de studentized residuen bevat voor elke observatie in de dataset:

 #calculate studentized residuals
stud_res = model. outlier_test ()

#display studentized residuals
print(stud_res)

    student_resid unadj_p bonf(p)
0 -0.486471 0.641494 1.000000
1 -0.491937 0.637814 1.000000
2 0.172006 0.868300 1.000000
3 1.287711 0.238781 1.000000
4 0.106923 0.917850 1.000000
5 0.748842 0.478355 1.000000
6 -0.968124 0.365234 1.000000
7 -2.409911 0.046780 0.467801
8 1.688046 0.135258 1.000000
9 -0.014163 0.989095 1.000000

Dit DataFrame geeft voor elke waarneming in de dataset de volgende waarden weer:

  • Het gestudentiseerde residu
  • De niet-gecorrigeerde p-waarde van het gestudentiseerde residu
  • De door Bonferroni gecorrigeerde p-waarde van het studentenresidu

We kunnen zien dat het gestudentiseerde residu voor de eerste observatie in de dataset -0.486471 is, het gestudentiseerde residu voor de tweede observatie is -0.491937 , enzovoort.

We kunnen ook een snelle grafiek maken van de waarden van de voorspellende variabelen tegen de overeenkomstige gestudentiseerde residuen:

 import matplotlib. pyplot as plt

#define predictor variable values and studentized residuals
x = df[' points ']
y = stud_res[' student_resid ']

#create scatterplot of predictor variable vs. studentized residuals
plt. scatter (x,y)
plt. axhline (y=0, color=' black ', linestyle=' -- ')
plt. xlabel (' Points ')
plt. ylabel (' Studentized Residuals ') 

Studentized residuen in Python

Uit de grafiek kunnen we zien dat geen van de waarnemingen een leerlingresidu heeft met een absolute waarde groter dan 3, dus er zijn geen duidelijke uitschieters in de dataset.

Aanvullende bronnen

Hoe eenvoudige lineaire regressie uit te voeren in Python
Hoe u meerdere lineaire regressies uitvoert in Python
Hoe u een restplot maakt in Python

Einen Kommentar hinzufügen

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