Como isso é ótimo?
A função np.polyfit() que você usou para obter os parâmetros da regressão encontra a inclinação e a interceptação ótimas. Ela otimiza a soma dos quadrados dos resíduos, também conhecida como RSS (de residual sum of squares). Neste exercício, você vai plotar a função que está sendo otimizada, o RSS, em função do parâmetro de inclinação a. Para isso, fixe a interceptação como o valor encontrado na otimização. Em seguida, faça o gráfico do RSS versus a inclinação. Onde ele é mínimo?
Este exercício faz parte do curso
Pensamento Estatístico em Python (Parte 2)
Instruções do exercício
- Especifique os valores da inclinação para calcular o RSS. Use
np.linspace()para obter200pontos no intervalo entre0e0.1. Por exemplo, para obter100pontos no intervalo entre0e0.5, você poderia usarnp.linspace()assim:np.linspace(0, 0.5, 100). - Inicialize um array,
rss, para conter o RSS usandonp.empty_like()e o array que você criou acima. A funçãoempty_like()retorna um novo array com o mesmo formato e tipo de um array dado (neste caso,a_vals). - Escreva um
forpara calcular a soma do RSS para a inclinação. Dica: o RSS é dado pornp.sum((y_data - a * x_data - b)**2). A variávelbque você calculou no último exercício já está no seu namespace. Aqui,fertilityé oy_dataeilliteracyé ox_data. - Faça o gráfico do RSS (
rss) versus a inclinação (a_vals). - Clique em Enviar para ver o gráfico!
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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()