GNU Octave/Regresja liniowa: Różnice pomiędzy wersjami

Z testwiki
Przejdź do nawigacji Przejdź do wyszukiwania
imported>Lethern
skopiowane ze str głównej GNU Octave i nawigacja
 
(Brak różnic)

Aktualna wersja na dzień 15:35, 12 kwi 2008

Regresja liniowa

Regresja liniowa, stopień dla polyfit=3

Zaimplementować regresję liniową. Zadajemy punkty (x1,x2,..,xN) i losujemy wartości (y1,y2,..,yN):

X=[-10,-5,-3,-1,-0.5,0,1,2,3,3.1,3.2,4,5];
N=length(X);
B=10.0
Y=B.*rand(1,N)

Używamy gotowej funkcji polyfit, która dopasowuje wielomian zadanego stopnia do punktów (xk,yk)

deg=1
O=polyfit(X,Y,deg)

Wykonujemy regresję metodą najmniejszych kwadratów:

Sx = sum(X);
Sy = sum(Y);
Sxx = X*X';
Syy = Y*Y';
Sxy = X*Y';
Sxx2 = norm(X, 2);
Syy2 = norm(Y, 2);
wsp_beta = (N*Sxy-Sx*Sy)/(N*Sxx-Sxx2);
wsp_alfa = (Sy-wsp_beta*Sx)/N;
P = [wsp_beta, wsp_alfa];

Rysujemy punkty i wynik:

axis([-11,11,0,B+1]);
x=[-10:0.25:10];
Z=polyval(O,x.+0.5);
W=polyval(P, x);
plot(x,W,"-r;MNK;",(x.+0.5),Z,"xg;Polyfit;",X,Y,"*b;Dane;");


Szablon:Nawigacja