Quanto è ottimale?
La funzione np.polyfit() che hai usato per ottenere i parametri della regressione trova la pendenza e l'intercetta ottimali. Ottimizza la somma dei quadrati dei residui, anche detta RSS (Residual Sum of Squares). In questo esercizio traccerai la funzione che viene ottimizzata, l'RSS, in funzione del parametro di pendenza a. Per farlo, fissa l'intercetta al valore trovato nell'ottimizzazione. Poi, rappresenta l'RSS rispetto alla pendenza. Dove è minima?
Questo esercizio fa parte del corso
Pensiero statistico in Python (Parte 2)
Istruzioni dell'esercizio
- Specifica i valori della pendenza per calcolare l'RSS. Usa
np.linspace()per ottenere200punti nell'intervallo tra0e0.1. Per esempio, per ottenere100punti nell'intervallo tra0e0.5, potresti usarenp.linspace()così:np.linspace(0, 0.5, 100). - Inizializza un array,
rss, per contenere l'RSS usandonp.empty_like()e l'array creato sopra. La funzioneempty_like()restituisce un nuovo array con la stessa forma e lo stesso tipo di un array dato (in questo caso,a_vals). - Scrivi un ciclo
forper calcolare la somma dell'RSS in funzione della pendenza. Suggerimento: l'RSS è dato danp.sum((y_data - a * x_data - b)**2). La variabilebche hai calcolato nell'esercizio precedente è già nel tuo namespace. Qui,fertilityè loy_dataeilliteracylox_data. - Traccia l'RSS (
rss) rispetto alla pendenza (a_vals). - Premi Invia risposta per vedere il grafico!
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Specify slopes to consider: a_vals
a_vals = ____
# Initialize sum of square of residuals: rss
rss = ____
# Compute sum of square of residuals for each value of a_vals
for i, a in enumerate(a_vals):
rss[i] = ____((____ - a*____ - b)**2)
# Plot the RSS
plt.plot(____, ____, '-')
plt.xlabel('slope (children per woman / percent illiterate)')
plt.ylabel('sum of square of residuals')
plt.show()