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
