Download - Regresii liniare
1
Regresii liniare
1. �oţiuni teoretice introductive
Se ştie ca teoretic, forţa de rezistenţă ce o întampină un obiect la mişcarea prin aer este:
2
3
Se pune problema gasirii unei curbe ce aproximează cât mai bine
datele obţinute experimental („norul de puncte”).
Metoda celor mai mici pătrate.
Fie curba y=f(x) = ax+b care aproximează norul de puncte. Se formează suma:
4
( )[ ]∑=
−=n
iii yxfS(a,b)
1
2
reprezentând suma pătratelor distanţelor de la punctele experimentale la punctele curbei y = f(x).
Dorim sa minimizăm pe S(a,b) Calculăm derivatele parţiale ale lui S în raport cu a şi b şi determinăm extremul funcţiei S(a, b) din sistemul de ecuaţii:
=∂
∂
=∂
∂
0
0
b
S(a,b)
a
S(a,b)
5
Verificăm dacă valorile determinate (a, b) reprezintă într-adevăr un minim pentru funcţia S. Se verifică inegalităţile:
∆ > 0; r >0.
Cu a şi b determinate trasăm drepta de ecuaţie y=ax+b care va trece “prin interiorul” norului de puncte astfel încât distanţa de la aceste puncte la dreptă să fie minimă.
∑=
−+=n
iii ybaxS
1
2)( .
)(2)(2111
2
1∑∑∑∑====
−+=−+=∂∂ n
iii
n
ii
n
ii
n
iiii yxxbxaybaxx
a
S
)(2)(2111∑∑∑===
−+=−+=∂
∂ n
ii
n
ii
n
iii ynbxaybax
b
S
Obţinem
6
∑∑∑===
=+n
iii
n
ii
n
ii yxxbxa
111
2
∑∑==
=+n
ii
n
ii ynbxa
11
unde necunoscutele sunt coeficienţii a şi b. Avem
2
11
2
111
−
−
=
∑∑
∑∑∑
==
===
n
ii
n
ii
n
ii
n
ii
n
iii
xxn
yxyxn
a , 2
11
2
1 11
2
1
−
+−
=
∑∑
∑ ∑∑∑
==
= ===
n
ii
n
ii
n
i
n
ii
n
ii
n
iiii
xxn
yxyxx
b
7
Pentru exemplul de mai sus căutăm o curbă de forma:
8
Observaţie: Rezultatele, cel putin pentru viteze mici, nu sunt corecte
deoarece avem valori negative ale forţei de rezistenţă.
9
Pentru a verifica „cât de bună” este aproximarea noastră introducem mărimile:
unde este media valorilor. Se calculează eroarea standard a estimaţiei
unde notaţia y/x semnifică faptul că eroarea se referă la o valoare preconizată a lui y corespunzând unei valori particulare a lui x. Numitorul n-2 semnifică faptul ca s-au pierdut două grade de libertate pentru calculul valorii lui Sr (prin determinarea coeficienţilor a0 şi a1).
10
Reamintim că abaterea medie pătratică dată de
măsoară dispersia datelor. Putem face o analogie între abaterea medie pătratică şi eroarea standard a estimaţiei:
11
Parametrul care ne indică „cât de bună” este aproximarea noastră este coeficientul de determinare
12
unde
este coeficientul de corelaţie. Cu cât coeficientul de determinare este mai aproape de 1, aproximarea noastră este mai bună. Pentru exemplul de mai sus avem
> şi atunci regresia liniară aproximează corect datele.
13
Putem spune că 88% din incertitudinile initiale sunt sunt explicate de acest model liniar. Totuşi nu ne putem baza doar pe calculul coeficientului de determinare, curba obţinută trebuie verificată şi vizual. În exmplele de mai jos, toate datele sunt aproximate cu aceeaşi dreaptă y =3 + 0.5x şi au acelaşi coeficient de determinare, r2 = 0.674.
14
15
2.Liniarizarea expresiilor neliniare (Steven C. Chapra, Applied $umerical Methods with MATLAB for Engineers and Scientists, 3rd ed, ISB$-13:978-0-07-340110-2 )
Există cazuri în care aproximarea datelor se face cu ajutorul unor curbe
neliniare. Pentru a obţine curba de regresie se fac transformări de
liniarizare a acestor curbe. Unele dintre cele mai folosite modele
neliniare sunt:
- Modelul exponenţial (creşterea populaţiilor, dezintegrarea radioactivă)
16
- Modelul de tip putere (model general, utilizat când nu se ştie forma modelului)
- Modelul de saturation growth rate (model utilizat în creşterea populaţiilor când există limitări ale creşterii)
17
18
Exemplu: Se ştie ca teoretic, forţa de rezistenţă ce o întampină un obiect la mişcarea prin aer este:
19
Interpolăm folosind o funcţie de tip putere:
Unde mediile sunt (vezi tabelul de mai jos)
Atunci
20
Obţinem
şi deci
21
22
Regresia liniară poate fi calculată cu
23
3.Generalizarea metodei celor mai mici pătrate.Regresie neliniară.
Regresie polinomială
24
Regresia liniară descrisă anterior se poate generaliza în cazul
polinoamelor. De exemplu, pentru un polinom de gradul doi avem:
Trebuie să minimizăm:
adică
25
Relaţiile de mai sus ne conduc la rezolvarea sistemului
din aflăm coeficienţii
Se poate face uşor o generalizare pentru:
Pentru un polinom de grad m (m+1 coeficienţi) eroarea standard este:
26
iar coeficientul de determinare este dat de:
unde
Exemplu: Gasiţi polinomul de ordinul doi ce aproximează datele din
tabelul de mai jos:
27
Avem:
Formăm sistemul:
28
Rezolvăm folosind Matlab
şi obţinem polinomul
pentru care
şi
Se obţine un coeficient de determinare foarte bun. Buna aproximare este confirmată vizual şi de figura următoare:
29
30
În Matlab regresia polinomială poate fi calculată folosind funcţia polyfit
p = polyfit(x,y,n)
unde
Exemplu
x = (0: 0.1: 2.5)';
y = erf(x);
p = polyfit(x,y,6)
p =
0.0084 -0.0983 0.4217 -0.7435 0.1471 1.1064 0.0004
31
3. Regresie liniară multidimensională
În mod natural se poate face o generalizare a regresiei linare în mai multe
dimensiuni. De exemplu, în R2 vom obţine un plan de regresie:
32
Trebuie să minimizăm:
ceea conduce la rezolvarea sistemului
33
Exemplu: Găsiţi planul de regresie pentru:
Avem de rezolvat
34
Regresia liniară multidimensională se poate generaliza astfel:
35
În Matlab regresia liniară multidimensională poate fi calculată folosind
funcţia regress
b = regress(y,X)
[b,bint] = regress(y,X)
[b,bint,r] = regress(y,X)
[b,bint,r,rint] = regress(y,X)
Exemplu
load carsmall
x1 = Weight;
x2 = Horsepower; % Contains NaN data
y = MPG;%mileage – numar de mile parcurse
36
Compute regression coefficients for a linear model with an
interaction term:
X = [ones(size(x1)) x1 x2 x1.*x2];
b = regress(y,X) % Removes NaN data
b =
60.7104
-0.0102
-0.1882
0.0000
Plot the data and the model:
scatter3(x1,x2,y,'filled')
hold on
x1fit = min(x1):100:max(x1);
x2fit = min(x2):10:max(x2);
[X1FIT,X2FIT] = meshgrid(x1fit,x2fit);
YFIT = b(1) + b(2)*X1FIT + b(3)*X2FIT + b(4)*X1FIT.*X2FIT;
mesh(X1FIT,X2FIT,YFIT)
37
xlabel('Weight')
ylabel('Horsepower')
zlabel('MPG')
view(50,10)
38
Regresia liniară multiplă poate fi folosită pentru determinarea unor relaţii
de tipul:
4. Regresie neliniară
Există cazuri în care funcţia cu care vrem să aproximăm datele nu se
poate liniariza (de exemplu):
39
În acest caz se poate face o liniarizare folosind dezvoltări în serie Taylor
sau se poate face minimizarea direct, rezolvând un sistem neliniar.
Funcţia ce trebuie minimizată este
De exemplu, în Matlab există funcţia fminsearch (Optimization
Toolbox) ce minimizează o funcţie.
40
Exemplu:Fie funcţia
,
41
Din figura de mai jos minimul se afla în vecinătatea punctului
42
Exemplu: Considerăm din nou exemplul cu mişcarea unui obiect în aer:
43
Scriem o funcţie generală ce calculează suma pătratelor
Minimizăm
şi obţinem
44
Reamintim că prin liniarizare am obţinut