Como realizar o teste de white em python (passo a passo)
O teste de White é usado para determinar se a heterocedasticidade está presente em um modelo de regressão.
A heterocedasticidade refere-se à dispersão desigual dos resíduos em diferentes níveis de uma variável de resposta , o que viola a suposição de que os resíduos estão igualmente dispersos em cada nível da variável de resposta.
O exemplo passo a passo a seguir mostra como realizar o teste de White em Python para determinar se a heterocedasticidade é ou não um problema em um determinado modelo de regressão.
Etapa 1: carregar dados
Neste exemplo, ajustaremos um modelo de regressão linear múltipla usando o conjunto de dados mtcars .
O código a seguir mostra como carregar este conjunto de dados em um DataFrame do pandas:
from sklearn. linear_model import LinearRegression from statsmodels. stats . diagnostic import het_white import statsmodels. api as sm import pandas as pd #define URL where dataset is located url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/mtcars.csv" #read in data data = pd. read_csv (url) #view summary of data data. info () <class 'pandas.core.frame.DataFrame'> RangeIndex: 32 entries, 0 to 31 Data columns (total 12 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 model 32 non-null object 1 mpg 32 non-null float64 2 cyl 32 non-null int64 3 disp 32 non-null float64 4 hp 32 non-null int64 5 drat 32 non-null float64 6 wt 32 non-null float64 7 qsec 32 non-null float64 8 vs 32 non-null int64 9 am 32 non-null int64 10 gear 32 non-null int64 11 carb 32 non-null int64 dtypes: float64(5), int64(6), object(1)
Passo 2: Ajustar o modelo de regressão
A seguir, ajustaremos um modelo de regressão usando mpg como variável de resposta e disp e hp como duas variáveis preditoras:
#define response variable y = data[' mpg '] #define predictor variables x = data[[' disp ', ' hp ']] #add constant to predictor variables x = sm. add_constant (x) #fit regression model model = sm. OLS (y,x). fit ()
Passo 3: Realize o teste de White
A seguir, usaremos a função het_white() do pacote statsmodels para realizar o teste de White para determinar se a heterocedasticidade está presente no modelo de regressão:
#perform White's test white_test = het_white(model. resid , model. model . exog ) #define labels to use for output of White's test labels = ['Test Statistic', 'Test Statistic p-value', 'F-Statistic', 'F-Test p-value'] #print results of White's test print (dict(zip(labels, white_test))) {'Test Statistic': 7.076620330416624, 'Test Statistic p-value': 0.21500404394263936, 'F-Statistic': 1.4764621093131864, 'F-Test p-value': 0.23147065943879694}
Veja como interpretar o resultado:
- A estatística de teste é X2 = 7,0766 .
- O valor p correspondente é 0,215 .
O teste de White utiliza as seguintes hipóteses nulas e alternativas:
- Nulo (H 0 ) : A homocedasticidade está presente (os resíduos também estão dispersos)
- Alternativa ( HA ): A heterocedasticidade está presente (os resíduos não estão igualmente dispersos)
Como o valor p não é inferior a 0,05, não rejeitamos a hipótese nula.
Isto significa que não temos evidências suficientes para afirmar que a heterocedasticidade está presente no modelo de regressão.
O que fazer a seguir
Se você não rejeitar a hipótese nula do teste de White, então a heterocedasticidade não estará presente e você poderá interpretar o resultado da regressão original.
No entanto, se você rejeitar a hipótese nula, isso significa que há heterocedasticidade. Neste caso, os erros padrão exibidos na tabela de resultados da regressão podem não ser confiáveis.
Existem duas maneiras comuns de resolver esse problema:
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. Isso geralmente resulta no desaparecimento da heterocedasticidade.
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, isso pode eliminar o problema da heterocedasticidade.
Recursos adicionais
Os tutoriais a seguir fornecem informações adicionais sobre regressão linear em Python:
Um guia completo para regressão linear em Python
Como criar um gráfico residual em Python
Como calcular VIF em Python