typestar

Diagnóstico de residuos en Python

Las pruebas que dicen si los supuestos de OLS de verdad se cumplieron.

import numpy as np
import statsmodels.api as sm
from statsmodels.stats.diagnostic import het_breuschpagan
from statsmodels.stats.stattools import durbin_watson, jarque_bera

rng = np.random.default_rng(6)
x = np.linspace(1, 50, 200)
y = 3 + 0.5 * x + rng.normal(0, x / 10)  # la varianza crece con x

X = sm.add_constant(x)
modelo = sm.OLS(y, X).fit()

estadistico, p, _, _ = het_breuschpagan(modelo.resid, X)
print(round(estadistico, 3), f"{p:.2e}", "heterocedástico" if p < 0.05
      else "varianza constante")
print(round(durbin_watson(modelo.resid), 3))
print(round(jarque_bera(modelo.resid)[1], 4))
print(round(modelo.get_robustcov_results("HC3").bse[1], 5))

Cómo funciona

  1. het_breuschpagan prueba si la varianza cambia.
  2. durbin_watson cerca de 2 significa sin autocorrelación.
  3. jarque_bera prueba la normalidad de los residuos.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
18
Caracteres a escribir
658
Tokens
189
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 103 segundos.

Escribe este fragmento

Paso 1 de 2 en Diagnósticos y robustez; paso 7 de 19 en Estadística con statsmodels.

← Anterior Siguiente →