Ajustar uma curva reduzindo os erros
Muitos modelos são curvas com poucos parâmetros, e ajustar significa escolher os parâmetros que deixam a curva perto dos dados. scipy.optimize.least_squares(fun, x0) faz isso. Você escreve fun(p), que devolve o vetor de resíduos, um por dado, em que o resíduo é o valor do modelo menos o valor observado. A função então minimiza o custo . Ela parte do seu palpite x0 e avança usando o jacobiano , a tabela de como cada resíduo muda quando cada parâmetro muda. Um passo de Gauss–Newton resolve e depois move os parâmetros em . Para um modelo linear nos parâmetros, um único passo cai na resposta. bounds=(baixo, alto) mantém os parâmetros numa faixa razoável. curve_fit é um invólucro mais amigável que recebe direto o modelo .
Erros ao quadrado deixam um ponto louco dominar: um resíduo de conta . Uma perda robusta cresce mais devagar para resíduos grandes. Com loss='soft_l1' e f_scale=1 a penalidade é , em que é o resíduo ao quadrado. O ajuste de curvas de juros é o uso clássico. A curva de Nelson–Siegel é . Ela tem um nível de longo prazo , uma inclinação , uma corcova e um comprimento de decaimento em anos, e quatro números descrevem a curva inteira. Após o ajuste, o nível de ruído é estimado por , com pontos e parâmetros.
soft_l1. Em dados reais, uma curva de Nelson–Siegel ajustada por least_squares aos dez rendimentos do Tesouro de 9 de outubro de 2026 (3 meses a 30 anos) tem nível de , inclinação de (a curva sobe com o prazo) e anos, e erra os rendimentos cotados em apenas pontos-base em média e no pior caso. Ajustar parâmetros a pontos com deixa graus de liberdade e .- Resíduos na entrada, parâmetros na saída:
fun(p)devolve modelo menos dados eleast_squaresreduz a soma dos quadrados. - Perda robusta para atípicos:
soft_l1impede que um ponto louco arraste a curva inteira. - Quatro números para uma curva: Nelson–Siegel resume uma curva de juros com um nível, uma inclinação, uma corcova e um comprimento de decaimento.
Lab: o que é avaliado
- Uma inclinação pela origem10 pts
- Um passo de Gauss–Newton15 pts
- Uma penalidade robusta15 pts
- O nível de ruído após um ajuste10 pts
- Os argumentos de least_squares10 pts
- Um fluxo de ajuste de curva10 pts
- Por que uma perda robusta30 pts