Ajuste de Curvas Regressão -...

Post on 11-Feb-2019

226 views 1 download

Transcript of Ajuste de Curvas Regressão -...

Ajuste de Curvas

Regressão

Computação – 2º Semestre 2016/2017

Ajuste de Curvas

Quando apenas sabemos alguns valores de uma função contínua e queremos estimar outros valores intermédios

Quando queremos obter uma versão simplificada de uma função complexa

Exemplos de aplicações em Ciência e Engenharia para o ajuste de curvas aos dados experimentais:

Análise de tendências: usar a curva obtida para fazer previsões para valores não obtidos experimentalmente

Teste de hipóteses: verificar a correcção de um modelo matemático ou ajustar os seus parâmetros de acordo com os dados experimentais

29 Maio 2017 Ajuste de Curvas – Regressão Linear

Ajuste de Curvas

Dois tipos de abordagens que dependem dos erros

associados aos dados disponíveis:

Regressão: se o erro nos dados é significativo procurar uma curva

que represente todos os pontos sem ter que os intersectar

Interpolação: se os dados são exactos procurar uma curva que

passe por todos os pontos

3Ajuste de Curvas – Regressão Linear9 Maio 2017

Estatística Descritiva

Objectivo: Descrever um conjunto de dados de forma sucinta

Exemplo: foram feitas 24 medidas de uma quantidade

Medidas de tendência central

Média Aritmética: soma dos valores individuais (yi) a dividir pelo seu

número n:

Mediana: o ponto médio de um conjunto ordenado de dados.

Moda: o valor que ocorre mais frequentemente.

y yi

n

4Ajuste de Curvas – Regressão Linear9 Maio 2017

Estatística Descritiva

Medidas de dispersão

Desvio Padrão:

em que St é a soma do quadrado dos residuos:

Variância:

Coeficiente de variação:

sy St

n 1

St yi y 2

sy

2 yi y

2

n1

yi

2 yi 2

/nn1

c.v. sy

y 100%

5Ajuste de Curvas – Regressão Linear9 Maio 2017

Estatística Descritiva

Exemplo:

6.624

4.158

n

yy

i

6Ajuste de Curvas – Regressão Linear

1

2

n

yys

i

y

097133.0124

217.0

