Interacciones y transformaciones en Python
El lenguaje de fórmulas cubre productos, potencias y funciones en línea.
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
rng = np.random.default_rng(4)
tabla = pd.DataFrame({
"practica": rng.uniform(1, 60, size=120),
"editor": rng.integers(0, 2, size=120),
})
tabla["tpm"] = (70 + 0.5 * tabla["practica"]
+ 6 * tabla["editor"]
+ 0.1 * tabla["practica"] * tabla["editor"]
+ rng.normal(0, 3, size=120))
modelo = smf.ols("tpm ~ practica * editor", data=tabla).fit()
print(sorted(modelo.params.index.tolist()))
print(modelo.params.round(3).to_dict())
curvo = smf.ols("tpm ~ practica + I(practica ** 2)", data=tabla).fit()
print(round(curvo.rsquared, 4), round(modelo.rsquared, 4))
Cómo funciona
a:bes la interacción sola;a*bes ambos más la interacción.I(x ** 2)protege la aritmética del parser de fórmulas.np.log(x)funciona directo dentro de una fórmula.
Palabras clave y builtins usados aquí
asprintroundsorted
El intento, en números
- Líneas
- 20
- Caracteres a escribir
- 635
- 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 2 de 3 en Diseño de modelos; paso 5 de 19 en Estadística con statsmodels.