CURS 10 - Babeș-Bolyai Universityvasile.chis/cursuri/info/c10ppt.pdfCURS 10 Regresia liniară -...
Transcript of CURS 10 - Babeș-Bolyai Universityvasile.chis/cursuri/info/c10ppt.pdfCURS 10 Regresia liniară -...
-
CURS 10
Regresia liniară - aproximarea unei functii tabelate cu o functie analitica de gradul 1, prin metoda
celor mai mici patrate
1220
1230
1240
1250
1260
1270
1280
1290
1300
1310
0 0.2 0.4 0.6 0.8 1 1.2
Y
X
1220
1230
1240
1250
1260
1270
1280
1290
1300
1310
0 0.2 0.4 0.6 0.8 1 1.2
Y
X
y = -78.545x + 1313.4 R² = 0.9823
1220
1230
1240
1250
1260
1270
1280
1290
1300
1310
0 0.2 0.4 0.6 0.8 1 1.2
Y
X
-
Fie o funcţie: f:[a,b], [a,b] pentru care este cunoscut un număr discret de valori yi într-un număr de puncte de reţea xi[a,b]:
f(xi)=yi, i 1,n
In general, valorile yi sunt afectate de erori de măsură sau de erori de calcul
1220
1230
1240
1250
1260
1270
1280
1290
1300
1310
0 0.2 0.4 0.6 0.8 1 1.2
Y
X
Aproximarea acestei funcţii tabelate f cu o funcţie "model":
xi yi 0.10 1305.00 0.20 1295.00 0.30 1293.00 0.40 1283.00 0.50 1270.00 0.60 1267.00 0.70 1260.00 0.80 1256.00 0.90 1243.00 1.00 1230.00
αj - parametri ai funcţiei model
F(xi;αj) - permite cunoasterea valorii in orice punct x xi - poate fi derivata, integrata sau folosita in alte calcule
Ce vrem?
Cum alegem functia model?
F trebuie să fie determinată de fenomenul fizic modelat F se va alege dintr-o clasă convenabilă de funcţii care să ofere simplitate şi eficienţă în prelucrări ulterioare
De ce?
-
αj => F
Cum determinam parametrii funcţiei model? Se defineşte o funcţională care să reflecte gradul în care funcţia F aproximează funcţia tabelată f. Distanţa dintre funcţia tabelată şi funcţia model:
Cazuri:
Interpolare: graficul functiei F trece prin toate punctele (xi,yi)
Fitare: graficul functiei F nu trece neaparat prin punctele (xi,yi)
-
Fitare - se minimizează suma abaterilor pătratice ale funcţiei model faţă de funcţia tabelată:
n2
i i ji 1
S y F(x ; )
= regresie (ajustare) prin metoda celor mai mici pătrate
Condiţiile de obţinere a parametrilor αj:
j
S0; j 1,k
-
Regresia liniară
Funcţionala S:
n
2
i ii 1
S y (ax b)
Funcţia model = funcţie de gradul 1: F=ax+b F=F(xi, αj) j=2
Condiţiile de obţinere a parametrilor αj (a şi b):
S0
a
S0
b
n
i i ii 1
n
i ii 1
2 y (ax b) ( x ) 0
2 1 y (ax b) 0
n n n2
i i i ii 1 i 1 i 1
n n n
i ii 1 i 1 i 1
2 x y 2 ax 2 bx 0
2 y 2 ax 2 b 0
Notăm: n n n n
2
i i xy i xx i x i yi 1 i 1 i 1 i 1
x y S x S x S y S
Tinem cont că: n
i 1
b nb
-
xy xx x
y x
S aS bS 0
S aS nb 0
x y xy
2
x xx
S S nSa(S ) nS
y x1
b S aSn
Sistemul de ecuaţii devine:
Înmulţind prima ecuaţie cu n şi a doua cu (-Sx) şi adunându-le se obţine:
a - panta dreptei de regresie a=tg(α) α - unghiul făcut de graficul funcţiei F cu axa absciselor b - valoarea la care graficul funcţiei intersectează axa ordonatelor (interceptor)
Valorile estimate de dreapta de regresie (yicalc) sunt interpretate ca medii ale valorilor y asociate
cu o anumită valoare xi.
Semnificatia parametrilor de fit:
Ub=E-rI F=ax+b
E=b r=|tg()|
-
Cum se procedează atunci când funcţia model nu este o funcţie de gradul 1?
Un set de măsurători de radioactivitate
Exemplu
t(ore) Λ(mCi) 2.5 280 3.0 218 3.5 177 4.0 140 4.5 100 5.0 85 5.5 67 6.0 48 6.5 42 7.0 30 7.5 20 8.0 17
t
0(t) e
1Ci = 3.7·1010 Bq
-
t(ore) Λ(mCi) ln(Λ))
2.5 280 5.63
3.0 218 5.38
3.5 177 5.18
4.0 140 4.94
4.5 100 4.61
5.0 85 4.44
5.5 67 4.20
6.0 48 3.87
6.5 42 3.74
7.0 30 3.40
7.5 20 3.00
8.0 17 2.83
0ln( (t)) ln( ) t
ln(Λ0(t))=y‘ y'=a-bt unde a=ln(Λ0) şi b=λ
- ln(0) Λ0=exp(6.9565)=1049.95
-
Coeficientul de corelare R2
- dă calitatea unei drepte de regresie
R2 = 1 => funcţia model explică întreaga variabilitate a lui y R2 = 0 => nu există nici o relaţie liniară între variabila răspuns şi variabila x (între y şi x) R2 = 0.5 => aproximativ 50% din variaţia variabilei răspuns poate fi explicată de către variabila independentă
-
//regresia liniara
#include
#include
#include
#include
#include
int main()
{
FILE *f;
int n,i,xpmin,xpmax,ypmin,ypmax,xr,yr;
float x,y,xd[20],yd[20],xdmin,xdmax,ydmin,ydmax;
float Sx,Sy,Sxx,Sxy,a,b;
float ymed, s1,s2,R2;
float ax,bx,ay,by;
int xp[50],yp[50];
char nf[20],stra[15], strb[15];
printf("Numele fisierului de intrare: ");
gets(nf); f=fopen(nf,"r");
if(!f)
{
printf("\nFisier inexistent!");
getch();
exit(1);
}
i=0;
Sx=Sy=Sxx=Sxy=0;
while(!feof(f))
{
if(fscanf(f,"%f%f",&x,&y)==2)
{
xd[i]=x; yd[i]=y; i++; Sx+=x; Sy+=y; Sxx+=x*x; Sxy+=x*y;
}
}
n=i; a=(n*Sxy-Sx*Sy)/(n*Sxx-Sx*Sx); b=(Sy-a*Sx)/n;
fclose(f);
-
f=fopen(nf,"r");
s1=s2=0;
ymed=Sy/n;
while(!feof(f))
{
if(fscanf(f,"%f %f",&x,&y)==2)
{
s1+=(a*x+b-y)*(a*x+b-y);
s2+=(ymed-y)*(ymed-y);
}
}
R2=1-s1/s2;
printf("===================================================\n");
printf("n= %d",n);
for(i=0;i
-
//Dimensiunile ferestrei de afisare si coeficientii de scalare
xpmin=160;xpmax=440;
ypmin=85;ypmax=365;
ax=(xpmax-xpmin)/(xdmax-xdmin);
bx=xpmin-ax*xdmin;
ay=(ypmax-ypmin)/(ydmin-ydmax);
by=ypmax-ay*ydmin;
for(i=0;i
-
outtextxy(150,10,"Regresia liniara");
settextstyle(6,HORIZ_DIR,1);
outtextxy(150,40,"Exemplu: potentiometrul compensator");
settextstyle(4,VERT_DIR,1);
outtextxy(120,270,"U (V)");
settextstyle(8,HORIZ_DIR,1);
outtextxy(460,200,"Functia de fit:");
outtextxy(460,230,"f(x) = ");
gcvt(a,5,stra);
gcvt(b,7,strb);
outtextxy(530,230,stra);
outtextxy(610,230,"x +");
outtextxy(650,230,strb);
gcvt(R2,5,stra);
outtextxy(460,260,"R^2 = ");
outtextxy(530,260,stra);
outtextxy(460,320,"E = ");
outtextxy(500,320,strb);
outtextxy(570,320," V");
outtextxy(460,350,"r = ");
gcvt(-a,5,stra);
outtextxy(500,350,stra);
outtextxy(580,350," ohmi");
setcolor(RED);
rectangle(455,310,650,376);
while(!_kbhit());
closegraph();
return 0;
}
-
Deviaţia standard (abaterea standard)
0
1
2
3
4
5
6
7
8
9
10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 0
1
2
3
4
5
6
7
8
9
10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
0
1
2
3
4
5
6
7
8
9
10
1 2 3 4 5 6 7 8 9 10 0
1
2
3
4
5
6
7
8
9
10
1 2 3 4 5 6 7 8 9 10
20 valori, media = 5 20 valori, media = 5
= distanţa medie dintre media valorilor unui set de date şi datele setului respectiv - măsoară împrăştierea datelor dintr-un set (dispersia faţă de medie)
-
1
1
2
n
XX
n
i
i
Numitorul: - n-1 dacă datele Xi reprezintă un eşantion - n dacă datele Xi reprezintă întreaga populaţie (pentru n-mare, n-1n)
Semnificatie
Formula
-
2
11
2
_
n
i
i
n
i
i xxn
nSaer
2_
xxx SnS
nSaer
2
11
2
1
2
_
n
i
i
n
i
i
n
i
i
xxn
x
Sber2
_
xxx
xx
SnS
SSber
2
1
2
n
ybxa
S
n
i
ii
unde:
Eroarea estimarii parametrilor de fit
Sunt necesare minim trei puncte pentru aputea folosi regresia liniara!
-
Exemplu
Presupunem că s-au obţinut mai multe valori pentru E şi pentru r, din măsurători repetate. Rezultatul final se raportează ca şi valoarea medie +/- deviaţia standard.
-
Analiza reziduurilor
y = 1049.9e-0.512x R² = 0.9956
y = -44.531x + 335.79 R² = 0.8931
y = 9.7762x2 - 147.18x + 576.12 R² = 0.9936
-50
0
50
100
150
200
250
300
350
0 2 4 6 8 10 -40
-20
0
20
40
60
80
0 2 4 6 8 10 12
Fit liniar
-40
-20
0
20
40
60
80
0 2 4 6 8 10 12
Fit parabolic
-40
-30
-20
-10
0
10
20
30
40
50
60
0 2 4 6 8 10 12
Fit exponential
-
Distribuţia normală (Gaussiană)
Funcţia densităţii de probabilitate (densitatea unei variabile aleatoare continue) este o funcţie care descrie probabilitatea relativă pentru ca respectiva variabilă sa aibă o anumită valoare. Probabilitatea ca variabila aleatoare să aibă valori într-un anumit interval este dată de integrala densităţii variabilei respective pe intervalul dat. Funcţia densităţii de probabilitate este nenulă pe întreg domeniul său de definiţie, iar integrala sa pe întreg spaţiul este egală cu unu.
Funcţia densităţii de probabilitate pentru distribuţia Gaussiană cu media şi deviaţia standard
2
2
2
)(exp
2
1),;(
xx
Distribuţia Gaussiană standard (=0 şi =1)
2exp
2
1)(
2xx