Modelos lineales generalizados en Python
Un solo marco y una familia por tipo de respuesta: binomial, Poisson, gaussiana.
import numpy as np
import statsmodels.api as sm
rng = np.random.default_rng(9)
sesiones = rng.uniform(1, 10, size=200)
errores = rng.poisson(np.exp(0.2 + 0.15 * sesiones))
X = sm.add_constant(sesiones)
poisson = sm.GLM(errores, X, family=sm.families.Poisson()).fit()
print(poisson.params.round(4))
print(round(poisson.deviance, 2), poisson.df_resid)
print(round(poisson.pearson_chi2 / poisson.df_resid, 3), "dispersión")
binomial = sm.GLM(rng.binomial(1, 0.4, 200), X,
family=sm.families.Binomial()).fit()
print(round(binomial.aic, 2))
Cómo funciona
- La familia fija el enlace y la función de varianza.
- Poisson va bien con conteos; binomial, con proporciones.
- La devianza y la chi-cuadrada de Pearson juzgan el ajuste.
Palabras clave y builtins usados aquí
asprintround
El intento, en números
- Líneas
- 17
- Caracteres a escribir
- 539
- Tokens
- 172
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 94 segundos.
Paso 2 de 4 en Más allá de mínimos cuadrados; paso 10 de 19 en Estadística con statsmodels.