Cómo realizar una prueba de Breusch-Pagan en Python

La heteroscedasticidad es un término estadístico y se define como la dispersión desigual de los residuos. Más específicamente, se refiere a un rango de valores medidos, el cambio en la dispersión de los residuos. La heterocedasticidad presenta un desafío porque la regresión de mínimos cuadrados ordinarios (OLS) considera los residuos desechados de una población que tiene homocedasticidad, lo que significa una varianza constante. Si hay una heterocedasticidad presente para un análisis de regresión, entonces no se puede confiar fácilmente en el resultado del análisis.

La prueba de Breusch-Pagan es una forma de verificar si existe heterocedasticidad en el análisis de regresión. Una prueba de Breusch-Pagan sigue las siguientes hipótesis:

Hipótesis:

  • La hipótesis nula (H0): Significa que la Homocedasticidad está presente.
  • La hipótesis alternativa: (Ha): Significa que la Homocedasticidad no está presente (es decir, existe heterocedasticidad)

Sintaxis para instalar la biblioteca numNumPypy, pandas y statsmodels:

pip3 install numpy pandas statsmodels

Realización de una prueba de Breusch-Pegan:

Realizar una prueba de Breusch-Pegan es un proceso paso a paso. Estos se han discutido a continuación. 

Paso 1: importar bibliotecas.

El primer paso es importar las bibliotecas que hemos instalado anteriormente.

Python3

# Importing libraries
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf

Paso 2: Crear un conjunto de datos.

Entonces necesitamos crear un conjunto de datos.

Python3

# Create a dataset
dataframe = pd.DataFrame({'rating': [92, 84, 87, 82, 98,
                                     94, 75, 80, 83, 89],
                          'points': [27, 30, 15, 26, 27,
                                     20, 16, 18, 19, 20],
                          'runs': [5000, 7000, 5102, 8019,
                                   1200, 7210, 6200, 9214,
                                   4012, 3102],
                          'wickets': [110, 120, 110, 80, 90,
                                      119, 116, 100, 90, 76]})

Paso 3: ajuste un modelo de regresión lineal múltiple.

El siguiente paso es ajustar un modelo de regresión lineal múltiple. Como ejemplo, estamos considerando la calificación como la variable de respuesta y los puntos, las carreras y los wickets como las variables explicativas.

Python3

# Importing libraries
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
 
# Create a dataset
dataframe = pd.DataFrame({'rating': [92, 84, 87, 82,
                                     98, 94, 75, 80,
                                     83, 89],
                          'points': [27, 30, 15, 26,
                                     27, 20, 16, 18,
                                     19, 20],
                          'runs': [5000, 7000, 5102,
                                   8019, 1200, 7210,
                                   6200, 9214, 4012,
                                   3102],
                          'wickets': [110, 120, 110,
                                      80, 90, 119,
                                      116, 100, 90,
                                      76]})
 
# fit regression model
fit = smf.ols('rating ~ points+runs+wickets', data=dataframe).fit()
print(fit.summary())

Producción:

Paso 4: Realice la prueba de Breusch-Pagan.

El siguiente paso es realizar la prueba de Breusch-Pagan para determinar si existe heterocedasticidad.

Python3

# Importing libraries
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
from statsmodels.compat import lzip
import statsmodels.stats.api as sms
 
# Creating a dataset
dataframe = pd.DataFrame({'rating': [92, 84, 87, 82,
                                     98, 94, 75, 80,
                                     83, 89],
                          'points': [27, 30, 15, 26,
                                     27, 20, 16, 18,
                                     19, 20],
                          'runs': [5000, 7000, 5102,
                                   8019, 1200, 7210,
                                   6200, 9214, 4012,
                                   3102],
                          'wickets': [110, 120, 110,
                                      80, 90, 119,
                                      116, 100, 90,
                                      76]})
 
# Fit the regression model
fit = smf.ols('rating ~ points+runs+wickets', data=dataframe).fit()
 
# Conduct the Breusch-Pagan test
names = ['Lagrange multiplier statistic', 'p-value',
         'f-value', 'f p-value']
 
# Get the test result
test_result = sms.het_breuschpagan(fit.resid, fit.model.exog)
 
lzip(names, test_result)

Producción:

Interpretación de salida:

Aquí, el estadístico del multiplicador de Lagrange para la prueba resulta ser igual a 4,364 y ​​el valor p correspondiente resulta ser igual a 0,224. Dado que el valor p es mayor que 0,05, no podemos rechazar la hipótesis nula. Por lo tanto, no tenemos pruebas suficientes para decir que la heterocedasticidad está presente en el modelo de regresión.

Cómo corregir la heterocedasticidad:

En el ejemplo anterior, la heteroscedasticidad estaba ausente en el modelo de regresión. Pero para el caso en que realmente exista heterocedasticidad, hay tres formas de solucionar esto:

  • Transformar la variable dependiente: Podemos alterar la variable dependiente usando alguna técnica. Por ejemplo, podemos tomar el registro de la variable dependiente.
  • Redefinir la variable dependiente:  Podemos redefinir la variable dependiente. Por ejemplo, usar una tasa para la variable dependiente que el valor defectuoso.
  • Usar regresión ponderada: La última forma es usar regresión ponderada. En este tipo de regresión, el peso se asigna a cada punto de datos sobre la base de la varianza de su valor ajustado. El uso de pesos adecuados puede eliminar el problema de la heterocedasticidad.

Publicación traducida automáticamente

Artículo escrito por bhuwanesh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *