ComenzarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Construye un modelo con ols() usando la fórmula formula="y_column ~ x_column" y los datos data=df, y luego ajústalo a los datos con .fit().
  • Usa model_fit.predict() para obtener los valores y_model.
  • Con la función proporcionada plot_data_with_model(), superpone y_data y y_model.
  • Extrae los parámetros del modelo a0 y a1 desde model_fit.params.
  • Usa compute_rss_and_plot_fit() para confirmar que estos resultados son coherentes con las fórmulas analíticas implementadas con numpy.

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)
Editar y ejecutar código