Mínimos cuadrados con `statsmodels`
Varias librerías de Python ofrecen interfaces cómodas y de alto nivel para que no tengas que manejar siempre de forma explícita toda la maquinaria de la optimización del modelo.
Como ejemplo, en este ejercicio usarás la librería statsmodels en un flujo de trabajo más generalizado para construir un modelo usando optimización por mínimos cuadrados (minimización del RSS).
Para ayudarte a empezar, hemos precargado los datos con x_data, y_data = load_data() y los hemos guardado en un DataFrame de pandas con los nombres de columna x_column y y_column usando df = pd.DataFrame(dict(x_column=x_data, y_column=y_data))
Este ejercicio forma parte del curso
Introducción al modelado lineal en Python
Instrucciones del ejercicio
- Construye un modelo con
ols()usando la fórmulaformula="y_column ~ x_column"y los datosdata=df, y luego ajústalo a los datos con.fit(). - Usa
model_fit.predict()para obtener los valoresy_model. - Con la función proporcionada
plot_data_with_model(), superponey_datayy_model. - Extrae los parámetros del modelo
a0ya1desdemodel_fit.params. - Usa
compute_rss_and_plot_fit()para confirmar que estos resultados son coherentes con las fórmulas analíticas implementadas connumpy.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# Pass data and `formula` into ols(), use and `.fit()` the model to the data
model_fit = ols(____="y_column ~ x_column", ____=df).____()
# Use .predict(df) to get y_model values, then over-plot y_data with y_model
y_model = model_fit.____(df)
fig = plot_data_with_model(x_data, ____, ____)
# Extract the a0, a1 values from model_fit.params
a0 = model_fit.____['Intercept']
a1 = model_fit.____['x_column']
# Visually verify that these parameters a0, a1 give the minimum RSS
fig, rss = compute_rss_and_plot_fit(a0, a1)