Regressão Por Mínimos quadráticos (não linear)

Esta página permite ajustar qualquer função até oito parâmetros a um conjunto de dados. Basta especificar a função, os dados (pontos), estimativas iniciais para os parãmetros. Ao pressionar o botão Iterar o programa JavaScript vai refinar essas estimativas para produzir o que será um melhor conjunto de parâmetros. Este processo é iterativo, e com boas estimativas iniciais (e boa sorte) converge para a solução dos mínimos quadráticos em cinco ou dez iterações. Este programa pode também ajustar curvas ao Valor-Mínimo-absoluto e curvas de Percentil (tendo especificado a fracção de pontos abaixo da curva).


Método:

A função a ajustar é desenvolvida em série de Taylor em torno das estimativas correntes dos parâmetros, sendo retidos os termos de primeira ordem (lineares) e o sistema de equações resultante é resolvido para o incremento nos parâmetros. O programa calcula aproximações de diferenças finitas para as derivadas parciais, e usa o algoritmo de eliminação para inverter e resolver o sistema. Obtêm-se estimativas por limite central do desvio padrão nos parâmetros a partir dos termos diagonais da matriz inversa da equação normal.

Os campos a seguir estão preenchidos com um exemplo: A temperatura de um copo de água quando arrefece a partir do ponto de ebulição normal até á temperatura ambiente durante uma hora. Utiliza-se

Temp = ( T0 - Tambiente ) * Exp( - k * Tempo ) + Tambiente


Instruções:

  1. número de pontos:
  2. número de variáveis independentes: (0 - 8; geralmente 1)
  3. número de parâmetros: (1 - 8)
  4. equação a ajustar:
    y =
    Deve assegurar-se que são seguidas as regras de sintaxe dadas abaixo. (Em particular não usar ^ para potênciação; deve usar a função Power.) Colocar a função a seguir ao sinal = sign (se ajustar  y=a+b*x, entrar apenas a+b*x na caixa). Para os parâmetros usar a, b, c, d, e, f, g, and h, ou p1, p2, p3, ..., p8. Não saltar letras na sequência (por exemplo para 3 parâmetros não usar a, c, e d). Se houver apenas uma variável indeendente designe-a por  x (or x1 or t); se houver mais que uma usar x1 (ou x ou t), x2, x3, ..., x8.
  5. entrar valores (ou colar)  dados [x,y]:

    Usar uma linha em separado para cada ponto. A variável independente (x) or variáveis (x1, x2, etc.) vêm primeiro, seguidas da vaiável independente (y), seguida (se a precisão fôr especificada) pelo erro padrão de y. Se a precição for especificada como Replicas), devem ser introduzidos vários valores de y. Os valores são separados or vírgulas. Pode copiar dados de outro programa como uma folha de cálculo e colar na janela acima. Pode ser dada como tab-delimited text (sem virgulas); o programa converte tabs para virgulas durante a primeira iteração.
  6. Pode como opções especificar a precisão em y (Std Error), xtransformações a aplicar en x e y, e realizar um ajustamento baseado no LMenor Valoe Absoluto.
  7. Entrar aqui as melhores estimativas iniciais para os parâmetros:
    a (or p1)= ± , p=
    b (or p2)=
    ± , p=
    c (or p3)=
    ± , p=
    d (or p4)= ±
    , p=
    e (or p5)= ±
    , p=
    f (or p6)= ±
    , p=
    g (or p7)= ±
    , p=
    h (or p8)= ±
    , p=
    Se houver mais que oito parâmetros colocar as caixas extra a zero. (Valores entrados nas caixas "extra" além do número especificado no passo3 estão disponíveis na fórmula mas não serão ajustados no processo iterativo.) Não colocar nada nas caixas á direita do sinal  ± ; é onde o programa coloca os erros nos parâmetros.
  8. Clicar neste botão  para um ciclo iterativo, e observe como os parãmetros mudam nas caixas acima. Reparar no RMS Error e na área Output abaixo.
    Se houver problemas de convrgência nos parãmetros, pode especificar o factor de ajustamento aqui:

    RMS Err = Desvio padrão da estimativa. Valores acima de 1 indicam mau ajustamento dentro dos erros inerentes ás variáveis.

    Observe que após cada iteração os valores calculados yc, das diferenças, do coeficiente de correlação e RMS de erro são todos baseados nos valores dos parâmetros obtidos na iteração anterior. Por isso, aconselha-se a clicar no botão Iterate mais uma vez, após alcançar convergência.
  9. Se os novos valores dos parâmetros parecer razoável, clicar novamente o botão Iterar, e continuar até corvergência nos parâmetros.
  10. Se lhe parecer que algum parâmetro diverge, entre um valor mais realista do mesmo e clicar Iterar.
  11. Para imprimir os resultados, copiar e colar o conteúdo da janela Output para o processador de texto ou editor e imprimir depois. 
  12. Pode também transfrir os resultados para folhas de cálculo como o Excel para representação gráfica.
    Pode utilizar o espaçador de saída  (caixa abaixo) e clicar em Iterar novamente.


Opções:

Pode invocar as seguintes opções. 

(Opcional) clicar aqui para  Espaçador de saída de resultados (conveniente para colar resultados em folhas de cálculo).

(Opcional) Especificar o Desvio padrão (Std Err) associado com a variável y:
Equal: Todos os pontos têm igual precisão;
Relative: Std Err de cada valor e y é proporcional à própria variável  y;
Counts: Std Err = raíz quadrada de  y; este procedimento é apropriado se y representa o # de ocorrências de algo (por exemp. desintegração radioactiva);
Data: Std Err especifica-se na janela da entrada de dados numa coluna separada de valores imediatamente a seguir aos valores de y;
Replicates: Se entrar vários vaores de y.
(When in doubt, choose Equal.)

(Opcional) Especifcar transformações a aplicar às variáveis dependentes e/ou variáveis independentes:

Um ajustador não linear não requer geralmente trasformação de variável. Mas as transformações podem tornar a função mais linear estabilizando o processo e ajustamento e de convergência mais rápida. O programa ajusta automaticamente os dados para compensar as transformações na variável y.

(Opcional -- Usar por conta e risco!) Clicar aqui para  Ajustamento com mínimo absoluto. Esta opção tenta minimizar a soma dos valores absolutos das diferenças (yo-yc), em vez da soma das diferenças ao quadrado. O ajustamento com mínimos absolutos está obdece á mesma relação que Least-Abs fitting bears the same relationship to Least Squares fitting that the median of a set of numbers bears to the mean. O ajustamento com mínimos absolutos é muito menos afectado por outliers que a curva Least Squares. Possui também a propriedade de 50% dos pontos se situarem acima da curva e outros 50% abaixo dela. Em alternativa  pode especificar a percentagem de pontos que se devem situar abaixo da curva  aqui: (um número maior que 0 e menor que 100). Este procedimento permite ajustar curvas de percentis aos seus dados!
A convergencia pode ser lenta e/ou erratica (parametros alternando around aimlessly).
Colocando o factor de ajustamento em 0.2 ou 0.5 pode-se (ou não) melhorar a convergência.
Uma curva com N parâmetros passa exactamente por N pontos.

Sintaxe:

Operadores: + - * / e parentesis (notar que não se utiliza ^ para potências; usar a função Power function, que é descrita a seguir)
Constantes: Pi [=3.14...], Grau [=180/Pi = 57.2...]
Expressões condicionais: (Condition) ? ValueIfTrue : ValueIfFalse
Funcões Built in... [Salvo indicação em contrário, todas as funções possuem um único argumento entre parentesis a seguir ao nome da função.]
Algebricas: Abs, Sqrt, Power(x,y) [= x levantado a y)], Fact [factorial], Min(x,y) [= o mínimo de x ou de y], Max(x,y) [= máximo de x ou de y]
Transcendentais: Exp, Ln [natural], Log10, Log2
Trigonometricas: Sin, Cos, Tan, Cot, Sec, Csc
Trig. Inversas: ASin, ACos, ATan, ACot, ASec, ACsc
Hiperbolicas: SinH, CosH, TanH, CotH, SecH, CscH
Hip inversas: ASinH, ACosH, ATanH, ACotH, ASecH, ACscH
Estatísticas: Norm, ChiSq(csq,df), StudT(t,df), FishF(F,df1,df2), Gauss, Erf
Esta. Inversas: ANorm, AChiSq(p,df), AStudT(p,df), AFishF(p,df1,df2)

Nota: A linguagem JavaScript é case-sensitive, por isso deve assegurar-se que entra os nomes das funções exactamente como acima referido.

Nota: Os argumentos das funções trig são radianos. Para graus, multiplicar ou dividir pela variável Deg. Por examplo: Sin(30/Deg) devolve 0.5, e ATan(1)*Deg devolve 45.

Nota: A função factorial está implementada para todos os númros reais. Para não inteiros a sua precisão é de seis algarismos significativos. Para inteiros negativos devolve um númro muito elevado ou um erro de divisão-por-zero (division-by-zero error).