So führen Sie einen Durbin-Watson-Test in Python durch

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

Eine der Annahmen der linearen Regression ist, dass es keine Korrelation zwischen den Residuen gibt. Mit anderen Worten wird angenommen, dass die Residuen unabhängig sind.

Eine Möglichkeit, um festzustellen, ob diese Annahme erfüllt ist, besteht darin, einen Durbin-Watson-Test durchzuführen, mit dem das Vorhandensein einer Autokorrelation in den Residuen einer Regression festgestellt wird. Dieser Test verwendet die folgenden Hypothesen:

H 0 (Nullhypothese): Es gibt keine Korrelation zwischen den Residuen.

H A (alternative Hypothese): Die Residuen sind autokorreliert.

Die Teststatistik ist ungefähr gleich 2 * (1-r), wobei r die Probenautokorrelation der Residuen ist. Daher liegt die Teststatistik immer zwischen 0 und 4 mit der folgenden Interpretation:

  • Eine Teststatistik von 2 zeigt keine serielle Korrelation an.
  • Je näher die Teststatistik an 0 liegt, desto mehr Hinweise auf eine positive serielle Korrelation.
  • Je näher die Teststatistik an 4 liegt, desto mehr Hinweise auf eine negative serielle Korrelation.

Als Faustregel gelten Teststatistikwerte zwischen 1,5 und 2,5 als normal. Werte außerhalb dieses Bereichs können jedoch darauf hinweisen, dass die Autokorrelation ein Problem darstellt.

In diesem Tutorial wird erklärt, wie Sie einen Durbin-Watson-Test in Python durchführen.

Beispiel: Durbin-Watson-Test in Python

Angenommen, wir haben den folgenden Datensatz, der die Attribute von 10 Basketballspielern beschreibt:

import numpy as np
import pandas as pd

# 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],
                   'assists': [5, 7, 7, 8, 5, 7, 6, 9, 9, 5],
                   'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]})

#Datensatz anzeigen
df

    rating  points  assists rebounds
0   90  25  5   11
1   85  20  7   8
2   82  14  7   10
3   88  16  8   6
4   94  27  5   6
5   90  20  7   9
6   76  12  6   6
7   75  15  9   10
8   87  14  9   10
9   86  19  5   7

Angenommen, wir passen ein Modell mit mehreren linearen Regressionen an, wobei die Bewertung als Antwortvariable und die anderen drei Variablen als Prädiktorvariablen verwendet werden:

from statsmodels.formula.api import ols

# mehrere lineare Regressionsmodelle anpassen
model = ols('rating ~ points + assists + rebounds', data=df).fit()

# Modellzusammenfassung anzeigen
print(model.summary())

Wir können einen Durbin Watson mit der Funktion durbin_watson() aus der statsmodels Bibliothek ausführen, um festzustellen, ob die Residuen des Regressionsmodells automatisch korreliert sind:

from statsmodels.stats.stattools import durbin_watson

# Durbin-Watson-Test durchführen
durbin_watson(model.resid)

2.392

Die Teststatistik ist 2.392. Da dies im Bereich von 1,5 bis 2,5 liegt, würden wir die Autokorrelation in diesem Regressionsmodell als nicht problematisch betrachten.

Umgang mit Autokorrelation

Wenn Sie die Nullhypothese ablehnen und zu dem Schluss kommen, dass in den Residuen Autokorrelation vorhanden ist, haben Sie verschiedene Möglichkeiten, dieses Problem zu beheben, wenn Sie es für ernst genug halten:

1. Für eine positive serielle Korrelation sollten Sie Verzögerungen der abhängigen und / oder unabhängigen Variablen zum Modell hinzufügen.

2. Stellen Sie bei negativer serieller Korrelation sicher, dass keine Ihrer Variablen überdifferenziert ist.

3. Für die saisonale Korrelation sollten Sie dem Modell saisonale Dummy-Variablen hinzufügen.

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: