Vous êtes sur la page 1sur 3

TP Adaptatif 2009 :Modélisation ARMA

algorithme ELS et ODE

1. But du TP
On observe un signal stationnaire du second ordre (yn). Si ce signal est régulier et à spectre
rationnel, il a une unique représentation sous forme d'un modèle ARMA(p,q)
p q
(1) yn= ∑ αiyn-i + ∑βjεn-j + εn avec εn bruit blanc d'innovation de variance σ2
1 1
p q
(2) A (z)=1-∑αiz et B (z)=1+∑βjz-j sont d'inverses stables
* -i *
1 1
Notre but est , sur la base de l'observation (yk)k=1à n , de construire une suite d'estimations
θn du "vrai paramètre" θ*=(α1,...,αp,β1,...,βq)∈Rp+q. Si q=0, on retrouve le cas standard de
la modélisation AR. Le prédicteur adaptatif est représenté par θ=(a1,..,ap,b1 ,...,bq)T.

2. Programmation de l' algorithme ELS


On considère l' algorithme ELS à pas variables µn. On note
ϕn=(yn-1,...,yn-p,en-1,...,en-q)T vecteur d'état
La forme de l' algorithme (extension de RLS au cas non-quadratique) est, en introduisant les
µn-1
facteurs d'oubli λn= (1-µn) et Kn=µn Rn-1 , et en propageant directement les matrices
µn
inverses Kn par le Lemme d'inversion matricielle,

θn=θn-1 +Kn ϕnen


avec en=yn-ϕnTθn-1
vn=Kn-1ϕn σ=(λn+ϕnTvn)-1
1
Kn= (Kn-1 -σvnvnT)
λn

Choix des pas de calcul ou facteurs d'oubli


1
1) µn=n ⇔ λn=1
2) µn=µ ⇔ λn=λ=1-µ ∈]0,1]
1
3) µn ∼n λn=ρλn-1+1-ρ avec par exemple λ0=0.95 et ρ=0.99
Initialisation : On prendra θ0=0, K0=δI , δ=paramètre d'initialisation (de l'ordre de 1 à 10)
Fichiers Matlab fournis
defARMA définition d'un modèle ARMA, à partir des pôles et zéros
crée les variables globales p, q, alpha, beta, sigma, AN,BN
genARMA génération (en variables globales) des données y(1..nmax) et eps(1..nmax)
Programmation MATLAB
Ecrire la fonction [teta,e,mu]=els(p,q,y,δ,λ,ρ)
Résultats retournés: teta= matrice (p+q)xNmax des teta(n)
e =vecteur des erreurs e(n) , mu=vecteur des pas de calcul de
l'algorithme
remarque: on pourra éventuellement faire afficher au cours de 'algo' des résultats
intermédiaires tous les niter itérations de l'algorithme et les comparer à θ*=(α,β).

3. ODE de ELS
L'algorithme "ELS déterministe" à mêmes pas µn que ELS est :

ΟDE−ELS θn=θn-1 + µn Rn-1 h(θn-1) h(θ)=E[enϕn]


Rn=Rn-1 +µn{ Σ(θn-1) - Rn-1} Σ(θ)=E[ϕn ϕnT]

On vous fournit le script Matlab


% ODEels.m F.Michaut modifié 12-Nov-02
% modele arma connu par 'defarma'
% simule ODE du ELS pour modelisation ARMA
% cree la trajectoire ode(:,n) ODE discrete au pas mu, n=1 à nmax

et els22.m (qui calcule et représente la trajectoire de l'ODE pour le contrexemple Ljung.

4. Analyse et tests à réaliser


a-Cas AR (algo RLS): choisissez un modèle AR2 à 2 pöles complexes conjugués. Comparez
le RLS et son ODE, pour le pas constant 2). Examinez l'effet sur la durée transitoire et sur
l'EQMR du choix de λ, et du conditionnement de R.
b-Cas de la modélisation ARMA: test de stabilité, convergence et vitesse de ELS
Ex1: Modèle MA pur: p=0, q=2, avec 2 zéros reiθ ,re-iθ plus ou moins proches du cercle unité
Ex2: Testez l'exemple ARMA(2,2) suivant: alpha=(-0.9,-0.95) et beta=(1.5, 0.75). Il s'agit
d'un exemple où la condition SPR n'est pas vérifiée: comparer les convergences ou pas de
ELS en phase transitoire (initialisation à 0) puis en phase stationnaire (initialisation à θ* et à
une matrice inverse faible K0=0.01xId).
Propriétés à tester:
- vitesse de convergence et fluctuation asymptotique selon les stratégies de choix du pas de
calcul (cas λ=1, cas λ fixe<1, cas 3 avec λ0=0.95 et différentes valeurs du coefficients
exponentiel ρ 0.99, 0.995 ...)
- de l'éventualité de non-convergence du ELS si la condition SPR est en défaut : dans EX2,
examinez le ELS et son ODE en partant de l'optimum θ*.
Annexe: Calcul par Matlab du Contrexemple Ljung
Fichier LjungELS.m (fourni)

% LjungELS.m F.Michaut 20-Nov-99


% Article Ljung "Counterexample.." ARMA22
% yn=C(z)/A(z) en (en=bbu), ytilde=1/A(z) yn, etilde=1/C(z) en

%----le modèle ARMA C(z)/A(z)


A=[1 0.9 0.95]
C=[1 1.5 0.75]
poles=roots(A)
b=poles(1);
%-----Calcul des auto et intercorrélations----%
cy=corarma(A,C,1)
[cye,p1]=icorarma(A,C,1,1);
[cyyt,p2]=icorarma(A,C,A,1);
[cyet,p3]=icorarma(A,C,C,1);
[ceet,p4]=icorarma(1,1,C,1);
[ceyt,p5]=icorarma(1,1,A,1);
%-----Construction matrices H0 et G0---------%
i0=p2+1; H1=[cyyt(i0),cyyt(i0+1);cyyt(i0-1),cyyt(i0)];
i0=p3+1; H2=[cyet(i0),cyet(i0+1);cyet(i0-1),cyet(i0)];
i0=p5+1; H3=[ceyt(i0),ceyt(i0+1);ceyt(i0-1),ceyt(i0)];
i0=p4+1; H4=[ceet(i0),ceet(i0+1);ceet(i0-1),ceet(i0)];
H0=[-H1,H2; H3,-H4]
traceH0=trace(H0)
vpH0=eig(H0)

i0=1; G1=[cy(i0),cy(i0+1);cy(i0+1),cy(i0)];
i0=p1+1; G2=[cye(i0),cye(i0+1);cye(i0-1),cye(i0)];
G0=[G1,-G2; -G2',eye(2)]

D=inv(G0)*H0
traceD=trace(D)
vpD=eig(D)
%----------Condition SPR en défaut------------------%
nu=0:1/200:0.5; vv=real(1./polyval(C,exp(2*i*pi*nu)) -1/2);
plot(nu,vv,'r');title('Condition SPR en défaut')