Como realizar o teste goldfeld-quandt em python


O teste Goldfeld-Quandt é usado para determinar se a heterocedasticidade está presente em um modelo de regressão.

A heterocedasticidade refere-se à dispersão desigual de resíduos em diferentes níveis de uma variável resposta em um modelo de regressão.

Se a heterocedasticidade estiver presente, isso viola uma das principais suposições da regressão linear de que os resíduos estão igualmente dispersos em cada nível da variável de resposta.

Este tutorial fornece um exemplo passo a passo de como realizar o teste Goldfeld-Quandt em Python.

Etapa 1: crie o conjunto de dados

Para este exemplo, vamos criar o seguinte DataFrame do pandas que contém informações sobre horas estudadas, exames preparatórios realizados e resultados de exames finais obtidos por 13 alunos em uma turma:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' hours ': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4, 3, 6],
                   ' exams ': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4, 3, 2],
                   ' score ': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90, 75, 96]})

#view DataFrame
print (df)

    hours exam score
0 1 1 76
1 2 3 78
2 2 3 85
3 4 5 88
4 2 2 72
5 1 2 69
6 5 1 94
7 4 1 94
8 2 0 88
9 4 3 92
10 4 4 90
11 3 3 75
12 6 2 96

Passo 2: Ajustar o modelo de regressão linear

A seguir, ajustaremos um modelo de regressão linear múltipla usando horas e exames como variáveis preditoras e pontuação como variável resposta:

 import statsmodels. api as sm

#define predictor and response variables
y = df[' score ']
x = df[[' hours ', ' exams ']]

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

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

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

                            OLS Regression Results                            
==================================================== ============================
Dept. Variable: R-squared score: 0.718
Model: OLS Adj. R-squared: 0.661
Method: Least Squares F-statistic: 12.70
Date: Mon, 31 Oct 2022 Prob (F-statistic): 0.00180
Time: 09:22:56 Log-Likelihood: -38.618
No. Observations: 13 AIC: 83.24
Df Residuals: 10 BIC: 84.93
Model: 2                                         
Covariance Type: non-robust                                         
==================================================== ============================
                 coef std err t P>|t| [0.025 0.975]
-------------------------------------------------- ----------------------------
const 71.4048 4.001 17.847 0.000 62.490 80.319
hours 5.1275 1.018 5.038 0.001 2.860 7.395
exams -1.2121 1.147 -1.057 0.315 -3.768 1.344
==================================================== ============================
Omnibus: 1,103 Durbin-Watson: 1,248
Prob(Omnibus): 0.576 Jarque-Bera (JB): 0.803
Skew: -0.289 Prob(JB): 0.669
Kurtosis: 1.928 Cond. No. 11.7
==================================================== ============================

Passo 3: Realize o teste Goldfeld-Quandt

A seguir, usaremos a função statsmodels het_goldfeldquandt() para realizar o teste Goldfeld-Quandt.

Nota : O teste Goldfeld-Quandt funciona removendo uma série de observações localizadas no centro do conjunto de dados e depois testando para ver se a distribuição dos resíduos é diferente dos dois conjuntos de dados resultantes que se ligam em cada lado das observações centrais.

Normalmente, optamos por remover cerca de 20% do total de observações. Neste caso, podemos usar o argumento drop para especificar que queremos remover 20% das observações:

 #perform Goldfeld-Quandt test
sm. stats . diagnosis . het_goldfeldquandt (y, x, drop= 0.2 )

(1.7574505407790355, 0.38270288684680076, 'increasing')

Veja como interpretar o resultado:

  • A estatística de teste é 1.757 .
  • O valor p correspondente é 0,383 .

O teste Goldfeld-Quandt utiliza as seguintes hipóteses nulas e alternativas:

  • Nulo (H 0 ) : A homocedasticidade está presente.
  • Alternativa ( HA ): A heterocedasticidade está presente.

Como o valor p não é inferior a 0,05, não rejeitamos a hipótese nula.

Não temos evidências suficientes para argumentar que a heterocedasticidade é um problema no modelo de regressão.

O que fazer a seguir

Se você não rejeitar a hipótese nula do teste Goldfeld-Quandt, então a heterocedasticidade não estará presente e você poderá prosseguir com a interpretação do resultado da regressão original.

Porém, se você rejeitar a hipótese nula, significa que a heterocedasticidade está presente nos dados. Neste caso, os erros padrão exibidos na tabela de resultados da regressão podem não ser confiáveis.

Existem várias maneiras comuns de resolver esse problema, incluindo:

1. Transforme a variável de resposta.

Você pode tentar realizar uma transformação na variável de resposta, por exemplo, obtendo o log, a raiz quadrada ou a raiz cúbica da variável de resposta. Geralmente, isso pode fazer com que a heterocedasticidade desapareça.

2. Use regressão ponderada.

A regressão ponderada atribui um peso a cada ponto de dados com base na variância do seu valor ajustado. Essencialmente, isso atribui pesos baixos aos pontos de dados que possuem variâncias mais altas, reduzindo seus quadrados residuais.

Quando os pesos apropriados são usados, a regressão ponderada pode eliminar o problema da heterocedasticidade.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns em Python:

Como realizar regressão OLS em Python
Como criar um gráfico residual em Python
Como realizar o teste de White em Python
Como realizar um teste Breusch-Pagan em Python

Add a Comment

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