Predictores categóricos en Python
C() vuelve categórica una columna, y la fórmula construye las dummies.
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
rng = np.random.default_rng(3)
tabla = pd.DataFrame({
"lenguaje": np.repeat(["python", "rust", "css"], 30),
"practica": rng.integers(1, 60, size=90),
})
desfase = tabla["lenguaje"].map({"python": 10.0, "rust": 5.0, "css": 0.0})
tabla["tpm"] = 80 + desfase + 0.3 * tabla["practica"] + rng.normal(0, 3, 90)
modelo = smf.ols(
"tpm ~ C(lenguaje, Treatment(reference='css')) + practica",
data=tabla).fit()
for nombre, valor in modelo.params.round(2).items():
print(f"{nombre[:44]:<46}{valor:>8}")
Cómo funciona
- Un nivel se vuelve la referencia; el resto recibe coeficientes.
Treatment(reference=...)elige cuál nivel es ese.- Los nombres en la salida dicen qué contraste es cada fila.
Palabras clave y builtins usados aquí
asforprint
El intento, en números
- Líneas
- 17
- Caracteres a escribir
- 570
- Tokens
- 198
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 108 segundos.
Paso 1 de 3 en Diseño de modelos; paso 4 de 19 en Estadística con statsmodels.