Régression linéaire
%-------------------------------------------------------- % régression linéaire % d'aprés 'Apprendre et maitriser Matlab' %-------------------------------------------------------- echo on %régression linéaire echo off clear all; x=0:100; %domaine n=101; % on simule y=f(x) par y=0.5 x + 2 + bruit aléatoire % bruit = randn(1,101) y= 0.5*x + 2 + randn(1,n); clf; plot(x,y,'+'); % tracé hold on; % pour un autre tracé % chaque mesure est telle que yi = a xi + b avec pour système matriciel % | y(1) | | x(1) 1| % | y(2) | | x(2) 1| |a| % | ... | = | ... 1| |b| ce système est noté Y = H . teta % | y(101)| |x(101) 1| % le vecteur optimal qui minimise la variance de l'erreur entre les mesures % et le modèle ( moindres carrés) est : % teta = inverse[transposéeH . H] . transposéeH . Y %matrice H H=ones(n,2); % n lignes 2colonnes H(:,1)=x'; %1ère colonne c'est le vecteur x ( ' = transposition) %vecteur Y Y=y'; teta=inv(H'*H)*H'*Y; %algorithme a=teta(1,1); b=teta(2,1); ym= a*x + b; %valeurs de a et de b teta=nnls(H,Y); str=sprintf('régression linéaire '); str1=sprintf(' ym=%0.5g *x + %0.5g',teta(1),teta(2) ); str2=strcat(str,str1); plot(x,ym,'r'); xlabel('valeurs de x'); ylabel('valeurs de y'); posX1=10; posX2=50; text(x(posX1),y(posX1),'mesures'); text(x(posX2),ym(posX2),'modèle'); title(str2); grid;
Dernière Modification : Lun 19 Mars 2007 13:28
Copyright © 1999-2010 Jean-Paul Molina Tous droits réservés.