Mínimos Quadrados

De Física Computacional
Ir para navegação Ir para pesquisar


Este o nome que se da ao ajuste ou fitting de uma função (polinômio) a um conjunto de dados.

Se (Xi,Yi) com i=1,N representam o conjunto de dados (N) obtidos de um experimento (instrumento) ou de uma observação (por exemplo, em pesquisa de opinião ou censo) ou de uma simulação numérica. E se suspeitamos que existe uma correlação entre os X (variável independente ou de entrada, controlada pelo experimento) e os Y (cuja dependência com X queremos testar), primeiro colocamos os pontos num gráfico para ver se o conjunto forma uma nuvem dispersa (quando não existe correlação aparente, isto é X e Y não conformam uma função), ou se existe correlação (os pontos parecem estar sobre alguma curva).

Equação linear

Exemplo de ajuste linear para um conjunto de pontos.

Sendo que um experimento foi realizado e temos N pontos, como descrito acima, e consideramos que um ajuste linear é coerente, uma reta deve ser construída para melhor representar estes pontos. Como mostrado na figura a baixo, para cada ponto, teremos um erro ϵi, que é definido como a distância entre o ponto experimental e a curva (reta neste caso) teórica que desejamos ajustar, ou seja,

ϵi=yif(xi) ,

onde


f(x)=α0+α1x

é a função que representa a curva de melhor ajuste.

Para encontrar a reta que melhor se ajusta aos dados experimentais, desejamos minimizar o erro ϵ. Como o erro pode ter tanto valores negativos quanto positivos, o que importa é minimizar o valor absoluto de ϵi. Isto poderia ser feito minimizando módulo de ϵi, mas como a função módulo tem uma descontinuidade, é mais fácil minimizar o quadrado do erro. Para isto, definimos:

S=i=1Nϵi2,

assim

S=i=1N[yif(xi)]2=i=1N[yif(xi;α0,α1)]2.

Para obter a melhor reta que se ajusta aos dados experimentais, temos que minimizar S em relação às constantes da função (α0,α1):

Sαi=0.

Como a reta possui apenas dois coeficientes, para o ajuste linear temos duas equações:

Sα0=α0i=1N[yi(α0+α1xi)]2=0

e

Sα1=α1i=1N[yi(α0+α1xi)]2=0 .

Derivando as equações acima, temos que

i=1Nyii=1Nα0i=1Nα1xi=0

e

i=1Nyixii=1Nα0xii=1Nα1xi2=0 .

Assim,

α0i=1N1N+α1i=1NxiX=i=1NyiY

e

α0i=1NxiX+α1i=1Nxi2X2=i=1NyixiYX .

Lembre-se de que os valores xi e yi são conhecidos (são dados do problema). Desse modo, terminamos com um sistema linear para resolver, que na notação matricial fica

(NXXX2)(α0α1)=(YYX) .


Cuidado com o fato que (X2X*X) e (YXY*X). Após construir a matriz, resolva com o método que mais lhe agrade (ha diversos métodos de solução de sistemas lineares, tais como a Regra de Cramer ou a eliminação Gaussiana).

Equação quadrática

Exemplo de ajuste quadrático para um conjunto de pontos.

Utilizando o mesmo método descrito para um ajuste linear, considerando que o melhor ajuste para um conjunto de pontos seja uma curva proveniente de função quadrática, temos que a função é dada por

f(x)=α0+α1x+α2x2 .

Desse modo, a soma do quadrado do erro fica

S=i=1Nϵi2=i=1N[Yi(α0+α1Xi+α2Xi2)]2.

Após algumas contas, como feito na seção anterior, temos o sistema linear de 3 equações e 3 incógnitas para resolver:

(NXX2XX2X3X2X3X4)(α0α1α2)=(YYXYX2) .

Fique atento ao fato de que

X=i=1NXi,Y=i=1NYi,X2=i=1NXi2,X3=i=1NXi3,X4=i=1NXi4,YX=i=1NYiXieYX2=i=1NYiXi2 .


Polinômio de grau n

Generalizando o procedimento acima, apresentado para polinômios de grau 1 e 2, podemos ajustar um conjunto de pontos com um polinômio de um grau específico n. Assim, a função será descrita por

f(x)=α0+α1x+α2x2+α3x3+...+αnxn

e a soma dos quadrados do erro é dada por

S=i=1Nϵi2=i=1N[Yif(Xi;α0,α1,...,αn)]2.

Ao final do procedimento, teremos um sistema linear de n equações e n incógnitas para resolver. O resultado deste sistema são os coeficientes :α0,α1,α2..αn que compõem o polinômio que melhor se ajusta aos dados experimentais.

(NXX2XnXX2X3Xn+1X2X3X4Xn+2XnXn+1Xn+2X2n)(α0α1α2αn)=(YYXYX2YXn)


Outros tipos de funções

Dependendo do tipo de experimento, podem haver outras relações entre os pontos, como funções exponenciais.

Exponencial 1

Se os dados de um experimento se ajustarem bem a uma função exponencial do tipo:

f(x)=α1eα2x,α1,α2>0 ,

definimos uma nova função :

f2(x)=ln(f(x))=ln(α1eα2x)=ln(α1)α2x.

Assim, recaímos no problema do ajuste linear recém visto:

f2(x)=c1+c2x, com c1=ln(α1) e c2=α2.

Exponencial 2

Se a função exponencial for do tipo:

f(x)=α1α2x,

supondo f(x)>0, definimos:

f2(x)=ln(f(x))=ln(α1)+xln(α2).

