Como realizar um teste durbin-watson em python


Uma das premissas da regressão linear é que não há correlação entre os resíduos. Em outras palavras, os resíduos são considerados independentes.

Uma forma de determinar se esta suposição é atendida é realizar um teste de Durbin-Watson , que é usado para detectar a presença de autocorrelação nos resíduos de uma regressão . Este teste usa as seguintes suposições:

H 0 (hipótese nula): Não há correlação entre os resíduos.

H A (hipótese alternativa): Os resíduos são autocorrelacionados.

A estatística de teste é aproximadamente igual a 2*(1-r) onde r é a autocorrelação amostral dos resíduos. Assim, a estatística do teste estará sempre entre 0 e 4 com a seguinte interpretação:

  • Uma estatística de teste de 2 indica que não há correlação serial.
  • Quanto mais próximas as estatísticas do teste estiverem de 0 , mais evidências haverá de uma correlação serial positiva.
  • Quanto mais próximas as estatísticas do teste estiverem de 4 , mais evidências haverá de uma correlação serial negativa.

Normalmente, valores estatísticos de teste entre 1,5 e 2,5 são considerados normais. Entretanto, valores fora dessa faixa podem indicar que a autocorrelação é um problema.

Este tutorial explica como realizar um teste Durbin-Watson em Python.

Exemplo: teste Durbin-Watson em Python

Suponha que temos o seguinte conjunto de dados que descreve os atributos de 10 jogadores de basquete:

 import numpy as np
import pandas as pd

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

#view dataset
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

Suponha que ajustemos um modelo de regressão linear múltipla usando classificação como variável de resposta e as outras três variáveis como variáveis preditoras:

 from statsmodels.formula.api import ols

#fit multiple linear regression model
model = ols('rating ~ points + assists + rebounds', data=df). fit ()

#view model summary
print(model.summary())

Podemos realizar um Watson Durbin usando a função durbin_watson() da biblioteca statsmodels para determinar se os resíduos do modelo de regressão são autocorrelacionados:

 from statsmodels.stats.stattools import durbin_watson

#perform Durbin-Watson test
durbin_watson(model.resid)

2,392

A estatística de teste é 2.392 . Como este valor está entre 1,5 e 2,5, consideramos que a autocorrelação não é um problema neste modelo de regressão.

Como lidar com a autocorrelação

Se você rejeitar a hipótese nula e concluir que a autocorrelação está presente nos resíduos, você terá várias opções para corrigir esse problema se considerá-lo suficientemente sério:

1. Para correlação serial positiva, considere adicionar defasagens da variável dependente e/ou independente ao modelo.

2. Para correlação serial negativa, certifique-se de que nenhuma de suas variáveis esteja atrasada demais .

3. Para correlação sazonal, considere adicionar dummies sazonais ao modelo.

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *