function [DB] = DieboldMariano(Err1,Err2)
% Antoine Devulder 30 octobre 2007
% Si la statistique de Diebold Mariano est positive > 1.96, alors le mod�le
% correspondant aux s�ries d'erreurs entr�es en premier est significativement moins performant.

horizon=size(Err1,2);
taille = size(Err1,1);
nb_var = size(Err1,3);
DB=zeros(nb_var,horizon);

for variable=1:nb_var
for h=1:horizon
Serie1=Err1(:,h,variable);
Serie2=Err2(:,h,variable);
Ecart=Serie1.^2-Serie2.^2;
EcartCentre=Ecart-mean(Ecart)*ones(taille,1);
varcum=EcartCentre'*EcartCentre/taille;
for i=1:floor(4*(taille/100)^(2/9))
Gamma=1/(taille-i)*EcartCentre(1+i:taille)'*EcartCentre(1:taille-i);
varcum=varcum+2*(1-i/horizon)*Gamma;
end
if varcum<0
DB(variable,h)=1000;
else
DB(variable,h)=mean(Ecart)/sqrt(varcum/taille);
end
end
end