22 )097133.0(ys

009435.0

c.v. sy

y 100%

%47.1%1006.6

097133.0

9 Maio 2017

Estatística Descritiva

Distribuição dos dados

Histograma: representação visual das frequências de ocorrência

dos valores

Se distribuídos de acordo com a Distribuição Normal:

7Ajuste de Curvas – Regressão Linear

%95]2,2[%68],[

yy

yy

sysysysy %95]794266.6,405734.6[

9 Maio 2017

Estatística Descritiva no MATLAB

O MATLAB tem várias funções pré-definidas de estatística descritiva. Se s é um vector coluna: mean(s), median(s), mode(s)

Calcula a média, a mediana, e a moda de s.

min(s), max(s)

Calcula o valor mínimo e o valor máximo em s.

var(s), std(s)

Calcula a variância e o desvio padrão de s

Se o argumento s é uma matriz o resultado é calculado para cada coluna.

8Ajuste de Curvas – Regressão Linear9 Maio 2017

Histogramas em MATLAB

[n, x] = hist(s, x)

Determina o número de elementos em cada intervalo de dados em s.

x é um vector com os valores centrais dos intervalos.

[n, x] = hist(s, m)

Determina o número de elementos em cada intervalo de dados em s.

m é o número de intervalos usado. Por omissão: m=10

hist(s, x), hist(s, m), hist(s)

Sem argumentos de saída produz o gráfico.

9Ajuste de Curvas – Regressão Linear9 Maio 2017

Estatística Descritiva

exemplo: >> s=[6.395 6.435 6.485 6.495 6.505 6.515

6.555 6.555 6.565 6.575 6.595 6.605

6.615 6.625 6.625 6.635 6.655 6.655

6.665 6.685 6.715 6.715 6.755 6.775]';

>> format short g

>> mean(s), median(s), mode(s)

ans =

6.6

ans =

6.61

ans =

6.555

10Ajuste de Curvas – Regressão Linear9 Maio 2017

Estatística Descritiva

exemplo: >> min(s),max(s)

ans =

6.395

ans =

6.775

>> range=max(s)-min(s)

range =

0.38

>> var(s),std(s)

ans =

0.0094348

ans =

0.097133

11Ajuste de Curvas – Regressão Linear9 Maio 2017

Estatística Descritiva

exemplo: >> [n,x] =hist(s)

n =

1 1 3 1 4 3 5 2 2 2

x =

6.414 6.452 6.49 6.528 6.566 6.604 6.642 6.68 6.718 6.756

>> hist(s)

12Ajuste de Curvas – Regressão Linear9 Maio 2017

Números Aleatórios em MATLAB

r = rand(m, n)

Gera uma matriz mn de números aleatórios uniformemente distribuídos entre 0 e 1.

r = a + (b-a)*rand(m, n)

Gera uma matriz mn de números aleatórios uniformemente distribuídos entre a e b.

r = randn(m, n)

Gera uma matriz mn de números aleatórios de acordo com uma distribuição normal com média 0 e desvio padrão 1.

r = med + s*randn(m, n)

Gera uma matriz mn de números aleatórios de acordo com uma distribuição normal com média med e desvio padrão s.

13Ajuste de Curvas – Regressão Linear9 Maio 2017

Números Aleatórios em MATLAB

Exemplo: bungee jumper

Sabe-se que:

g=9.81 m/s2, m=68.1 kg

Usar a função rand para gerar 1000 valores de cd uniformemente distribuídos entre 0.225 e 0.275 (0.25 kg/m 10%) e calcular a distribuição de velocidades para t=4 s

Usar a função randn para gerar 1000 valores de cd distribuídos de acordo com uma normal com média 0.25 e desvio padrão 0.01443 e calcular a distribuição de velocidades para t=4 s

14Ajuste de Curvas – Regressão Linear

t

m

gc

c

gmtv d

d

tanh

9 Maio 2017

Números Aleatórios em MATLAB

Exemplo: bungee jumper (distribuição uniforme) Escrever ficheiro uniformCd.m

clc,format short g

n=1000;t=4;m=68.1;g=9.81;

cd=0.25;cdmin=cd-0.025;cdmax=cd+0.025;

cdrand=cdmin+(cdmax-cdmin)*rand(n,1);

meancd=mean(cdrand),stdcd=std(cdrand)

subplot(2,1,1)

hist(cdrand),title('(a) Distribution of drag')

xlabel('cd (kg/m)')

vrand=sqrt(g*m./cdrand).*tanh(sqrt(g*cdrand/m)*t);

meanv=mean(vrand)

subplot(2,1,2)

hist(vrand),title('(b) Distribution of velocity')

xlabel('v (m/s)')

15Ajuste de Curvas – Regressão Linear9 Maio 2017

Números Aleatórios em MATLAB

Exemplo: bungee jumper (distribuição uniforme)

>> uniformCd

meancd =

0.24944

stdcd =

0.014162

meanv =

33.126

16Ajuste de Curvas – Regressão Linear9 Maio 2017

Números Aleatórios em MATLAB Exemplo: bungee jumper (distribuição normal)

Escrever ficheiro normalCd.m

clc,format short g

n=1000;t=4;m=68.1;g=9.81;

cd=0.25; stdev=0.01443;

cdrand=cd+stdev*randn(n,1);

meancd=mean(cdrand),stdevcd=std(cdrand),cvcd=stdevcd/meancd*100

subplot(2,1,1)

hist(cdrand),title('(a) Distribution of drag')

xlabel('cd (kg/m)')

vrand=sqrt(g*m./cdrand).*tanh(sqrt(g*cdrand/m)*t);

meanv=mean(vrand),stdevv=std(vrand),cvv=stdevv/meanv*100

subplot(2,1,2)

hist(vrand),title('(b) Distribution of velocity')

xlabel('v (m/s)')

17Ajuste de Curvas – Regressão Linear9 Maio 2017

Números Aleatórios em MATLAB

Exemplo: bungee jumper (distribuição normal)

>> normalCd

meancd =

0.25067

stdevcd =

0.014622

cvcd =

5.833

meanv =

33.102

stdevv =

0.29137

cvv =

0.88023

18Ajuste de Curvas – Regressão Linear9 Maio 2017

Regressão Linear

Ajustar uma linha recta a um conjunto de pares de

observações: (x1, y1), (x2, y2),…,(xn, yn).

y=a0+a1x+e

Em que:

a1- slope

a0- intercept

e- erro (resíduo) entre o modelo e as observações

19Ajuste de Curvas – Regressão Linear9 Maio 2017

Regressão Linear

Ajustar uma linha recta a um conjunto de pares de

observações: (x1, y1), (x2, y2),…,(xn, yn).

y=a0+a1x+e → e=y a0 a1x

Critérios: Minimizar a soma dos erros residuais

Inadequado: os erros positivos compensam os erros negativos (ambas as linhas minimizam o critério)

20Ajuste de Curvas – Regressão Linear

n

i

ioi

n

i

i xaaye1

1

1

)(

9 Maio 2017

Regressão Linear

Ajustar uma linha recta a um conjunto de pares de

observações: (x1, y1), (x2, y2),…,(xn, yn).

y=a0+a1x+e → e=y a0 a1x

Critérios: Minimizar a soma do valor absoluto dos erros

Inadequado: não determina uma única linha (qualquer linha entre as tracejadas minimiza o critério)

21Ajuste de Curvas – Regressão Linear

n

i

ioi

n

i

i xaaye1

1

1

9 Maio 2017

Regressão Linear

Ajustar uma linha recta a um conjunto de pares de

observações: (x1, y1), (x2, y2),…,(xn, yn).

y=a0+a1x+e → e=y a0 a1x

Critérios: Minimizar o erro máximo

Inadequado: um grande erro num ponto compromete o resultado (a linha tracejada minimiza o critério)

22Ajuste de Curvas – Regressão Linear9 Maio 2017

Regressão Linear

Ajustar uma linha recta a um conjunto de pares de

observações: (x1, y1), (x2, y2),…,(xn, yn).

y=a0+a1x+e → e=y a0 a1x

Critérios: Minimizar a soma dos quadrados dos erros

Tem sempre uma única solução!

Denominado: Método dos Mínimos Quadrados

23Ajuste de Curvas – Regressão Linear

Sr ei

2

i1

n

yi a0 a1xi 2

i1

n

9 Maio 2017

Método dos Mínimos Quadrados

Minimizar a soma dos quadrados dos erros

Mínimo quando as derivadas se anulam:

24Ajuste de Curvas – Regressão Linear

Sr ei

2

i1

n

yi a0 a1xi 2

i1

n

0)(2

0)(2

1

1

1

iioir

ioi

o

r

xxaaya

S

xaaya

S ii xaay 10

0

2

100 iiii xaxaxy

ii yaxan 10

iiii yxaxax 1

2

0

xaya

xxn

yxyxna

ii

iiii

10

221

valores médios

9 Maio 2017

Método dos Mínimos Quadrados

Exemplo: dados experimentais para medir como a força de resistência do ar depende da velocidade

25Ajuste de Curvas – Regressão Linear9 Maio 2017

Método dos Mínimos Quadrados

Exemplo: dados experimentais para medir como a força de resistência do ar depende da velocidade

26Ajuste de Curvas – Regressão Linear9 Maio 2017

Método dos Mínimos Quadrados

Exemplo: dados experimentais para medir como a força de resistência do ar depende da velocidade

27Ajuste de Curvas – Regressão Linear9 Maio 2017

Método dos Mínimos Quadrados

(a) dispersão de dados à volta da média da variável dependente

(b) dispersão de dados à volta da linha obtida por regressão

A redução da dispersão representa a melhoria na explicação dos

dados obtida pela regressão linear.

28Ajuste de Curvas – Regressão Linear9 Maio 2017

Método dos Mínimos Quadrados

Medida de dispersão para a variável dependente:

Desvio Padrão: em que

Na regressão o resíduo representa a distância vertical entre o observado e a linha recta:

Assumindo uma distribuição

normal do erro da estimativa

“Desvio Padrão” da regressão:

sy St

n 1

St yi y 2

29Ajuste de Curvas – Regressão Linear

n

i

ii

n

i

ir xaayeS1

2

10

1

2

sy / x Sr

n 29 Maio 2017

Método dos Mínimos Quadrados

St é a soma dos quadrados à volta da média da variável dependente

Sr é a soma dos quadrados dos resíduos à volta da linha de regressão

St-Sr quantifica a redução do erro obtida pela descrição dos dados com a linha de regressão em vez da descrição com o valor médio.

O coeficiente de determinação r2 é dado por:

r2 representa a percentagem da incerteza original explicada pelo modelo.

Para um ajuste perfeito, Sr=0 e r2=1.

Se r2=0, não há melhorias relativamente à simples escolha da média.

Se r2<0, o modelo é pior que a simples escolha da média!

r2 St Sr

St

30Ajuste de Curvas – Regressão Linear

(r – coeficiente de correlação)

9 Maio 2017

Método dos Mínimos Quadrados

(a) regressão linear com um coeficiente de determinação maior

(b) regressão linear com um coeficiente de determinação menor

31Ajuste de Curvas – Regressão Linear9 Maio 2017

Método dos Mínimos Quadrados

Exemplo: dados experimentais para medir como a força de resistência do ar depende da velocidade

32Ajuste de Curvas – Regressão Linear

(melhorou!)

(88% da incerteza original é explicada pelo modelo)

9 Maio 2017

Linearização de Relações Não Lineares

A Regressão Linear assume a linearidade entre as

variáveis dependente e independente

No entanto, nem sempre é o caso!

Exemplo:

x

xy

xy

ey x

3

3

2

1

:limitado ocresciment

:potência

:lexponencia

2

1

33Ajuste de Curvas – Regressão Linear9 Maio 2017

Linearização de Relações Não Lineares

Em certos casos é possível linearizar o modelo:

xyx

xy

xyxy

xyey x

111:limitado ocresciment

loglog log:potência

ln ln:lexponentia

oLinearizadlinear NãoModelo

3

3

33

3

222

111

2

1

34Ajuste de Curvas – Regressão Linear9 Maio 2017

Linearização de Relações Não Lineares

35Ajuste de Curvas – Regressão Linear9 Maio 2017

Linearização de Relações Não Lineares

Exemplo: dados experimentais para medir como a força de resistência do ar depende da velocidade (modelo potência)

36Ajuste de Curvas – Regressão Linear9 Maio 2017

Linearização de Relações Não Lineares

Exemplo: dados experimentais para medir como a força de resistência do ar depende da velocidade (modelo potência)

37Ajuste de Curvas – Regressão Linear

xyxy loglog log 2222

9842.12741.0 xy

9 Maio 2017

Função linregr

38Ajuste de Curvas – Regressão Linear

function [a, r2] = linregr(x,y)

% linregr: linear regression curve fitting

% [a, r2] = linregr(x,y): Least squares fit of straight

% line to data by solving the normal equations

% input:

% x = independent variable

% y = dependent variable

% output:

% a = vector of slope, a(1), and intercept, a(2)

% r2 = coefficient of determination

n = length(x);

if length(y)~=n, error('x and y must be same length'); end

9 Maio 2017

Função linregr

39Ajuste de Curvas – Regressão Linear

x = x(:); y = y(:); % convert to column vectors

sx = sum(x); sy = sum(y);

sx2 = sum(x.*x); sxy = sum(x.*y); sy2 = sum(y.*y);

a(1) = (n*sxy-sx*sy)/(n*sx2-sx^2);

a(2) = sy/n-a(1)*sx/n;

r2 = ((n*sxy-sx*sy)/sqrt(n*sx2-sx^2)/sqrt(n*sy2-sy^2))^2;

% create plot of data and best fit line

xp = linspace(min(x),max(x),2);

yp = a(1)*xp+a(2);

plot(x,y,'o',xp,yp)

grid on

9 Maio 2017

Função linregr

Exemplo: dados experimentais para medir como a força de resistência do ar depende da velocidade (modelo linear)

>> x = [10 20 30 40 50 60 70 80];

>> y = [25 70 380 550 610 1220 830 1450];

>> [a, r2] = linregr(x,y)

a =

19.4702 -234.2857

r2 =

0.8805

40Ajuste de Curvas – Regressão Linear9 Maio 2017

Função linregr

Exemplo: dados experimentais para medir como a força de resistência do ar depende da velocidade (modelo potência)

>> [a, r2] = linregr(log10(x),log10(y))

a =

1.9842 -0.5620

r2 =

0.9481

41Ajuste de Curvas – Regressão Linear9 Maio 2017

Função pré-definida polyfit

A função pré-definida polyfit usa o método dos

mínimos quadrados para ajustar um polinómio de grau n:

p = polyfit(x, y, n)

x: dados da variável independente

y: dados da variável dependente

n: ordem do polinómio

p: coeficientes do polinómio

f(x)=p1xn+p2x

n-1+…+pnx+pn+1

O comando polyval pode ser usado para calcular um

valor com os coeficiente do polinómio obtidos.

y = polyval(p, x)

42Ajuste de Curvas – Regressão Linear9 Maio 2017

Função linregr

Exemplo: dados experimentais para medir como a força de resistência do ar depende da velocidade (modelo linear)

>> x = [10 20 30 40 50 60 70 80];

>> y = [25 70 380 550 610 1220 830 1450];

>> a = polyfit(x,y,1)

a =

19.4702 -234.2857

>> y = polyval(a,45)

y =

641.8750

43Ajuste de Curvas – Regressão Linear9 Maio 2017

Regressão Polinomial

O método dos mínimos quadrados pode ser usado para o ajuste de um polinómio de ordem superior.

A ideia é minimizar a soma dos quadrados dos erros residuais.

Exemplo do ajuste de:a) Um polinómio de primeiro grau