Assim, como no caso anterior, voltamos para o problema de ajuste linear:

f2(x)=c1+c2x,

com c1=ln(α1) e c2=ln(α2).


Algébrica

Se a função for do tipo:

f(x)=α1xα2 ,

com f(x)>0 e x>0, definimos:

f2(x)=ln(f(x))=ln(α1)+α2ln(x).

e assim

f2(x)=c1+c2ln(x) ,

onde c1=ln(α1) e c2=α2. Note também que os valores de x devem ser transformados em ln(x) para ajustar os pontos.



Código FORTRAN

A seguir vemos uma possível implementação do método em linguagem F90.
Observem a simplicidade do mesmo:

 ! programa fortran para ajuste linear de conjunto de dados
 Implicit none
 Real :: xi,yi, x,y,xy,x2
 Real :: det,a,b

 n = 0;  x = 0;  y = 0;  xy = 0;  x2 = 0
 Do
    Read(*,*,end=100) xi,yi
    n = n + 1                          ! soma do numero de pontosd
    x  = x  + xi;      y =  y + yi     ! somatorio dos x e y
    x2 = x2 + xi**2;  xy = xy + xi*y   ! somatorio dos x**2 e x*y <- cuidado ha um erro aqui (compila mas ...
 End Do

 100 det = n*x2 - x**2
 a =  y*x2 - xy*x / det  ! <- outro erro aqui
 b = ...          / det  !    fica como exercicio

 print*, 'a=', a, 'b=', b
 end

Ajuste ponderado

Dependendo da situação, convém fazer um ajuste levando em conta o erro associado a cada ponto, i.e., atribuindo maior peso para pontos com um erro baixo e menor peso para os pontos onde o erro é sabidamente maior. Ou seja, se definirmos wi como o peso associado ao ponto (xi,yi), gostaríamos que ele seja maior quanto menor for o erro associado a este ponto. Se Syi é o erro associado a este ponto, e considerando que o ajuste proposto é tal que minimiza a distância quadrática, podemos definir então wi como:

wi=Syi2

E o resíduo χ2, para o cálculo do ajuste ponderado, será dada por:

χ2=i=1N(yiabxi)2wi

Aplicando o mesmo procedimento anterior para minimizar χ2, obtemos as equações

[a[w]+b[xw]=[yw]a[xw]+b[x2w]=[xyw]]

E, portanto, os valores de a e b são:

a=([yw][x2w][xyw][xw])/Δ

b=([w][xyw][xw][yw])/Δ

com Δ:

Δ=[w][x2w][xw]2

Erro dos coeficientes

Vimos como obter os coeficientes (a e b para uma reta) do ajuste de um conjunto de dados.
Também como fazer esse ajuste quando os erros na variável dependente y não são todos iguais.
Mas como saber se esses coeficientes são "bons". Ou seja, que margem de erro eles tem.
Intuitivamente sabemos que quanto maior seja a dispersão dos yi em volta da curva do ajuste, maior será nossa incerteza sobre os coeficientes.

Vamos ver como traduzir isso de forma quantitativa. Voltando as expressões dos coeficientes a e b, eles são funções de xi e yi, onde só os segundos são considerados como fonte de erro. Assim para ver como o erro neles propaga-se para os coeficientes, escrevemos:

a=a(yi)ayi=1Δyi{[yw][x2w][xyw][xw]}

ayi=1Δ{wi[x2w]xiwi[xw]}

Só os termos com y contribuem para a derivada. Como os yi aparecem somados, ao derivar respeito do i-esimo sobra apenas o que multiplica ele

Para incluir o efeito do erro de cada yi deveriamos somar i de 1 a N, mas como o erro pode ser para mais o menos fazemos uma media quadrática deles:

Δa=i=1N(ayiΔyi)2

onde: (ayiΔyi)2=1Δ2{wi2[x2w]2+xi2wi2[xw]22wi[x2w]xiwi[xw]}wi1

o somatório fica:

1Δ2i=1N(wi[x2w]2+xi2wi[xw]22[x2w]xiwi[xw])=1Δ2([w][x2w]2+[x2w][xw]22[x2w][xw][xw])


e com mais algumas simplificações chegamos a simples relação:

Δa=[x2w]Δ

Analogamente para o b (que resulta ser mais fácil), se chega a:

Δb=[w]Δ


Podemos interpretar essa expressões no caso sem ponderar, ou seja quando todos os erros são iguais:

w=1/(Δy)2

Δ=w2(N[x2][x]2)=(wNσ)2

onde σ2=<x2><x>2

resultando:

Δa=Δy<x2>σN

Δb=ΔyσN

Por tanto, três fatores determinam a qualidade do ajuste:

  • E erro das medidas (Δy) que deve ser minimizado, porem está geralmente limitado pelo instrumento utililizado
  • O número de medidas N, quanto maior, melhor, porem vemos que o erro dos coeficientes diminui com a raiz dele
  • Por último, a dispersão da viariável independente x (σ) também, quanto maior, melhor

Por último, consideremos o caso mais simples, ajuste sem ponderar e sem informação sobre Δy, apenas N pares de dados {xi,yi}. Nesse caso podemos estimar o valor de Δy pelo χ2 assim:

Δyχ2N2

Pois o resíduo χ2 pode ser interpretado como o somatório dos erros de cada ponto, tomados como a distancia entre a medida e o ajuste. O N2 em lugar de N, é pelo fato de que o ajuste já contem dois parâmetros (a e b obtidos dos dados, então os erros individuais não são todos independentes.