En quoi est-ce optimal ?
La fonction np.polyfit() que vous avez utilisée pour obtenir vos paramètres de régression trouve la pente et l’ordonnée à l’origine optimales. Elle optimise la somme des carrés des résidus, également appelée RSS (pour residual sum of squares). Dans cet exercice, vous allez tracer la fonction qui est optimisée, le RSS, en fonction du paramètre de pente a. Pour ce faire, fixez l’ordonnée à l’origine à la valeur trouvée lors de l’optimisation. Ensuite, tracez le RSS en fonction de la pente. Où est-il minimal ?
Cet exercice fait partie du cours
Réflexion statistique en Python (Partie 2)
Instructions
- Indiquez les valeurs de la pente pour calculer le RSS. Utilisez
np.linspace()pour obtenir200points dans l’intervalle entre0et0.1. Par exemple, pour obtenir100points dans l’intervalle entre0et0.5, vous pourriez utilisernp.linspace()ainsi :np.linspace(0, 0.5, 100). - Initialisez un tableau,
rss, pour contenir le RSS en utilisantnp.empty_like()et le tableau que vous avez créé ci-dessus. La fonctionempty_like()renvoie un nouveau tableau ayant la même forme et le même type qu’un tableau donné (dans ce cas,a_vals). - Écrivez une boucle
forpour calculer la somme du RSS pour la pente. Indice : le RSS est donné parnp.sum((y_data - a * x_data - b)**2). La variablebque vous avez calculée à l’exercice précédent est déjà dans votre espace de noms. Ici,fertilitycorrespond ày_dataetilliteracyàx_data. - Tracez le RSS (
rss) en fonction de la pente (a_vals). - Cliquez sur Soumettre la réponse pour afficher le graphique !
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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()