Sunteți pe pagina 1din 7

Set de probleme - regresie liniară

Problema 1
Se consideră următorul exemplu în care sunt înregistrate valorile temperaturii pe primele 10 luni ale
unei lunii de vară. Se cere să se determine formula ce definește dreapta de regresie liniară.

Ziua 
Temperatura [ C ]
1 20.5
2 22.6
3 23
4 24.8
5 26.2
6 27.4
7 27.9
8 29
9 29.8
10 30

Primul pas este reprezentat de minimizarea sumei prin determinarea punctelor de extremum prin
studiera minimului functiei S(a,b) care are derivatele partiale de ordinul al doilea continue.

S S
n 2

 (a  xi  b  y( x i )) 
i 1 b
 0;
a
 0 (1)

Din relatia (1), rezultă următorul sistem de ecuații:

 n 2 n n

a   xi  b   xi   y ( xi )  xi
 i 1 i 1 i 1
 n n
(2)
a  x  n  b  y ( x )
  i 1
i 
i 1
i
Notăm:

n
S x   xi
i 1
n
S y   y ( xi )
i 1
n
(3)
S x2   x 2
i
i 1
n
S xy   y ( xi )  xi
i 1

Cu notațiile de mai sus, sistemul devine:

a S x 2   b  S x  S xy
 (4)
a  S x  n  b  S y

De unde rezultă coeficienții dreptei de regresie liniară:

 n  S xy  S x  S y
a 
n  S x2  S x
2

 (5)
b  S x 2  S y  S x  S xy
 n  S x 2  S x2

Înlocuim cu datele nostre din tabelul de mai sus:

n=10;

S x  1  2  3  4  5  6  7  8  9  10  55
S y  20.5  22.6  23  24.8  26.2  27.4  27.9  29  29.8  30  261.2
S x 2  12  2 2  32  4 2  5 2  6 2  7 2  8 2  9 2  10 2  389 (6)
S xy  1 20.5  2  22.6  3  23  4  24.8  5  26.2  6  27.4  7  27.9  8  29  9  29.8  10  30
 20.5  45.2  69  99.2  131  164.4  195.3  232  268.2  300  1524.8

Calculăm coeficienții a și b înlocuind relația (6) în relația (5):

10 1524.8  55  261.2 15248  14366 882


a    1.019653179190751
10  389  55 2 3890  3025 865
389  261.2  55 1524.8 101606.8  83864 17742.8
b    20.51190751445087
10  389  55 2 3890  3025 865
Înlocuind datele obținute mai sus în relația (1), vom obține ecuația dreptei de regresie liniară:

f ( x)  y  a  x  b  1.019  x  20.5119

Pentru verificarea corectitudinii, am creat în Matlab o rutină care calculează atat parametrii dreptei de
regresie liniară, cat și eroarea acesteia:

După cum se poate observa din apelarea rutei linear_regression din matlab, valoarea interceptului(a)
precum și valoarea pantei de regresie(b) este aceeași și cea calculată analitic.

Prin determinarea ecuatiei dreptei de regresie, se pot efectua predictii pe baza setului de date anterior.
Se presupune ca dorim sa aflam valoarea medie a temperaturii celei de-a 14 a zi a lunii studiate.

Consideram x = 14
Avem: y (14)  1.019 14  20.5119  34.7779 [ C ] pentru cea de-a 14 a zi a lunii de vara studiate.

Problema 2. Regresie liniară multiplă


Se consideră următorul tabel ce conține date legate de umiditate, precipitații și viteză vântului pentru
ultimele 6 lunii ale anului 2017. Se cere să se determine planul de regresie.

Umiditate Viteza vantului Precipitatii


0 0 2.5
1 0.5 5
1.75 1 4.5
0.5 1.5 0
2 3 1.5
3.5 1 13.5

În matlab, s-a construit o rutină care conține ca intrări parametrii de umiditate, viteză vântului și
precipitațiile iar la ieșire vor rezulta coeficienții planului de regresie liniară.

Formula care definește regresia liniară multiplă:

y  a0  a1  x1  a2  x2  ...  an  xn  e

Prin apelarea rutinei multi_regression, s-au determinat parametrii a0 , a1 ,a 2 .


Rezultă formula regresiei liniare multiple:

y  2.1957  3.8934  x1  2.8917  x2

Problema 3

În mod natural, se presupune că există o strânsă legătură între înălțimea și


greutatea unei persoane. Se pune problema determinării unui model regresiv care să
permită calcularea greutății normale a unei persoane, în raport cu inatimea sa. Vom
considera un lot de 15 persoane, pentru care se înregistrează înălțimea și greutatea
(x=inaltime, y=greutate)

Cod Matlab:

function f = f()
%inaltime si greutate
x = [1.67;1.8;1.76;1.68;1.78;1.76;1.67;1.82;2;1.67;1.56;1.78;1.82;1.6;1.76];
y = [70;82;75;69;82;78;65;95;113;67;61;81;90;62;78];
mat = [x y];
date_ord = sortrows(mat,1)
x_ord=date_ord(1:15,1)
y_ord=date_ord(1:15,2)
figure
plot(x_ord,y_ord,'-*');
title('Greutate vs inaltime - date initiale')
xlabel('Inaltime')
ylabel('Greutate')

%coeficient de corelatie
r=corrcoef(x_ord,y_ord)
%r=0.9668
f = polytool(x_ord,y_ord,1);
%y = -141.35 +125.84x
End
În urma simulării programului vor rezulta următoarele figuri:

Graficul ce contine datele inițiale

Graficul obținut după apelarea funcției polytool - cu verde dreapta de regresie, roșu –
intervalul de încredere (95% funcția estimează valori în acest interval)
Graficul ce conține reziduurile în urma estimării.

S-ar putea să vă placă și