b) Um polinómio de segundo grau

44Ajuste de Curvas – Regressão Não Linear9 Maio 2017

Regressão Polinomial

Para um polinómio de segundo grau, minimizar:

Encontrar os zeros das derivadas:

Resolver o sistema equações lineares de 33:

Sr ei

2

i1

n

yi a0 a1xi a2xi

2 2

i1

n

45Ajuste de Curvas – Regressão Não Linear9 Maio 2017

Regressão Polinomial

Em geral, minimizar:

corresponde a resolver um sistema de equações lineares m+1m+1

O “Desvio Padrão” para o ajuste de um polinómio de ordem m a n pontos é:

O coeficiente de determinação r2 é:

Sr ei

2

i1

n

yi a0 a1xi a2xi

2 amxi

m 2

i1

n

sy / x Sr

n m1

r2 St Sr

St

46Ajuste de Curvas – Regressão Não Linear9 Maio 2017

Regressão Polinomial

Exemplo: ajustar um polinómio de 2º grau aos dados das 2 primeiras colunas da tabela seguinte

Resolver o sistema equações lineares de 33:

47Ajuste de Curvas – Regressão Não Linear9 Maio 2017

Regressão Polinomial

Exemplo: ajustar um polinómio de 2º grau aos dados das 2 primeiras colunas da tabela seguinte

Correspondendo ao sistema equações lineares de 33:

48Ajuste de Curvas – Regressão Não Linear9 Maio 2017

Regressão Polinomial

Exemplo: ajustar um polinómio de 2º grau aos dados

das 2 primeiras colunas da tabela seguinte>> N = [6 15 55;15 55 225;55 225 979];

>> r = [152.6 585.6 2488.8];

>> a = N\r

a =

2.4786

2.3593

1.8607

Resultando o polinómio:

49Ajuste de Curvas – Regressão Não Linear9 Maio 2017

Regressão Não Linear

Nem todas os modelos podem ser representados por equações lineares de coeficientes e funções básicas. Ex:

Uma solução consiste em transformar as variáveis e resolver o problema de regressão linear resultante. Desvantagens: Nem todas as equações podem ser transformadas

A solução obtida corresponde ao melhor ajuste para as variáveis transformadas e não para as variáveis originais.

A alternativa é usar regressão não linear para determinar directamente o ajuste que minimiza a soma dos quadrados dos erros residuais.

50Ajuste de Curvas – Regressão Não Linear9 Maio 2017

Regressão Não Linear em MATLAB

Escrever uma função que calcule a soma dos quadrados dos

erros residuais.

Usar a função pré-definida fminsearch para encontrar os

valores dos coeficientes que minimizam a função anterior.

