Como realizar um teste breusch-godfrey em python


Um dos principais pressupostos da regressão linear é que não há correlação entre os resíduos, ou seja, os resíduos são independentes.

Para testar a autocorrelação de primeira ordem, podemos realizar um teste de Durbin-Watson . No entanto, se quisermos testar a autocorrelação em ordens superiores, precisamos realizar um teste de Breusch-Godfrey .

Este teste usa as seguintes suposições :

H 0 (hipótese nula): Não há autocorrelação de ordem menor ou igual a p .

HA (hipótese alternativa): Existe uma autocorrelação de certa ordem menor ou igual a p .

A estatística de teste segue uma distribuição qui-quadrado com p graus de liberdade.

Se o valor p que corresponde a esta estatística de teste estiver abaixo de um certo nível de significância (por exemplo, 0,05), então podemos rejeitar a hipótese nula e concluir que existe uma autocorrelação entre os resíduos numa certa ordem inferior ou igual a p .

Para realizar um teste Breusch-Godfrey em Python, você pode usar a função acorr_breusch_godfrey() da biblioteca statsmodels .

O exemplo passo a passo a seguir explica como realizar o teste Breusch-Godfrey em Python.

Etapa 1: crie os dados

Primeiro, vamos criar um conjunto de dados contendo duas variáveis preditoras (x1 e x2) e uma variável de resposta (y).

 import pandas as pd

#create dataset
df = pd. DataFrame ({' x1 ': [3, 4, 4, 5, 8, 9, 11, 13, 14, 16, 17, 20],
                   ' x2 ': [7, 7, 8, 8, 12, 4, 5, 15, 9, 17, 19, 19],
                    ' y ': [24, 25, 25, 27, 29, 31, 34, 34, 39, 30, 40, 49]})

#view first five rows of dataset
df. head ()

	x1 x2 y
0 3 7 24
1 4 7 25
2 4 8 25
3 5 8 27
4 8 12 29

Passo 2: Ajustar um modelo de regressão

Então podemos ajustar um modelo de regressão linear múltipla usando x1 e x2 como variáveis preditoras e y como variável de resposta .

 import statsmodels. api as sm

#define response variable
y = df[' y ']

#define predictor variables
x = df[[' x1 ', ' x2 ']]

#add constant to predictor variables
x = sm. add_constant (x)

#fit linear regression model
model = sm. OLS (y,x). fit ()

Passo 3: Realize o teste Breusch-Godfrey

A seguir, realizaremos o teste de Breusch-Godfrey para testar a autocorrelação entre os resíduos na ordem p . Para este exemplo, escolheremos p = 3.

 import statsmodels. stats . diagnosis as dg

#perform Breusch-Godfrey test at order p = 3
print (dg. acorr_breusch_godfrey (model, nlags= 3 ))

(8.70314827, 0.0335094873, 5.27967224, 0.0403980576)

O primeiro valor da saída representa a estatística de teste e o segundo valor representa o valor p correspondente.

Do resultado podemos ver o seguinte:

  • Estatística de teste X 2 = 8,7031
  • Valor P = 0,0335

Como este valor p é inferior a 0,05, podemos rejeitar a hipótese nula e concluir que existe uma autocorrelação entre os resíduos de ordem menor ou igual a 3.

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:

  • Para correlação serial positiva, considere adicionar defasagens da variável dependente e/ou independente ao modelo.
  • Para correlação serial negativa, certifique-se de que nenhuma de suas variáveis esteja atrasada demais .
  • Para correlação sazonal, considere adicionar dummies sazonais ao modelo.

Recursos adicionais

Um guia completo para regressão linear em Python
Como realizar um teste Durbin-Watson em Python
Como realizar um teste Ljung-Box em Python

Add a Comment

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