So berechnen Sie studentisierte Residuen in Python

Von Fabian
Kategorie: Python
Tags: Regression
Lesezeit: 3 Minuten

Ein studentisiertes Residuum ist einfach ein Residuum geteilt durch seine geschätzte Standardabweichung.

In der Praxis sagen wir normalerweise, dass jede Beobachtung in einem Datensatz, deren studentisierter Residuum größer als ein absoluter Wert von 3 ist, ein Ausreißer ist.

Mit der Funktion OLSResults.outlier_test() von statsmodels, die die folgende Syntax verwendet, können wir die studentisierten Residuen eines Regressionsmodells in Python schnell abrufen:

OLSResults.outlier_test()

Dabei ist OLSResults der Name einer linearen Modellanpassung mit der Funktion ols() von statsmodels.

Beispiel: Berechnung studentisierter Residuen in Python

Angenommen, wir erstellen das folgende einfache lineare Regressionsmodell in Python:

# notwendige Pakete und Funktionen importieren
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols

# Datensatz erstellen
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]})

# einfaches lineares Regressionsmodell anpassen
model = ols('rating ~ points', data=df).fit()

Wir können die Funktion outlier_test() verwenden, um ein DataFrame zu erstellen, der die studentisierten Residuen für jede Beobachtung im Datensatz enthält:

# Studentisierte Residuen berechnen
stud_res = model.outlier_test()

# Studentisierte Residuen anzeigen
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

Dieser DataFrame zeigt die folgenden Werte für jede Beobachtung im Datensatz an:

  • Das studentisierte Residuum
  • Der nicht angepasste p-Wert des studentisierten Residuums
  • Der Bonferroni-korrigierte p-Wert des studentisierten Residuums

Wir können sehen, dass das studentisierte Residuum für die erste Beobachtung im Datensatz -0,486471 ist, das studentisierte Residuum für die zweite Beobachtung -0,491937 ist und so weiter.

Wir können auch eine schnelle Darstellung der Prädiktorvariablenwerte gegen die entsprechenden studentisierten Residuen erstellen:

import matplotlib.pyplot as plt

# Prädiktorvariablenwerte und studentisierte Residuen definieren
x = df['points']
y = stud_res['student_resid']

# Streudiagramm der Prädiktorvariablen gegen studentisierte Residuen erstellen
plt.scatter(x, y)
plt.axhline(y=0, color='black', linestyle='--')
plt.xlabel('Points')
plt.ylabel('Studentized Residuals') 

Studentisierte Residuen in Python

Aus der Darstellung können wir ersehen, dass keine der Beobachtungen ein studentisiertes Residuum mit einem Absolutwert größer als 3 aufweist, sodass der Datensatz keine eindeutigen Ausreißer enthält.

Zusätzliche Ressourcen

So führen Sie eine einfache lineare Regression in Python durch
Durchführen einer mehrfachen linearen Regression in Python
So erstellen Sie ein Residuendiagramm in Python

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: