Wie ist es optimal?
Die Funktion np.polyfit(), mit der du deine Regressionsparameter bestimmt hast, findet die optimale Steigung und den Achsenabschnitt. Sie minimiert die Summe der quadrierten Residuen, auch RSS (für residual sum of squares) genannt. In dieser Übung zeichnest du die zu optimierende Funktion, also die RSS, gegen den Steigungsparameter a. Fixiere dafür den Achsenabschnitt auf den in der Optimierung gefundenen Wert. Zeichne dann die RSS gegen die Steigung. Wo ist sie minimal?
Diese Übung ist Teil des Kurses
Statistical Thinking in Python (Teil 2)
Anleitung zur Übung
- Lege die Werte der Steigung fest, für die die RSS berechnet werden soll. Verwende
np.linspace(), um200Punkte im Bereich zwischen0und0.1zu erhalten. Um zum Beispiel100Punkte im Bereich zwischen0und0.5zu erzeugen, könntest dunp.linspace()so verwenden:np.linspace(0, 0.5, 100). - Initialisiere ein Array
rss, das die RSS aufnimmt, mitnp.empty_like()und dem oben erzeugten Array. Die Funktionempty_like()gibt ein neues Array mit derselben Form und demselben Typ wie ein gegebenes Array zurück (hiera_vals). - Schreibe eine
for-Schleife, um die Summe der RSS für die Steigung zu berechnen. Hinweis: Die RSS ist gegeben durchnp.sum((y_data - a * x_data - b)**2). Die Variableb, die du in der letzten Übung berechnet hast, befindet sich bereits in deinem Namespace. Hier istfertilitydasy_dataundilliteracydasx_data. - Zeichne die RSS (
rss) gegen die Steigung (a_vals). - Klicke auf Antwort senden, um den Plot zu sehen!
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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()