TP-statistiques/tp2/exercice_1.m
2023-06-10 21:05:32 +02:00

48 lines
1.4 KiB
Matlab
Executable file

donnees;
n_tests = 500;
% Estimation de la droite de regression par le maximum de vraisemblance :
[a_DYX_1,b_DYX_1] = estimation_1(x_donnees_bruitees,y_donnees_bruitees,n_tests);
% Affichage de la droite de regression estimee par le maximum de vraisemblance :
if abs(a_DYX_1)<1
x_DYX_1 = x_D;
y_DYX_1 = a_DYX_1*x_DYX_1+b_DYX_1;
else
y_DYX_1 = y_D;
x_DYX_1 = (y_DYX_1-b_DYX_1)/a_DYX_1;
end
plot(x_DYX_1,y_DYX_1,'b','LineWidth',3);
axis(bornes);
lg = legend('~Droite', ...
'~Donnees bruitees', ...
'~$D_{YX}$ (maximum de vraisemblance)', ...
'Location','Best');
set(lg,'Interpreter','Latex');
% Calcul et affichage de l'ecart angulaire :
theta_DYX_1 = atan2(b_DYX_1,-a_DYX_1*b_DYX_1);
EA_DYX_1 = abs(theta_DYX_1-theta_D);
fprintf('D_YX (maximum de vraisemblance) : ecart angulaire = %.2f degres\n',EA_DYX_1/pi*180);
function [a_DYX_1,b_DYX_1] = estimation_1(x_donnees_bruitees,y_donnees_bruitees,n_tests)
G = mean( [ x_donnees_bruitees.' y_donnees_bruitees.' ] );
x_centre = x_donnees_bruitees - G(1);
y_centre = y_donnees_bruitees - G(2);
x = repmat(x_centre.', 1, n_tests);
y = repmat(y_centre.', 1, n_tests);
phi = rand(1, n_tests)*pi - pi/2;
dist = ( y - bsxfun(@times, x, tan(phi)) ).^2;
[min_val, min_index] = min( sum( dist ) );
a_DYX_1 = tan(phi(min_index));
b_DYX_1 = G(2) - a_DYX_1*G(1);
end