Critère Akaike

Contents

%Source : http://www.jybaudot.fr/Stats/aic.html

Remise à zero des fenêtres et des variables

close all
clear all

Génération d’une fonction y=f(x) bruitée

n=1000; %Correspond au nombre de points de mesure dans Akaike
x = linspace(0,10,n);
y = sin(x.^3/100).^2 + 0.05*randn(size(x));

Déifinition de l’ordre du polynome maximum

Correspond au nombre de paramètres ajustables

K=30;


Calcul du coefficient d’Akaike et du coefficient « petits nombres »

Ajustement (polyfit) avec un polynome d’ordre i=1:1:K; Interpolation (polyval) sur les données x Calcul des résidus et des de s^2 (mean squared error) Calcul de aic et aicc (petits nombres)

for i=1:K+10
p = polyfit(x,y,i);
ys=polyval(p,x);

residus=y-ys;
s2=sum(residus.^2)/n;

aic(i,1)=i;
aicc(i,1)=i;
aic(i,2)=n*log(s2)+2*i;
aicc(i,2)=aic(i,2)+(2*i*(i+1))/(n-i-1);

end

Calcul de la différence entre les aic/aicc et leur minimum

delta=aic(:,2)-min(aic(:,2));
deltac=aicc(:,2)-min(aicc(:,2));

Tracé du best fit

Oui, on recalcule le polynôme et l’interpolation…

best=find(aic(:,2)==min(aic(:,2)));
p = polyfit(x,y,best);
ys=polyval(p,x);
residus=y-ys;

figure()
subplot(1,2,1)
plot(x,y,'.',x,ys,'k')
subplot(1,2,2)
plot(residus)


figure();
subplot(1,2,1)
plot(aic(:,1),aic(:,2),aicc(:,1),aicc(:,2))
legend('AIC','AICc')
xlabel('Ordre')
ylabel('Score AIC')
subplot(1,2,2)
plot(aic(:,1),delta,aicc(:,1),deltac)
legend('AIC','AICc')
ylabel('Delta AIC')