typestar

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

  1. typ=2 es la elección usual para diseños desbalanceados.
  2. Cada fila es un término, con su F y su p.
  3. Comparar dos modelos anidados es otra llamada: compare_f_test.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 4 en Más allá de mínimos cuadrados; paso 11 de 19 en Estadística con statsmodels.

← Anterior Siguiente →