Kleinste kwadraten met `statsmodels`
Verschillende Python-bibliotheken bieden handige, geabstraheerde interfaces, zodat je niet altijd expliciet met alle optimalisatiemechanismen van het model hoeft om te gaan.
Als voorbeeld ga je in deze oefening de bibliotheek statsmodels gebruiken in een meer high-level, generieke workflow om een model te bouwen met kleinste-kwadratenoptimalisatie (minimalisatie van RSS).
Om je op weg te helpen hebben we de data al ingeladen met x_data, y_data = load_data() en opgeslagen in een pandas DataFrame met kolomnamen x_column en y_column via df = pd.DataFrame(dict(x_column=x_data, y_column=y_data))
Deze oefening maakt deel uit van de cursus
Introductie tot lineaire modellering in Python
Oefeninstructies
- Bouw een model met
ols()met formuleformula="y_column ~ x_column"en datadata=df, en.fit()het vervolgens op de data. - Gebruik
model_fit.predict()om dey_model-waarden te krijgen. - Gebruik de meegeleverde functie
plot_data_with_model()omy_datasamen mety_modelte plotten. - Haal de modelparameters
a0ena1op uitmodel_fit.params. - Gebruik
compute_rss_and_plot_fit()om te bevestigen dat deze resultaten consistent zijn met de analytische formules die metnumpyzijn geïmplementeerd.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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)