Tablas ANOVA en Python
anova_lm convierte un modelo ajustado en una tabla de sumas de cuadrados.
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
from statsmodels.stats.anova import anova_lm
rng = np.random.default_rng(10)
tabla = pd.DataFrame({
"lenguaje": np.tile(["python", "rust", "sql"], 40),
"editor": np.repeat([0, 1], 60),
})
tabla["tpm"] = (90 + tabla["lenguaje"].map({"python": 8.0, "rust": 4.0,
"sql": 0.0})
+ 5 * tabla["editor"] + rng.normal(0, 4, size=120))
completo = smf.ols("tpm ~ C(lenguaje) + editor", data=tabla).fit()
print(anova_lm(completo, typ=2).round(4))
reducido = smf.ols("tpm ~ editor", data=tabla).fit()
print(completo.compare_f_test(reducido)[:2])
Cómo funciona
typ=2es la elección usual para diseños desbalanceados.- Cada fila es un término, con su F y su p.
- Comparar dos modelos anidados es otra llamada: compare_f_test.
Palabras clave y builtins usados aquí
asprint
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 611
- Tokens
- 212
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 116 segundos.
Paso 3 de 4 en Más allá de mínimos cuadrados; paso 11 de 19 en Estadística con statsmodels.