Mínimos Quadrados: mudanças entre as edições
Linha 17: | Linha 17: | ||
Sendo que um experimento foi realizado e temos <math>N</math> 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 <math>\epsilon_i</math>, que é definido como a distância entre o ponto experimental e a curva (reta neste caso) teórica que desejamos ajustar, ou seja, | Sendo que um experimento foi realizado e temos <math>N</math> 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 <math>\epsilon_i</math>, que é definido como a distância entre o ponto experimental e a curva (reta neste caso) teórica que desejamos ajustar, ou seja, | ||
:<math>\epsilon_i = | :<math>\epsilon_i = y_i - f(x_i)</math> , | ||
onde | onde | ||
Linha 33: | Linha 33: | ||
:<math>S = \sum_{i=1}^N \epsilon_i^2</math>, | :<math>S = \sum_{i=1}^N \epsilon_i^2</math>, | ||
assim | assim | ||
:<math>S = \sum_{i=1}^N [ | :<math>S = \sum_{i=1}^N [y_i - f(x_i)]^2 = \sum_{i=1}^N [y_i - f(x_i;\alpha_0,\alpha_1)]^2 </math>. | ||
Para obter a melhor reta que se ajusta aos dados experimentais, temos que minimizar <math>S</math> em relação às constantes da função <math>(\alpha_0,\alpha_1)</math>: | Para obter a melhor reta que se ajusta aos dados experimentais, temos que minimizar <math>S</math> em relação às constantes da função <math>(\alpha_0,\alpha_1)</math>: | ||
Linha 41: | Linha 41: | ||
Como a reta possui apenas dois coeficientes, para o ajuste linear temos duas equações: | Como a reta possui apenas dois coeficientes, para o ajuste linear temos duas equações: | ||
:<math>\frac{\partial S}{\partial \alpha_0} = \frac{\partial}{\partial \alpha_0}\sum_{i=1}^N [ | :<math>\frac{\partial S}{\partial \alpha_0} = \frac{\partial}{\partial \alpha_0}\sum_{i=1}^N [y_i - (\alpha_0 + \alpha_1x_i)]^2 = 0</math> | ||
e | e | ||
:<math>\frac{\partial S}{\partial \alpha_1} = \frac{\partial}{\partial \alpha_1}\sum_{i=1}^N [ | :<math>\frac{\partial S}{\partial \alpha_1} = \frac{\partial}{\partial \alpha_1}\sum_{i=1}^N [y_i - (\alpha_0 + \alpha_1x_i)]^2 = 0</math> . | ||
Derivando as equações acima, temos que | Derivando as equações acima, temos que | ||
:<math>\sum_{i=1}^N | :<math>\sum_{i=1}^N y_i - \sum_{i=1}^N \alpha_0 - \sum_{i=1}^N \alpha_1x_i = 0</math> | ||
e | e | ||
:<math>\sum_{i=1}^N | :<math>\sum_{i=1}^N y_ix_i - \sum_{i=1}^N \alpha_0x_i - \sum_{i=1}^N \alpha_1x_i^2 = 0</math> . | ||
Assim, | Assim, | ||
:<math>\alpha_0\underbrace{\sum_{i=1}^N 1}_N + \alpha_1\underbrace{\sum_{i=1}^N | :<math>\alpha_0\underbrace{\sum_{i=1}^N 1}_N + \alpha_1\underbrace{\sum_{i=1}^N x_i}_X = \underbrace{\sum_{i=1}^N y_i}_Y </math> | ||
e | e | ||
:<math>\alpha_0\underbrace{\sum_{i=1}^N | :<math>\alpha_0\underbrace{\sum_{i=1}^N x_i}_X + \alpha_1\underbrace{\sum_{i=1}^N x_i^2}_{X^2} = \underbrace{\sum_{i=1}^N y_ix_i}_{YX}</math> . | ||
Lembre-se de que os valores <math> | Lembre-se de que os valores <math>x_i</math> e <math>y_i</math> são conhecidos (são dados do problema). Desse modo, terminamos com um sistema linear para resolver, que na notação matricial fica | ||
:<math>\begin{pmatrix}N & X \\ X & X^2\end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \end{pmatrix} = \begin{pmatrix} Y \\ YX \end{pmatrix}</math> . | :<math>\begin{pmatrix}N & X \\ X & X^2\end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \end{pmatrix} = \begin{pmatrix} Y \\ YX \end{pmatrix}</math> . | ||
Linha 63: | Linha 63: | ||
Cuidado com o fato que <math>(X^2 \neq X*X)</math> e <math>(YX \neq Y*X)</math>. 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). | Cuidado com o fato que <math>(X^2 \neq X*X)</math> e <math>(YX \neq Y*X)</math>. 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= | =Equação quadrática= |
Edição das 11h40min de 4 de julho de 2018
Este o nome que se da ao ajuste ou fitting de uma função (polinômio) a um conjunto de dados.
Se com 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
Sendo que um experimento foi realizado e temos 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 , que é definido como a distância entre o ponto experimental e a curva (reta neste caso) teórica que desejamos ajustar, ou seja,
- ,
onde
é 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 . Isto poderia ser feito minimizando módulo de , mas como a função módulo tem uma descontinuidade, é mais fácil minimizar o quadrado do erro. Para isto, definimos:
- ,
assim
- .
Para obter a melhor reta que se ajusta aos dados experimentais, temos que minimizar em relação às constantes da função :
- .
Como a reta possui apenas dois coeficientes, para o ajuste linear temos duas equações:
e
- .
Derivando as equações acima, temos que
e
- .
Assim,
e
- .
Lembre-se de que os valores e são conhecidos (são dados do problema). Desse modo, terminamos com um sistema linear para resolver, que na notação matricial fica
- .
Cuidado com o fato que e . 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
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
- .
Desse modo, a soma do quadrado do erro fica
- .
Após algumas contas, como feito na seção anterior, temos o sistema linear de 3 equações e 3 incógnitas para resolver:
- .
Fique atento ao fato de que
- .
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 . Assim, a função será descrita por
e a soma dos quadrados do erro é dada por
- .
Ao final do procedimento, teremos um sistema linear de equações e incógnitas para resolver. O resultado deste sistema são os coeficientes : que compõem o polinômio que melhor se ajusta aos dados experimentais.
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:
- ,
definimos uma nova função :
- .
Assim, recaímos no problema do ajuste linear recém visto:
- , com e .
Exponencial 2
Se a função exponencial for do tipo:
- ,
supondo , definimos:
- .
Assim, como no caso anterior, voltamos para o problema de ajuste linear:
- ,
com e .
Algébrica
Se a função for do tipo:
- ,
com e , definimos:
- .
e assim
- ,
onde e . Note também que os valores de x devem ser transformados em 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 como o peso associado ao ponto , gostaríamos que ele seja maior quanto menor for o erro associado a este ponto. Se é o erro associado a este ponto, e considerando que o ajuste proposto é tal que minimiza a distância quadrática, podemos definir então como:
E o resíduo , para o cálculo do ajuste ponderado, será dada por:
Aplicando o mesmo procedimento anterior para minimizar , obtemos as equações
E, portanto, os valores de e são:
com :
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 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 e , onde só os segundos são considerados como fonte de erro. Assim para ver como o erro neles propaga-se para os coeficientes, escrevemos:
pois só os termos com y contribuem para a derivada. e como os aparecem somados, ao derivar respeito do i-esimo sobra apenas o que multiplica ele
Para incluir o efeito do erro de cada y_i deveriamos somar i de 1 a N, mas como o erro pode ser para mais o menos fazemos uma media quadrática deles:
onde:
o somatório fica:
e com mais algumas simplificações chegamos a simples relação:
Analogamente para o b (que resulta ser mais fácil), se chega a:
Podemos interpretar essa expressões no caso sem ponderar, ou seja quando todos os erros são iguais:
onde
resultando:
Por tanto, três fatores determinam a qualidade do ajuste:
- E erro das medidas () que deve ser minimizado, porem está geralmente limitado pelo instrumento utililizado
- O número de medidas , quanto maior, melhor, porem vemos que o erro dos coeficientes diminui com a raiz dele
- Por último, a dispersão da viariável dependente x () também, quanto maior, melhor
Por último, consideremos o caso mais simples, ajuste sem ponderar e sem informação sobre , apenas pares de dados {}. Nesse caso podemos estimar o valor de pelo assim:
Pois o resíduo pode ser interpretado como o somatório dos erros de cada ponto, tomados como a distancia entre a medida e o ajuste. O em lugar de , é pelo fato de que o ajuste já contem dois parâmetros ( e obtidos dos dados, então os erros individuais não são todos independentes.