Laborator EFO Lucrarea nr. 3 ESIMAREA PARAMERILOR PRIN MEODA CELOR MAI MICI PĂRAE. Definirea estimatorului dat de metoda celor mai mici pătrate Metoda celor mai mici pătrate (descoperită de Gauss în 795) permite obţinerea unor estimatori care, în general, nu au proprietatea de optimalitate, dar, pentru multe probleme, duc la soluţii satisfăcătoare. O caracteristică deosebită a acestei metode este absenţa oricăror condiţii asupra densităţii de probabilitate (aceasta nu trebuie nici măcar cunoscută). Avantajul este gama mai largă de aplicaţii posibile. Partea dezavantajoasă este faptul că nu putem face nici o afirmaţie asupra optimalităţii; mai mult, performanţa statistică nu poate fi apreciată fără a face anumite presupuneri referitoare la structura probabilistică a datelor. otuşi, estimatorul furnizat de metoda celor mai mici pătrate este foarte des folosit în practică, datorită simplităţii de implementare. Metoda celor mai mici pătrate încearcă să minimizeze pătratul diferenţei dintre datele x[ n ] şi semnalul presupus a fi transmis. Semnalul este generat de un anumit model, depent de parametrul necunoscut θ, şi este considerat determinist. Datorită zgomotului şi limitărilor modelului, noi observăm o versiune perturbată a lui s[ n ], pe care o notăm x[ n ]. Estimatorul LS (Least Squares) a lui θ alege valoarea est( ) care produce s[ n ] cel mai apropiat de x[ n ]. "Apropierea" este apreciată prin criteriul erorii LS: N J ( ) xn [ ]- sn [ ], () n unde intervalul de observare este presupus n=,,...,n- şi J depinde de θ prin intermediul lui s[ n ]. Valoarea θ care minimizează J ( ) este estimatorul LS. Cu alte cuvinte, din mai multe variante de erori posibile, o alegem pe cea mai mică, pe care o presupunem cea mai plauzibilă. rebuie observat că asupra lui x[ n ] nu s-au făcut nici un fel de presupuneri probabilistice. Metoda se poate aplica atât pentru zgomot Gaussian, cât şi pentru zgomot non-gaussian. otuşi, performanţele estimatorilor LS vor depinde de proprietăţile zgomotului perturbator şi de erorile de modelare. Aceşti estimatori se aplică de regulă în situaţii în care o caracterizare statistică precisă a datelor este imposibilă sau atunci când estimatorii optimi nu pot fi găsiţi sau sunt prea complicaţi. Exemplul - Nivel de curent continuu Să presupunem modelul de semnal sn A. Facem observaţiile xn, pentru n,,, N. După metoda celor mai mici pătrate, putem să estimăm pe A minimizând N () n J ( A) x[ n]- A Pentru a găsi minimul lui J(A), derivăm şi egalăm cu zero, obţinând:
N - est( A ) x[ n ] x (3) N n Estimatorul LS este chiar media eşantioanelor. Nu putem însă afirma că est( A ) este optim (adică nedeplasat şi cu dispersie minimă), ci doar că el minimizează eroarea LS. otuşi, se cunoaşte din lucrările anterioare că pentru modelul x[ n] A wn, unde wn are media zero şi este WGN, estimatorul LS este şi MVU (nedeplasat, cu dispersie minimă). Pentru a înţelege posibilele dificultăţi, să considerăm cazul în care zgomotul nu ar avea medie nulă. Atunci media eşantioanelor va fi un estimator bun pentru A E w n şi nu pentru A. Atunci când folosim metoda celor mai mici pătrate presupunem că datele (observaţiile) sunt compuse dintr-un semnal determinist şi zgomot cu medie nulă. În această situaţie, eroarea [ n] x[ n] sn va tinde către zero dacă am ales corect parametrii modelului. De asemenea, dacă modelul de semnal este incorect (de exemplu dacă datele ar fi de fapt descrise de relația x[ n] ABn w n ) atunci estimatorul LS va rezulta deplasat. Exemplul Estimarea frecvenţei unei sinusoide Considerăm modelul de semnal sn cos( f n). Se cere să se estimeze frecvenţa f. Estimatorul LS se obţine minimizând N n J ( f ) xn [ ]-cos( f n) (4) Spre deosebire de semnalul continuu de amplitudine A, unde minimul era uşor de găsit, aici eroarea LS este neliniară în f. Minimizarea nu se poate face în formă închisă. Deoarece eroarea LS este o funcţie pătratică de semnal, un semnal linear în raport cu parametrul necunoscut va duce la o funcţie J pătratică, ca în exemplul anterior. În acest caz minimizarea este simplă. Spunem că un model de semnal liniar în parametrul necunoscut generează o problemă LS liniară. În caz contrar cum ar fi exemplul de faţă avem de-a face cu o problemă LS neliniară care se rezolvă prin căutări de tip grilă sau prin metode iterative. Important este că semnalul în sine nu trebuie să fie complet linear; este suficient ca acesta să fie linear în θ. Această situaţie apare în exemplul următor. Un program Matlab care găseşte estimatul LS al frecvenţei, prin minimizarea funcţiei J de mai sus pentru diferite valori ale raportului semnal-zgomot (SNR), este tefo_l3_ex_est_f_ls. Sunt afişate media și dispersia estimatului, limita inferioară Cramer- Rao (vezi Lucrarea, relația(3)) și eroarea pătratică medie pentru fiecare valoare SNR. %program tefo_l3_ex_est_f_ls %estimarea frecventei unei sinusoide clear; clc; global N; global x; N=; %nr. de esantioane pe realizare
M=; %nr. de realizari ale lui x[n] N_subint=; % numarul de subintervale pe care se face minimizarea f=.; n=:n-; % frecventa cosinusoidei % semnalul util s=cos(*pi*f*n); A=; % Analiza Monte Carlo si reprezentarea grafica a rezultatelor for i=:7 power=(4-i)/4; sigma(i)=a/sqrt()*(^power) for j=:m x=s+sigma(i)*randn(,n); % semnal perturbat f_est(j)=fun_min_min_f_pe_subint(n_subint); mf(i)=mean(f_est); df(i)=std(f_est)^; var_f_cr(i)=(*sigma(i)^*6)/((*pi*a)^*(n-)*n*(*n-)); mse_f(i)=mean((f_est-f).^); SNR(i)=5*i- figure(); clf; subplot(); plot(snr,mf,'-o','markerfacecolor','b'); hold on; plot(snr,f*ones(,7),'ko','markerfacecolor','k'); hold off; leg('valoare estimata medie','valoare adevarata',); xlabel('snr [db]'); ylabel('media'); title('estimarea frecventei prin metoda LS'); axis([min(snr)- max(snr)+ min(.9*f,min(mf)) max(.*f,max(mf))]); subplot(); plot(snr,df,'-ob','markerfacecolor','b'); hold on; plot(snr,var_f_cr,'gv','markerfacecolor','g'); plot(snr,mse_f,'*m'); leg('valoare estimata in Matlab','limita Cramer- Rao',char({'eroarea patratica medie',' a estimatului'}),); 3
xlabel('snr [db]'); ylabel('dispersia'); title('estimarea frecventei prin metoda LS'); axis([min(snr)- max(snr)+ -.*max(df) max(df)]); Funcţiile fun_min_min_f_pe_subint, fun_min_f_pe_subint şi fun_min_f sunt aceleaşi ca în Lucrarea (Estimarea de plauzibilitate maximă), cu deosebirea că în funcţia Matlab fun_min_f este schimbată funcţia de minimizat. Function[solu]=fun_min_min_f_pe_subint(N_subint) % Procedura identifica minimul dintre valorile obtinute prin minimizare % pe cele N_subint subintervale: [w,v]=fun_min_f_pe_subint(n_subint); [v_min, index_v_min]=min(v); solu=w(index_v_min); function[w,v]=fun_min_f_pe_subint(n_subint) % Procedura divizeaza domeniul admisibil pentru solutii in N_subint subintervale % si efectueaza minizarea pe fiecare dintre acestea: pas_f=.45/(n_subint+); for i=:n_subint w(i)=fminbnd( fun_min_f, pas_f*i, pas_f*(i+)); v(i)=fun_min_f(w(i)); ; function[out]=fun_min_f(ff) % Aceasta este functia obiectiv care trebuie minimizata: global N; global x; out=sum((x-cos(*pi*ff*(:n-))).^); Exemplul 3 Estimarea amplitudinii unei sinusoide Dacă semnalul este sn Acos( f n), unde f este cunoscut şi A trebuie estimat, LSE minimizează N n J ( A ) x[ n]- Acos( f n) (5) în raport cu A. Dacă totuşi f nu este cunoscut, trebuie să minimizăm N J ( A, f ) x[ n]- Acos( f n) (6) n 4
în raport cu A şi f. J este pătratică în raport cu A, dar nu este pătratică în raport cu f. În concluzie, J poate fi minimizată în formă închisă în raport cu A pentru un f dat, reducând minimizarea lui J la o minimizare în raport cu un singur parametru. Acest tip de problemă în care semnalul este liniar faţă de anumiţi parametri, dar nelinear faţă de ceilalţi poartă numele de problemă LS separabilă.. Metoda celor mai mici pătrate. Cazul liniar În cazul liniar, pentru un parametru scalar, semnalul este de forma s[ n ] h[ n] (7) unde hn [ ] este o secvenţă cunoscută. Eroarea LS are forma N N N N (8) J xn hn x n xnhn h n n n n n Minimizarea este banală şi duce la obţinerea estimatorului LS Eroarea LS minimă este min est ( ) N - x[ n ] hn [ ] n N - n h [ n] N N N J J est x n est xnhn est h n J n n n N N x n est x n h n n n N - n min x [ n] N n n N - x[ n ] hn [ ] () h [ n] Un program Matlab care găseşte estimatul amplitudinii unei sinusoide ca în cazul liniar pentru diferite valori SNR este tefo_l3_ex3_est_ampl_sin_ls. Sunt afişate media și dispersia estimatului, limita inferioară Cramer-Rao (vezi Lucrarea, relația()), precum şi media erorii minime pentru cele de realizări ale observaţiilor. %program tefo_l3_ex3_est_ampl_sin_ls %estimarea amplitudinii unei sinusoide clear; clc; N=; %nr. de esantioane pe realizare M=; %nr. de realizari ale lui x[n] A=; % amplitudinea f=.; % frecventa n=:n-; (9) 5
% semnalul util h=cos(*pi*f*n); s=a*h; % Analiza Monte Carlo si reprezentarea grafica a rezultatelor for i=:7 power=(4-i)/4; sigma(i)=a/sqrt()*(^power) for j=:m x=s+sigma(i)*randn(,n); % semnal perturbat A_est(j)=(sum(x.*h))/sum(h.^); % amplitudinea estimata Jmin(j)=sum(x.^)-((sum(x.*h))^)/sum(h.^); minima ma(i)=mean(a_est); da(i)=std(a_est)^; var_a_cr(i)=(sigma(i)^)/sum(h.^); mse_a(i)=mean((a_est-a).^); mjmin(i)=mean(jmin); SNR(i)=5*i- %eroarea figure(); clf; subplot(3); plot(snr,ma,'-o','markerfacecolor','b'); hold on; plot(snr,a*ones(,7),'ko','markerfacecolor','k'); hold off; leg('valoare estimata medie','valoare adevarata',); xlabel('snr [db]'); ylabel('media'); title('estimarea amplitudinii unei sinusoide prin metoda LS'); axis([min(snr)- max(snr)+ min(.9*a,min(ma)) max(.*a,max(ma))]); subplot(3); plot(snr,da,'-ob','markerfacecolor','b'); hold on; plot(snr,var_a_cr,'gv','markerfacecolor','g'); plot(snr,mse_a,'*m'); leg('valoare estimata in Matlab','limita Cramer- Rao',char({'eroarea patratica medie',' a estimatului'}),); xlabel('snr [db]'); ylabel('dispersia amplitudinii'); title('estimarea amplitudinii unei sinusoide prin metoda LS'); axis([min(snr)- max(snr)+ -.*max(da) max([da,var_a_cr])]); 6
subplot(33); plot(snr,mjmin,'-ob','markerfacecolor','b'); xlabel('snr [db]'); ylabel('media erorii minime'); title('estimarea amplitudinii unei sinusoide prin metoda LS'); axis([min(snr)- max(snr)+ -.*max(mjmin) max(mjmin)]); Extinderea formulelor (7)-() pentru un parametru vectorial θ de dimensiune p este simplă şi foarte utilă în practică. Pentru semnalul s s sn modelul linear matriceal s = H θ () unde H este o matrice cunoscută de dimensiuni N p, de rang p (N p deoarece, în caz contrar, numărul de parametri necunoscuţi este mai mare decât numărul de observaţii). H se numeşte de obicei matrice de observaţie. Estimatorul LS se găseşte minimizând N J( θ) x[ n]- s[ n] ( x Hθ) ( x- Hθ)= x x x Hθ+ θ H Hθ () n Ținând cont de identitățile (7) și (8) din Lucrarea, gradientul lui J ( θ ) este: J ( θ) H x+h Hθ (3) θ Egalând gradientul cu zero obţinem estimatorul LS: - est( θ) ( H H) H x (4) est(θ) minimizează J(θ). Aceasta se poate verifica uşor calculând: N J ( θ) HH hh ij ik (5) θ i jk care este pozitiv definită (adică valorile proprii ale matricei HH sunt toate pozitive). În practică, estimatorul LS nu se determină cu formula (4), deoarece calculul inversei matricii HH poate prezenta dificultăţi. De obicei se rezolvă ecuaţiile normale HHest θ Hx (6) folosind algoritmi stabili din algebra lineară numerică, care presupun transformări ortogonale. Faptul că H are rang p ne garantează inversabilitatea lui HH. Eroarea LS minimă pentru cazul vectorial se poate calcula astfel: - - J min J ( est ( θ)) ( x- Hest( θ) ) ( x- Hest( θ)) ( x- H( H H) H x) ( x- H( H H) H x ) ( - ) ( ) - ( ) - IH H H H x IH H H H xx IH H H H x - xx xhhh ( ) Hx (7) - deoarece matricea I H( H H) H este idempotentă. 7
3. Metoda celor mai mici pătrate. Cazul nelinear Metoda celor mai mici pătrate estimează parametrii θ ai modelului prin minimizarea expresiei: J = xsθ -( ) xsθ -( ) (8) unde s(θ) este modelul de semnal pentru x, cu depenţa de θ notată explicit (de observat că dacă xsθ -( ) este distribuit normal, cu media şi matricea de covarianță I, atunci LSE este şi MLE estimatorul de plauzibilitate maximă). În cazul linear semnalul are forma s(θ)=hθ, care permite o rezolvare simplă. În general, s(θ) nu poate fi exprimat în acest fel, acesta fiind o funcţie N-dimensională nelineară, depinzând de θ, şi minimizarea lui J este relativ dificilă. Cazul LS nelinear este o problemă de regresie nelineară. Practic, determinarea LSE se bazează pe abordări iterative (Gauss-Newton, Newton-Raphson, etc.). Pentru cazurile în care dimensiunea lui θ este mică se preferă o căutare de tip grilă. Există două modalităţi de reducere a complexităţii problemei, şi anume transformarea parametrilor şi separarea parametrilor. 3.. ransformarea parametrilor În prima variantă căutăm o transformare injectivă a lui θ care să producă un model de semnal linear. α = g( θ ) (9) g este funcţie p-dimensională de θ, a cărei inversă este cunoscută. Dacă se poate găsi g astfel încât: sθα ( ( )) = s( g ( α)) = H α () atunci modelul de semnal va fi linear în α. Putem uşor determina estimatorul linear al lui α şi deci estimatorul nelinear al lui θ din relaţiile - est( α)=( H H) H x () est( θ)= g (est( α )) () Această abordare se bazează pe faptul că minimizarea se poate efectua în spaţiul transformat rezultat prin aplicaţia injectivă. 3.. Separarea parametrilor Un al doilea tip de problemă LS nelineară, mai puţin complex decât cazul general, este cel care prezintă proprietatea de separabilitate. Deşi modelul de semnal este nelinear, el poate fi linear în raport cu o parte din parametri. În general, un model de semnal separabil are forma: s = H( α) β (3) unde: αpq θ = (4) βq H(α) este o matrice de dimensiuni N q depentă de α. Acest model este nelinear în 8
α şi linear în β. Ca urmare, eroarea LS poate fi minimizată în raport cu β şi astfel redusă la o funcţie numai de α. Deoarece J ( αβ, ) = ( xhαβ - ( ) ) ( xhαβ - ( ) ) (5) β care minimizează J ( αβ, ) pentru un α dat este: şi eroarea LS este - est( β) = ( H ( αhα ) ( ) H ( αx ) (6) ) - J ( α,est( β )) = x - ( )( ( ) ( )) ( ) I H α H α H α H α x (7) Ținând cont de (7), problema se reduce la minimizarea expresiei: - x Hα ( )( H ( αhα ) ( )) H ( αx ) (8) în raport cu α. Aceste abordări pot fi combinate pentru a simplifica o problemă. Când acestea nu pot fi aplicate, trebuie să minimizăm cantitatea: J ( θ) = x- s( θ) x- s( θ ) (9) 4. Eliminarea perturbaţiilor prin metoda celor mai mici pătrate Să considerăm un semnal dreptunghiular de amplitudine necunoscută, perturbat de zgomot alb Gaussian şi de o sinusoidă a cărei frecvenţă este cunoscută, dar nu i se cunosc amplitudinea şi faza. Modelul este: x[ n ] A a[ n / ] B sin( fn ) C cos( fn ) w[ n] (3) (unde cu s-a notat partea întreagă). este perioada de bit a semnalului dreptunghiular, iar f este frecvenţa sinusoidei perturbatoare. Pentru a estima A, B şi C trebuie minimizată expresia (9), în care θ A B C, iar s( ABC,, ) B sin( fn ) C cos( fn ) A esta ( [ n/ ]) (3) unde n / - est( a[ n / ]) sign [ x[ i ]- B sin( fi ) - C cos( fi)] (3) i n/ Pentru exemplul din programul următor A, B C.5,.5, iar 7. Se observă că metoda celor mai mici pătrate permite refacerea corectă (cu probabilitate de eroare foarte mică) a semnalului util. % program tefo_l3_ls_elim_pert_semnal_drept % Programul genereaza o realizare de semnal perturbat din care % incearca sa extraga semnalul util. % Valorile parametrilor: B=.5; % coeficientul cosinusului C=.5; % coeficientul sinusului A=; % amplitudinea semnalului util sig=.5; % deviatia standard a zgomotului 9
global x; global es; [x,s]=gen([b C A sig]); u=fminsearch('funmin',[.8.8.8]) Q=(:)'; figure(); clf; subplot(); plot(x); title('semnalul afectat de perturbatii'); axis([ -4 4.]); hold on; plot(b*sin(.*pi*q)+c*cos(.*pi*q)); hold off; subplot(43); plot(transfo(s)); title('semnalul util'); axis([ - ]); subplot(44); plot(transfo(es)); title('semnalul refacut'); axis([ - ]); function [x,semnal]=gen(set) % Aceasta procedura genereaza efectiv semnalul perturbat. Q=(:)'; B=set();C=set();A=set(3);sig=set(4); f=.; pert=b*cos(*pi*f*q)+c*sin(*pi*f*q); zgomot=sig*randn(,); x=pert+zgomot; semnal=sign(rand(3,)-.5); % un semnal cu 3 de valori aleatoare % + sau - for i=:3 for j=:7 index=7*(i-)+j; x(index)=x(index)+a*semnal(i); function[u]=funmin(sett) % Procedura calculeaza functia obiectiv ce urmeaza a fi minimizata: global x;
global es; B=sett();C=sett();A=sett(3); jx=; es=zeros(,3); f=.; for i=:3 for j=:7 index=7*(i-)+j; es(i)=es(i)+x(index)-b*cos(*pi*f*index)- C*sin(*pi*f*index); es(i)=sign(es(i)); for j=:7 index=7*(i-)+j; jx=jx+(x(index)-b*cos(*pi*f*index)-c*sin(*pi*f*index)- es(i)*a)^; u=jx; function[a]=transfo(b) % Procedura auxiliara care transforma un vector de 3 de elemente % intr-unul de prin repetarea de 7 ori a fiecarui element: for i=:3 for j=:7 index=7*(i-)+j; a(index)=b(i); 5. Aplicaţii propuse. Să se realizeze un program Matlab care să determine estimatul pentru coeficienţii A şi B ce determină punctele sn AB n, n,,, N, de pe o dreaptă, ştiind că avem la dispoziţiile variantele perturbate de zgomot aditiv gaussian (cu.5 ) sau uniform (cu 3.5 ), de medie zero, ale acestor puncte. Afişaţi pe aceeaşi figură dreapta iniţială, dreapta estimată şi punctele perturbate. Valori numerice: A 5, B 3, N.. Să se realizeze un program Matlab care să determine estimatul pentru coeficienţii A, B şi C ce determină punctele sn ABnC n, n N, N,,,,,, N, de pe o curbă cuadratică, ştiind că avem la dispoziţiile variantele perturbate de zgomota aditiv gaussian (cu.5 ) sau uniform (cu 3.5 ), de medie zero, ale acestor puncte. Afişaţi pe aceeaşi figură curba iniţială, curba estimată şi punctele perturbate. Valori numerice: A 5, B, C, N 6. 3. Aceleaşi cerinţe ca la aplicaţia, pentru A şi B coeficienţii exponenţialei s n Aexp B n, n,,, N. Se cunosc punctele perturbate de acelaşi tip de zgomot
(cu.5 s n s n. Valori numerice: A 5, B., N 3. 4. Să se realizeze un program Matlab care să determine estimatul pentru valorile A şi A, în cazul când semnalul recepţionat este: x[ n ] A cos( fn ) A sin( fn ) w[ n], n, N, A, A, cu frecvenţa f cunoscută şi wn [ ] zgomot WGN cu medie nulă. Se va considera că raportul semnal-zgomot (SNR) ia valorile:, 5,, 5,, 5 şi 3 db şi se vor genera câte M realizări pentru fiecare valoare a SNR. Se va afişa media şi dispersia fiecăruia din cei doi estimaţi. Valori numerice: A 3, A, f., N, M. Indicație: Folosiți programul tefo_l_mle_a_f_phi.m de la Lucrarea, modificați modelul de semnal și folosiți transformarea parametrilor A şi A în vectorul α. 5. Aceleaşi cerinţe ca la aplicaţia 4, pentru semnalul recepţionat de forma: x[ n ] A A cos( fn ) A A sin( fn ) w[ n], n, N, A A. Valori numerice: A 3, A, f., N, M. Este valabilă aceeași indicație ca la aplicația propusă 4. 6. Pentru modelul de semnal de la aplicația propusă 4, considerând frecvența necunoscută, să realizeze un program Matlab care să determine estimatul pentru valorile A şi A și a frecvenței f. Indicație: Folosiți programul tefo_l_mle_a_f_phi.m de la Lucrarea, modificați modelul de semnal și folosiți metoda transformării parametrilor A şi A în vectorul ) ale dreptei ln α și apoi separarea parametrilor α și f. 7. Pentru modelul de semnal de la aplicația propusă 5, considerând frecvența necunoscută, să realizeze un program Matlab care să determine estimatul pentru valorile A şi A și a frecvenței f. Este valabilă aceeași indicație ca la aplicația propusă 6.