¿Por qué es óptimo?
La función np.polyfit() que usaste para obtener los parámetros de regresión encuentra la pendiente y la intersección óptimas. Optimiza la suma de los cuadrados de los residuos, conocida como RSS (por residual sum of squares). En este ejercicio, representarás la función que se está optimizando, el RSS, frente al parámetro de pendiente a. Para ello, fija la intersección al valor que obtuviste en la optimización. Luego, traza el RSS frente a la pendiente. ¿Dónde es mínimo?
Este ejercicio forma parte del curso
Pensamiento estadístico en Python (Parte 2)
Instrucciones del ejercicio
- Especifica los valores de la pendiente para calcular el RSS. Usa
np.linspace()para obtener200puntos en el rango entre0y0.1. Por ejemplo, para obtener100puntos en el rango entre0y0.5, podrías usarnp.linspace()así:np.linspace(0, 0.5, 100). - Inicializa un array,
rss, para contener el RSS usandonp.empty_like()y el array que creaste arriba. La funciónempty_like()devuelve un array nuevo con la misma forma y tipo que un array dado (en este caso,a_vals). - Escribe un bucle
forpara calcular la suma del RSS de la pendiente. Pista: el RSS viene dado pornp.sum((y_data - a * x_data - b)**2). La variablebque calculaste en el ejercicio anterior ya está en tu espacio de nombres. Aquí,fertilityesy_dataeilliteracyesx_data. - Representa el RSS (
rss) frente a la pendiente (a_vals). - Pulsa Submit para ver la gráfica.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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()