51Ajuste de Curvas – Regressão Não Linear9 Maio 2017

Linearização de Relações Não Lineares

Exemplo: dados experimentais para medir como a força de resistência do ar depende da velocidade (modelo potência)

52Ajuste de Curvas – Regressão Linear

xyxy loglog log 2222

9842.12741.0 xy

9 Maio 2017

Regressão Não Linear em MATLAB

Exemplo: dados experimentais para medir como a força de resistência do ar depende da velocidade (modelo potência)

Escrever no ficheiro fSSR.m:

function f = fSSR(a,xm,ym)

yp = a(1)*xm.^a(2);

f = sum((ym-yp).^2);

Introduzir os dados para ajustar:

>> x = [10 20 30 40 50 60 70 80];

>> y = [25 70 380 550 610 1220 830 1450];

Resolver o problema de minimização:

fminsearch(@fSSR, [1, 1], [], x, y)

ans =

2.5384 1.4359

Resultado:

1

0

axay

53Ajuste de Curvas – Regressão Não Linear

4359.15384.2 xy

9 Maio 2017

Regressão Não Linear em MATLAB

Os coeficientes obtidos maximizam o coeficiente de

determinação r2 e podem ser diferentes dos obtidos por

transformação:

54Ajuste de Curvas – Regressão Não Linear9 Maio 2017